mvn-jetty-pluginでJNDI
mvn-jetty-pluginでJNDIリソースを使うには、次のdependencyをpom.xmlに追加します。これでjettyでJNDIが使えるようになります。
<dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-plus</artifactId> <version>[6.1.6,)</version> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-naming</artifactId> <version>[6.1.6,)</version> </dependency>
JNDIリソースの追加は、WEB-INF/jetty-env.xmlで行います。
こちらは、MySQLのデータソースを"jdbc/sample"という名前でJNDIリソースを設定する場合のjetty-env.xmlの例です。詳しくはこちらのドキュメントを。
<?xml version="1.0"?> <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> <Configure class="org.mortbay.jetty.webapp.WebAppContext"> <New id="dataSource" class="org.mortbay.jetty.plus.naming.Resource"> <Arg></Arg> <Arg>jdbc/sample</Arg> <Arg> <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"> <Set name="Url">jdbc:mysql://localhost:3306/sample</Set> <Set name="User">user</Set> <Set name="Password">password</Set> </New> </Arg> </New> </Configure>
上の設定ではMySQLのドライバが必要なので、pom.xmlに次の設定を追加して、MySQLのドライバを使えるようにしておきます。
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.0.4</version> </dependency>
ここまでが、サーブレットコンテナ側の設定です。
ここからは、Webアプリ側の設定です。
web.xmlに次の設定を追加し、コンテナ側で用意したJNDIリソースをWebアプリから使えるようにします。
<resource-ref> <res-ref-name>jdbc/sample</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
最後に、DefaultConnectionIdentifier.jndiNameを設定して、LiftにJNDIリソースの名前を教えます。これで、LiftからJNDIデータソースを使えるようになります。
・ ・ ・ class Boot { def boot { DefaultConnectionIdentifier.jndiName = "jdbc/sample" if (!DB.jndiJdbcConnAvailable_?) { DB.defineConnectionManager(DefaultConnectionIdentifier, DBVendor) ・ ・ ・