Melhor método para inicializar DataSource

Olá.

Minha dúvida é simples. Eu estou fazendo uma classe Connection Factory. Essa classe deve inicializar os dataSources (c3p0). Além disse ter um método estático getConnection. Até aí tudo bem. O problema é que ao configurar o ComboPooledDataSource o método setDriverClass pode lançar uma exceção.

Eu tô confuso qual é a melhor solução pra lidar com isso:

Eu exerguei as seguintes soluções

  1. Inicialização estática:
private static ComboPooledDataSource dataSource = inicializaDataSource();
private static ComboPooledDataSource inicializaDataSource{
   ComboPooledDataSource dataSource = new ComboPooledDataSource();
   //inicializa o dataSource aqui, trata a exeção aqui mesmo e retorna dataSource null em caso de erro
   return dataSource;
}
  1. Objeto para Data Source: Criar uma classe para o data source e no construtor dessa classe criar e configurar o datasource e retornar esse objeto pra classe Factory.

  2. Singleton

Detalhe, a aplicação é standAlone (não roda em cima de nenhum servidor).