如何从Lift设置到IBM i DB / 400数据库的jetty JNDI数据源连接

时间:2013-12-15 09:14:55

标签: jetty lift db2-400

我正在努力完成Gilberto T. Garcia Jr的Lift应用程序开发手册,并遇到了一个我似乎无法解决的问题。我已经复制了源代码Chap06-map-table,我正在尝试修改它以使用我的IBM i(iSeries,AS / 400,i5)数据库。我能够使用Squeryl Record使其与第一种连接一起工作。但是,我似乎无法想象如何使用JNDI数据源使其工作。我花了几天的时间在互联网上搜索设置它的例子,并没有找到一个涉及DB / 400数据库连接的好例子。下面是我尝试启动容器时遇到的错误以及我为了使其工作而修改的代码。 任何帮助,将不胜感激。谢谢。鲍勃

这是错误:

> container:start
[info] jetty-8.0.4.v20111024
[warn] Config error at <New id="dsliftbook" class="org.eclipse.jetty.plus.jndi.R
esource"><Arg/><Arg>jdbc/dsliftbook</Arg><Arg>
[warn]       <New class="class com.ibm.as400.access.AS400JDBCConnectionPoolDataS
ource"><Set name="Url">"jdbc:as400://www.server.com/play2test;naming=system;erro
rs=full"</Set><Set name="User">user</Set><Set name="Password">password</Set></New>
[warn]    </Arg></New>java.lang.ClassNotFoundException: class com.ibm.as400.acce
ss.AS400JDBCConnectionPoolDataSource
[warn] Failed startup of context o.e.j.w.WebAppContext{/,[file:/C:/Users/user/Lif
t26Projects/scala_210/chap06-map-table/src/main/webapp/]}
[info] Started SelectChannelConnector@0.0.0.0:8080 STARTING
[success] Total time: 0 s, completed Dec 15, 2013 12:21:59 AM
>

这是修改后的jetty-env-xml文件:

<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty  
/configure.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<New id="dsliftbook" class="org.eclipse.jetty.plus.jndi.Resource">
 <Arg></Arg>
 <Arg>jdbc/dsliftbook</Arg>
 <Arg>
  <New class="class com.ibm.as400.access.AS400JDBCConnectionPoolDataSource">
     <Set name="Url">"jdbc:as400://www.server.com/play2test;naming=system;errors=full"
    </Set>
     <Set name="User">user</Set>
     <Set name="Password">password</Set>
   </New>
</Arg>
</New>
</Configure>

这是修改后的build.sbt文件:

libraryDependencies ++= {
  val liftVersion = "2.5"
  Seq(
"net.liftweb"       %% "lift-webkit"        % liftVersion        % "compile",
"net.liftmodules"   %% "lift-jquery-module_2.5" % "2.3",
"org.eclipse.jetty"     % "jetty-webapp"       % "8.0.4.v20111024"  % "container",
"org.eclipse.jetty"     % "jetty-plus"         % "8.0.4.v20111024"  % "container",
"ch.qos.logback"    % "logback-classic"     % "1.0.6",
"org.specs2"        %% "specs2"             % "1.14"           % "test",
"net.liftweb"       %% "lift-squeryl-record" % liftVersion % "compile",
"net.sf.jt400"    % "jt400"       % "6.7",
  "org.liquibase"    %  "liquibase-maven-plugin" % "3.0.2"
  )
}

1 个答案:

答案 0 :(得分:2)

定义资源时,属性class="class com.ibm.as400.access.AS400JDBCConnectionPoolDataSource"不正确。您不需要在单词class前加上完全限定的类名。它应该是class="com.ibm.as400.access.AS400JDBCConnectionPoolDataSource"。解决这个问题,只要包含com.ibm.as400.access.AS400JDBCConnectionPoolDataSource的jar在类路径上(由jt400提供吗?)你应该没问题。