2008年9月22日月曜日

コネクションプーリングを用いたDBアクセス

環境














言語java1.6
アプリケーションサーバTomcat5.5
DBmysql5.1.6
OSWindows XP


①JDBCドライバを
   Tomcatインストールディレクトリ\Tomcat 5.5\common\lib
に配置する。
今回は
  mysql-connector-java-5.1.6-bin.jar
を用いる。


***
当初、eclipseのWEB-INF/libに、このドライバをコピーするだけでドライバをロードできると思っていたが、それでは以下のような例外が発生して、ロードできない。

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'


②以下の3つのファイルに設定を加える。
(i)WEB-INF/web.xml
<resource-ref>
<res-ref-name>jdbc/projectDB<res-ref-name>
<res-type>javax.sql.DataSource<res-type>
<res-auth>Container<res-auth>
<res-sharing-scope>Shareable<res-sharing-scope>
</resource-ref>

(ii)META-INF/context.xml
<Context docBase="projectPass" path="/projectPass">
<ResourceLink global="jdbc/projectDB" name="jdbc/projectDB"
type="javax.sql.DataSource" />
<Context>


***ここで、nameの値はWEB-INF/web.xmlのres-ref-nameと一致させる。また、globalもjdbc/projectDBにする。もしも、globalをprojectDBだけにしたら、以下の例外が発生する。

javax.naming.NameNotFoundException: 名前 projectDB はこのコンテキストにバインドされていません


(iii)tomcatのconfig/server.xml
<Resource auth="Container"
driverClassName="com.mysql.jdbc.Driver" name="jdbc/projectDB"
password="DBパスワード" type="javax.sql.DataSource"
url="jdbc:mysql://localhost/projectPass" username="DBユーザー名" />


***今回の場合、urlにはポート番号を加えたりしない。つまり以下のようにしたりしない。
url="jdbc:mysql://localhost:3306/projectPass"



---------------------------------------------------------------------
最後に。何か間違っていることをしていたら、コンソールにエラーメッセージが出力されるから基本的にそれを見て対処すること。また、最終的に戻るべきところはmysqlやtomcat、java APIなどのドキュメント。

0 件のコメント: