JNDI リソース経由で tomcat 接続プールを使用しています。
でcontext.xml
:
<Resource name="jdbc/mydb" auth="Container" type="javax.sql.DataSource"
username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
maxActive="1000" maxIdle="100" maxWait="10000"
url="jdbc:mysql://localhost:3306/mydatabase"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" />
でweb.xml
:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mydb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
データベース接続が必要な Java クラスから、次のルックアップを行います。
Context initContext = new InitialContext();
DataSource ds = (DataSource)initContext.lookup("java:/comp/env/jdbc/mydb");
私の最初の疑問は DataSource 型です。javax.sql.DataSource
またはを使用しても同じorg.apache.tomcat.jdbc.pool.DataSource
ですか?
さらに、「接続が多すぎます」というエラーが表示されることがあります。これに関する多くのスタックオーバーフローの質問/回答を読みましたが、問題がどこにあるのか理解できません。
私はTomcatのドキュメントに従っており、結果セット、ステートメント、および接続を適切に閉じています。
編集
私のTomcatのバージョンは7.0.26です。したがって、バグがあるはずです(informatik01ユーザーが提案したリンクを参照してください)