Tomcatサーバー上でJava Webアプリケーションを使用していますが、TomcatのJNDIからデータベース接続にアクセスする際の「ベストプラクティス」は何ですか?Tomcat内のJNDIデータソースを適切に呼び出す方法
現在、これは私がデータベースにアクセスする必要があるたびにやって何を基本的には次のとおりです。
Context envContext = null;
DataSource dataSource = null;
try {
envContext = (Context)ctx.lookup("java:/comp/env");
dataSource = (DataSource)envContext.lookup("jdbc/datasource");
return dataSource.getConnection();
} catch (Exception e){
e.printStackTrace();
return null;
}finally {
if(envContext != null){
try{
envContext.close();
} catch (NamingException e){
e.printStackTrace();
}
}
}
しかし、これは私がデータベースにアクセスするたびに、JNDIから接続を検索する適切な方法であります?代わりにContextまたはDatasourceへの参照を保持する必要がありますか?
私が探していた答えとまったく同じです、ありがとうございました。もう1つの質問ですが、データアクセスを行うたびに新しいContextを作成する際のオーバーヘッドはありますか? – Avanst
相対的に言えば - 私はそう信じていません。しかし、それをbechmarkedし、毎回Contextを作成しただけでは、データソースをキャッシュしているだけであれば、違いがあると思うでしょう。しかし、実質的に言えば、データソース(またはコンテキスト)を取得する回数は、リクエストを処理する残りのアクティビティと比較して最小限です。 –
JNDIルックアップは高価ではありません。すべてのアプリケーションコンテナで 'InitialContext'ルックアップは**非常に高価です**。アプリケーションの起動時に一度だけ行う必要があります。ほとんどの人は違いを知らない。 –