現在、私は接続プーリングを処理するために別のDBConnectionManagerクラスを使用していますが、doGet()メソッドを呼び出すたびにサーブレットが同じプールを呼び出さなかったため、は発表された。サーブレットのJDBC接続プーリング
- 誰かが私に上記の理由を説明することはできますか?
- JNDIは適切な接続プーリングのためにTomcatを使用してJavaサーブレットに行く方法ですか?
2つの記事へのリンクがありますが、これはサーブレットとの接続プーリングを実装する正しい方法ですか?
http://www.javaranch.com/journal/200601/JDBCConnectionPooling.html
http://onjava.com/onjava/2006/04/19/database-connection-pooling-with-tomcat.html
そうのような文脈でのDBマネージャオブジェクトを保存することが可能です:。
mtdb = (MTDbManager) context.getAttribute("MTDBMANAGER");
if (mtdb == null) {
System.out
.println("MTDbManager is null, reinitialize MTDbManager");
initMTDB(config);
context.setAttribute("MTDBMANAGER", mtdb);
}
そして私は(mtdb.getInstanceを呼び出す)のgetConnection()とこのオブジェクトを常に参照します。
ありがとうございました。
ちょうど別の質問を、JNDIは、適切な接続プーリングをするのでしょうか?つまり、最大接続数を5に設定すると、6番目のリクエストが入り、JNDIは接続を再試行する前に待機タイムアウトを行います。 – Maurice
JNDI自体はプーリングを行わないため、['javax.sql.DataSource'](http://docs.oracle.com/javase/6/docs/api/javax/sql/DataSource.html)オブジェクトを検索します。接続が必要なときに呼び出す 'getConnection()'メソッドを提供します。使用可能な接続がない場合、 'getConnection()'の呼び出しはブロックされます。 N.B.接続が必要になるたびにJNDIデータソースをルックアップする必要はありませんが、データソースへの参照をキャッシュするのはかなり一般的な方法です。希望が役立ちます。 – beny23