一意のデータソース(および接続とdbMainConnection)を静的に保存しています クラスの変数。誰かがデータソースを要求するたびに、前のデータソースを新しいデータソースに置き換えます。 JNDIからデータソースを取得しているときに例外が発生した場合、静的データソースはそのまま残ります。静的変数には何も格納しないでください。 dbMainConnectionクラスはデータベースの名前で構築されており、データベース名がいくつかあるため、シングルトンにするのは意味がありません。
次のコードを使用してデータソースにアクセスするだけです。
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);
}
}
}
そして、発信者がデータソースから接続を取得し、使用が終了したらそれを閉じるようにします。