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");
たぶん他にも色々方法はあると思うけど、とりあえず上手く行った一例としてメモしておくことにします。