2013-12-15 4 views
0

Я прокладываю себе путь через Поваренную книгу по разработке приложений для лифтов от Gilberto T. Garcia Jr и столкнулся с проблемой, которую я не могу как представляется, решить. Я скопировал исходный код Chap06-map-table, и я пытаюсь изменить его для работы с моей базой данных IBM i (iSeries, AS/400, i5). Мне удалось заставить его работать с первым типом подключения, используя Squeryl Record. Тем не менее, я не могу представить, как это можно использовать с использованием источника данных JNDI. Я потратил пару дней на поиск в Интернете примеров настройки и не нашел хорошего примера, связанного с подключением базы данных DB/400. Ниже приведена ошибка, которую я получаю, когда пытаюсь запустить контейнер и код, который я модифицировал, чтобы заставить его работать. Любая помощь будет оценена по достоинству. Благодарю. БобКак настроить подключение JNDI Datasource к базе данных IBM i DB/400 от Lift

Это ошибка:

> 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 [email protected]:8080 STARTING 
[success] Total time: 0 s, completed Dec 15, 2013 12:21:59 AM 
> 

Это модифицированный файл Пристань-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" 
) 
} 

ответ

2

При определении ресурса атрибут class="class com.ibm.as400.access.AS400JDBCConnectionPoolDataSource" неверен. Вам не нужно вводить полное имя класса со словом class. Он должен читать class="com.ibm.as400.access.AS400JDBCConnectionPoolDataSource". Исправьте это и до тех пор, пока баннер, содержащий com.ibm.as400.access.AS400JDBCConnectionPoolDataSource, находится в пути к классам (предоставляется ли jt400?), Вы должны быть в порядке.

+0

Я удалил дополнительный «класс» и изменил на , на и < Задайте имя = «Пароль»><Установить имя = «пароль»>. Теперь я получаю подсказку для пользователя и пароля (хотя я думаю, что я их поставляю), но теперь получаю новую ошибку, что он не может установить соединение. Итак, я изучаю это. Ваша заявка может не работать должным образом java.sql.SQLException: реквестер приложений не может установить соединение . («jdbc: as400: // server; ...» com.ibm.as400.access.JDError.throwSQLException (JDError.java:524) ~ [jt 400-6.7.jar: JTOpen 6.7] –