Data Source e SIngleton

Dai Pessoal, criei esta classe para controlar minhas conexoes, so que nao sei se é correto utilizar o padrao singleton com data source?

Gostaria de saber a opiniao de vc ? valeu

public final class FactoryConnection {

	private static FactoryConnection _instance;
	private static DataSource dataSource = null;

	private FactoryConnection() throws NamingException {
		Context context = null;
		try {
			context = (Context) new InitialContext().lookup("java:/comp/env");
			dataSource = (DataSource) context.lookup("nomeConfigurado");
		} catch (NamingException e) {
			throw e;
		}
	}

	public final Connection getConnection() throws SQLException {
		try {
                       // e se ocorrer um erro aqui, preciso avaliar o objeto dataSource ?
			return dataSource.getConnection();
		} catch (SQLException e) {
			throw e;
		}
	}

	public synchronized static final FactoryConnection getInstance()
			throws Exception {
		if (_instance == null) {
			try {
				_instance = new FactoryConnection();
			} catch (NamingException e) {
				throw new Exception(e);
			}
		}
		return _instance;
	}
}

ate

Eu usava muitos singletons aqui no trabalho mas fui abandonando esse costumo quando adotamos os testes unitários. Sinceramente? Singletons são um porre para testar! Coisas que você nem se preocuparia em um teste normal acaba impactando em testes subsequentes, voce precisa implementar metodos de reset no Singleton… Não vale a pena!
Além do mais, já trabalhei com alguns servidores de aplicação que, quando ocorria um erro no SGBD, simplesmente não conseguiam se recuperar do erro. Então persistir seu DataSource durante todo o ciclo de vida da aplicação pode ser um problema, principalmente quando voce pode alterar o pool de conexões sem reiniciar o servidor. Ai seu DS continuaria com a configuração antiga e voce precisaria fazer um redeploy da sua aplicação…