Spring Tool Suite で Spring MVC から tc Server の JNDI 経由でJDBCを利用する
Spring MVC から、JDBCを試した が、次は、JDBC を JNDI から取得してみる。
tc Server の設定を触るので、新規にインスタンスを作成する。
Servers ビューから、コンテキストメニュー New – Server あとは、ウィザードに従い、適当に名前などを設定。
設定ファイルを編集する
例えば、C:\springsource\vfabric-tc-server-developer-2.5.0.RELEASE\ フォルダ以下に、作成した、tc Server インスタンス名のフォルダができあがるので、\conf フォルダの中の、context.xml を編集する
server.xml や、Catalina\localhost\{アプリケーション名}.xml を編集しても、起動のたびに上書きされて消えてしまうので、context.xml に記述
<?xml version="1.0" encoding="UTF-8"?> <Context docBase="C:\springsource\vfabric-tc-server-developer-2.5.0.RELEASE\tc_server_1\wtpwebapps\mvctest" path="/mvctest" reloadable="true" source="org.eclipse.jst.jee.server:mvctest"> <Resource name="jdbc/db2" auth="Container" type="javax.sql.DataSource" driverClassName="com.ibm.db2.jcc.DB2Driver" url="jdbc:db2://192.168.10.77:50000/sample" username="db2inst1" password="xxxxx" maxActive="20" maxIdle="10" maxWait="-1"/> </Context>
JDBC を置く
tc Server インスタンス名のフォルダ 以下の、 lib フォルダに、JDBC を置いておく
C:\springsource\vfabric-tc-server-developer-2.5.0.RELEASE\tc_server_1\lib
Spring JDBC への参照設定
こちらを参照して、pom.xml に追記。 JDBC は、コンテナから、JNDI で取得するので、pom.xml に追記用。
エンティティクラスの実装、DAOクラスの作成
こちらを参照して、コードを実装。
依存性の注入
このときは、DataSource を Bean としてアプリケーション内で定義していたが、今回は、JNDI から ルックアップ。root-context.xml に以下を追記。 参考
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jdbc/db2"/> <property name="lookupOnStartup" value="false"/> <property name="cache" value="true"/> <property name="proxyInterface" value="javax.sql.DataSource"/> </bean>
あとは、基本的に、こちらと同じ。
実行してみる。
同じ結果が得られました。めでたし、めでたし。
マスタリングJava EE 5 第2版欲しいな-
context.xml に書いた内容も消されてしまう。。。
どうすれば良いのやら。