2011-09-12 12 views
1

xsbt v.0.10.1、webプラグイン、v2.4-M4、Scala 2.9.1、Jetty 8.0.0.v20110901を使用します。 Boot.scalaでEclipse Jetty v8.0スカラリフトアプリケーションではJNDIデータソースが利用できません

私は、このようなコードを追加します。

DefaultConnectionIdentifier.jndiName = "jdbc/db" 
logger.warn("JNDI connection availbale ? " + DB.jndiJdbcConnAvailable_?) 

と私は見桟橋ログに:

08:39:06.562 [Scanner-0] WARN bootstrap.liftweb.Boot - JNDI connection availbale ? false 

私はのweb.xml V2.5を使用します。

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 

    <filter> 
     <filter-name>LiftFilter</filter-name> 
     <display-name>Lift Filter</display-name> 
     <description>The Filter that intercepts lift calls</description> 
     <filter-class>net.liftweb.http.LiftFilter</filter-class> 
    </filter> 

    <resource-ref> 
     <description>My DataSource Reference</description> 
     <res-ref-name>jdbc/db</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <res-auth>Container</res-auth> 
    </resource-ref> 

    <filter-mapping> 
     <filter-name>LiftFilter</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

</web-app> 

私のアプリケーション用の私のcontext.xml:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"> 

<!-- ================================================================== 
Configure and deploy the test web application in $(jetty.home)/webapps/test 

Note. If this file did not exist or used a context path other that /test 
then the default configuration of jetty.xml would discover the test 
webapplication with a WebAppDeployer. By specifying a context in this 
directory, additional configuration may be specified and hot deployments 
detected. 
===================================================================== --> 

<Configure class="org.eclipse.jetty.webapp.WebAppContext"> 
    <Array id="plusConfig" type="java.lang.String"> 
    <Item>org.eclipse.jetty.webapp.WebInfConfiguration</Item> 
    <Item>org.eclipse.jetty.webapp.WebXmlConfiguration</Item> 
    <Item>org.eclipse.jetty.webapp.MetaInfConfiguration</Item> 
    <Item>org.eclipse.jetty.webapp.FragmentConfiguration</Item> 
    <Item>org.eclipse.jetty.plus.webapp.EnvConfiguration</Item> <!-- add --> 
    <Item>org.eclipse.jetty.plus.webapp.PlusConfiguration</Item> <!-- add --> 
    <Item>org.eclipse.jetty.webapp.JettyWebXmlConfiguration</Item> 
    <Item>org.eclipse.jetty.webapp.TagLibConfiguration</Item> 
    </Array> 

    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> 
    <!-- Required minimal context configuration :      --> 
    <!-- + contextPath             --> 
    <!-- + war OR resourceBase           --> 
    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> 
    <Set name="contextPath">/</Set> 
    <Set name="war"><SystemProperty name="jetty.home" default="."/>/test.war</Set> 
    <Set name="configurationClasses"><Ref id="plusConfig"/></Set> 

    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> 
    <!-- Optional context configuration         --> 
    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> 
    <Set name="extractWAR">true</Set> 
    <Set name="copyWebDir">false</Set> 


    <New id="ds" class="org.eclipse.jetty.plus.jndi.Resource"> 
    <Arg></Arg> 
    <Arg>jdbc/db</Arg> 
    <Arg> 
    <New class="com.jolbox.bonecp.BoneCPDataSource"> 
       <Set name="driverClass">org.h2.Driver</Set> 
       <Set name="jdbcUrl">jdbc:h2:~/test</Set> 
       <Set name="username">sa</Set> 
       <Set name="password">sa</Set> 
    </New> 
    </Arg> 
    </New> 

</Configure> 

私はチェックJNDIの可用性とシンプルなJavaアプリケーションを試して、それは動作しますが、sbtに問題があるようです。

誰かがすでにこのような問題を抱えていたのでしょうか?

ありがとうございました。

答えて

1

これはBoot.scalaの初めにリフトV2.4-M4

のバグこれです:

DefaultConnectionIdentifier.jndiName = "jdbc/db" 
logger.warn("JNDI connection available (manyally) ? " + (((new InitialContext).lookup("java:/comp/env/jdbc/db").asInstanceOf[DataSource]) != null)) 
logger.warn("JNDI connection available (lift) ? " + DB.jndiJdbcConnAvailable_?) 

プリント:私はのConnectionManagerを実装する一時回避策として

16:43:52.937 [main] WARN bootstrap.liftweb.Boot - JNDI connection available (manyally) ? true 
16:43:53.015 [main] WARN bootstrap.liftweb.Boot - JNDI connection available (lift) ? false 

DB.defineConnectionManagerに追加します。

関連する問題