JNDI接続設定@Tomcat5.5/Spring2.x/PostgreSQL8.x
Tomcat5.5.xx環境化にて、SpringFramework(2.x.x)を使う際にデータソースをJNDI経由で取得、利用する際のメモ。
- PostgreSQLでDB接続出来る環境を用意。
- プログラム単体で接続テストを行い、繋がるかどうか確認。
- Tomcatプロジェクトを作成、その際のプロパティ→[Tomcat]→[全般]→[コンテキストの更新を可能にする…]チェックは外した状態で。
- web.xmlに以下の設定を追加。(jdbc/testdbは仮の名称。適宜置換)
jdbc/testdb javax.sql.DataSource Container
<?xml version="1.0" encoding="UTF-8"?> <Context path="/(アプリケーション名)" reloadable="true" docBase="C:/eclipse3.3/workspace/(作成プロジェクト名)" workDir="C:/eclipse3.3/workspace/(作成プロジェクト名)/work"> <Resource auth="Container" name="jdbc/testdb" type="javax.sql.DataSource" driverClassName="org.postgresql.Driver" password="(パスワード)" maxIdle="1" maxWait="10" username="(ユーザ名)" url="(設定した接続URL)" maxActive="10" /> </Context>
- Springframeworkのライブラリ他各種をプロジェクトに導入。
- (作成したTomcatプロジェクト)/WEB-INF/配下にspring用の設定ファイル作成。ここではapplicationContext.xmlとした。
- applicationContext.xmlに以下の設定を追加。valueタグ内の値は最初「jdbc/testdb」としていたんだけど、エラーが出るので「java:comp/env/」を付加したら上手く動いたっぽい。
<!-- DataSource設定 -->java:comp/env/jdbc/testdb
- dataSourceを利用するクラスの設定をapplicationContext.xmlに追加。ここでの利用クラスとは、getDataSource()メソッドを持つクラス(JdbcDaoSupportとか)となる。
- 更にStrutsのActionクラス等から上記作成クラスを利用する場合。
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext( this.getServlet().getServletContext()); XXXXXService service = (XXXXXService)wac.getBean("mstSmplDao");
たぶん他にも色々方法はあると思うけど、とりあえず上手く行った一例としてメモしておくことにします。