Ukládáte jedinečný zdroj dat (a připojení a dbMainConnection) ve statickém proměnná vaší třídy. Pokaždé, když někdo požádá o zdroj dat, nahradíte předchozí zdroj novým. Pokud dojde k výjimce při získávání zdroje dat z JNDI, statický zdroj dat zůstane tak, jak je. Do statické proměnné byste neměli nic ukládat. Vzhledem k tomu, že vaše třída dbMainConnection je vytvořena s názvem databáze a existuje několik názvů databází, nemá smysl z ní dělat singleton.
Pro přístup ke zdroji dat použijte následující kód:
public final class DataSourceUtil {
/**
* Private constructor to prevent unnecessary instantiations
*/
private DataSourceUtil() {
}
public static DataSource getDataSource(String name) {
try {
Context ctx = new InitialContext();
String database = "jdbc/" + name;
return (javax.sql.DataSource) ctx.lookup (database);
}
catch (NamingException e) {
throw new IllegalStateException("Error accessing JNDI and getting the database named " + name);
}
}
}
A umožnit volajícím získat připojení ze zdroje dat a uzavřít jej, až jej dokončí.