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 に記述

<?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

sts_jndi03

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>

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

実行してみる。

sts_jndi04

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

 

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

Follow me!

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

  1. pppiroto (Hiroto YAGI) より:

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

コメントを残す

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