Anda menyimpan sumber data unik (dan koneksi, dan dbMainConnection) di statis variabel kelas Anda. Setiap kali seseorang meminta sumber data, Anda mengganti yang sebelumnya dengan yang baru. Jika pengecualian terjadi saat mendapatkan sumber data dari JNDI, sumber data statis tetap seperti apa adanya. Anda tidak boleh menyimpan apa pun dalam variabel statis. Karena kelas dbMainConnection Anda dibuat dengan nama database, dan ada beberapa nama database, tidak masuk akal untuk membuatnya menjadi satu.
Cukup gunakan kode berikut untuk mengakses sumber data:
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);
}
}
}
Dan biarkan penelepon mendapatkan koneksi dari sumber data dan menutupnya setelah mereka selesai menggunakannya.