thisなどの評判の高いユーザーからの回答を見ると、単一の接続要求ごとにJNDIネーミングサービスを照会して新しいDataSourceオブジェクトを取得するのが適切なようです。例えば。 (より簡潔にするためにリンクの答えから適応)は、次のようなコードで:すべての接続でJNDIから新しいデータソースを取得する必要がありますか?
public class ConnectionManager{
public static Connection getConnection() throws NamingException {
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource dataSource = (DataSource)envContext.lookup("jdbc/test");
return dataSource.getConnection();
}
}
は、実際に提案/慣用的な方法このですか?私自身の "ConnectionManager" utiltyクラスの中には、DataSourceオブジェクトへの参照をインスタンス変数として保持するために使用したものがありました。何も間違っては、JBossの管理者が無効にする場合を除いて、それから出てきていないと、管理コンソールから接続プールを有効にして、私のコードは次のようなエラーを得ていた。
java.sql.SQLException: javax.resource.ResourceException: IJ000451: The connection manager is shutdown
だから、周りに保つためにアンチパターンでありますJDBCのDataSourceオブジェクトのインスタンス?