Spring Tool Suite で Spring MVC から tc Server の JNDI 経由でJDBCを利用する

Spring MVC から、JDBCを試した が、次は、JDBC を JNDI から取得してみる。

tc Server の設定を触るので、新規にインスタンスを作成する。

sts_jndi01

Servers ビューから、コンテキストメニュー New – Server あとは、ウィザードに従い、適当に名前などを設定。

設定ファイルを編集する

例えば、C:\springsource\vfabric-tc-server-developer-2.5.0.RELEASE\ フォルダ以下に、作成した、tc Server インスタンス名のフォルダができあがるので、\conf フォルダの中の、context.xml を編集する

sts_jndi02

server.xml や、Catalina\localhost\{アプリケーション名}.xml を編集しても、起動のたびに上書きされて消えてしまうので、context.xml に記述

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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">
  3.  
  4. <Resource name="jdbc/db2" auth="Container"
  5. type="javax.sql.DataSource"
  6. driverClassName="com.ibm.db2.jcc.DB2Driver"
  7. url="jdbc:db2://192.168.10.77:50000/sample"
  8. username="db2inst1"
  9. password="xxxxx"
  10. maxActive="20" maxIdle="10"
  11. maxWait="-1"/>
  12.  
  13. </Context>

JDBC を置く

tc Server インスタンス名のフォルダ 以下の、 lib フォルダに、JDBC を置いておく

  1. C:\springsource\vfabric-tc-server-developer-2.5.0.RELEASE\tc_server_1\lib

sts_jndi03

Spring JDBC への参照設定

こちらを参照して、pom.xml に追記。 JDBC は、コンテナから、JNDI で取得するので、pom.xml に追記用。

エンティティクラスの実装、DAOクラスの作成

こちらを参照して、コードを実装。

依存性の注入

このときは、DataSource を Bean としてアプリケーション内で定義していたが、今回は、JNDI から ルックアップ。root-context.xml に以下を追記。 参考

  1. <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
  2. <property name="jndiName" value="java:comp/env/jdbc/db2"/>
  3. <property name="lookupOnStartup" value="false"/>
  4. <property name="cache" value="true"/>
  5. <property name="proxyInterface" value="javax.sql.DataSource"/>
  6. </bean>

あとは、基本的に、こちらと同じ。

実行してみる。

sts_jndi04

同じ結果が得られました。めでたし、めでたし。

 

マスタリングJava EE 5 第2版欲しいな-

Follow me!

Spring Tool Suite で Spring MVC から tc Server の JNDI 経由でJDBCを利用する” に対して1件のコメントがあります。

  1. pppiroto (Hiroto YAGI) より:

    context.xml に書いた内容も消されてしまう。。。
    どうすれば良いのやら。

pppiroto (Hiroto YAGI) へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です