我使用xsbt v.0.10.1,网页插件,电梯v2.4-M4,Scala 2.9.1,Jetty 8.0.0.v20110901。
在Boot.scala中我添加了这样的代码:
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中存在问题。
也许某人已经有这样的问题?
感谢。
答案 0 :(得分:1)
这是Lift v2.4-M4
的错误这是在Boot.scala的开头:
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_?)
打印:
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
作为临时解决方法,我实现了ConnectionManager并添加到DB.defineConnectionManager。