U slaat een unieke gegevensbron (en verbinding en dbMainConnection) op in een statische variabele van je klas. Elke keer dat iemand om een databron vraagt, vervang je de vorige door de nieuwe. Als er een uitzondering optreedt tijdens het ophalen van een gegevensbron van JNDI, blijft de statische gegevensbron zoals deze is. U moet niets opslaan in een statische variabele. Aangezien uw klasse dbMainConnection is opgebouwd met de naam van een database en er verschillende databasenamen zijn, heeft het geen zin om er een singleton van te maken.
Gebruik gewoon de volgende code om toegang te krijgen tot de gegevensbron:
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);
}
}
}
En laat de bellers een verbinding krijgen van de gegevensbron en deze sluiten wanneer ze klaar zijn met het gebruik ervan.