Я пытаюсь настроить встроенный Jetty, который поставляется с плагином Eclipse GWT (2.0.3), для использования пула соединений JNDI, который отлично работает под Tomcat, но безуспешно. Теперь, когда я прочитал некоторые вещи, касающиеся этой проблемы, мне удалось сделать следующее:
Включил фабрику начального контекста именования Jetty в classpath, запустив jvm со следующим параметром: -Djava.naming.factory.initial=org.mortbay.naming.InitialContextFactory
.
Я также создал jetty-web.xml
, который выглядит следующим образом:
<New id="mysqltest" class="org.mortbay.jetty.plus.naming.Resource">
<Arg>java:comp/env/jdbc/mysqldb</Arg>
<Arg>
<New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
<Set name="Url">jdbc:mysql://192.168.0.5:3306/mydb</Set>
<Set name="User">testuser</Set>
<Set name="Password">testpass</Set>
</New>
</Arg>
</New>
<New id="db2test" class="org.mortbay.jetty.plus.naming.Resource">
<Arg>java:comp/env/jdbc/db2db</Arg>
<New class="org.apache.commons.dbcp.BasicDataSource">
<Set name="driverClassName">com.ibm.db2.jcc.DB2Driver</Set>
<Set name="url">jdbc:db2://192.168.0.6:50000/mydb2</Set>
<Set name="username">testuser</Set>
<Set name="password">testpass</Set>
</New>
</New>
</Configure>
и включил необходимые файлы в мой путь сборки. Как вы можете видеть, там объявлены два ресурса JNDI, дескриптор базы данных MySQL, использующий MysqlConnectionPoolDataSource
(я видел это в сообщении в блоге), который отлично работает в моей среде и использовал его, чтобы гарантировать, что jetty анализирует jetty- web.xml и второй, который пытается использовать DBCP
для соединения с базой данных DB2. Проблема в том, что всякий раз, когда я пытаюсь использовать ресурс DBCP, я получаю следующую ошибку при запуске Jetty:
[WARN] Config error at <New id="db2test" class="org.mortbay.jetty.plus.naming.Resource"><Arg>java:comp/env/jdbc/db2db</Arg>...
[WARN] Failed startup of context com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload@7a74db2c{/,/home/..}
java.lang.IllegalStateException: No Constructor <New id="db2test" class="org.mortbay.jetty.plus.naming.Resource"><Arg>java:comp/env/jdbc/db2db</Arg>...
Как я уже сказал, они прекрасно работают под Tomcat, и проблема не является специфичной для DB2, я не могу также получить источник данных MySQL, используя DBCP. Глядя на сообщение об ошибке, кажется, что файлы DBCP не находятся в пути к классам, но я понятия не имею, как их разместить (они, конечно, находятся в пути сборки проектов, но это не имеет отношения к Jetty). Возможно, мне нужно добавить еще один параметр в Djava.naming.factory.initial, но я не уверен, какой из них правильный для работы DBCP.
Приветствия