2010-02-25 9 views
0

Я пытаюсь настроить встроенный Jetty, который поставляется с плагином GWT (2.0.3) Eclipse, чтобы использовать пул соединений JNDI, который отлично работает под Tomcat, без успеха. Теперь, когда я прочитал некоторые вещи, связанные с этой проблемой, мне удалось сделать следующее: Включил начальную фабрику контекстного вызова Jetty в путь к классам, запустив jvm со следующим параметром: -Djava.naming.factory.initial=org.mortbay.naming.InitialContextFactory. Я также создал jetty-web.xml, который выглядит следующим образом:GWT eclispe embedded jetty и подключение к DBCP

<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 (я видел это в сообщении в блоге), который отлично работает в моей среде и использовал это для обеспечения того, чтобы причал разбирал пристань. xml и второй, который пытается использовать DBCP для подключения к базе данных DB2. Проблема заключается в том, что всякий раз, когда я пытаюсь использовать ресурс ГСБДА я получаю следующее сообщение об ошибке при 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.g[email protected]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 Datasource с использованием DBCP. Глядя на сообщение об ошибке, кажется, что файлы DBCP находятся не в пути к классам, но я не знаю, как их там поставить (они, конечно же, находятся в пути создания проектов, но это не имеет отношения к Jetty). Я, вероятно, должен добавить еще один параметр в Djava.naming.factory.initial, но я не уверен, что для DBCP он подходит.

Приветствия

+0

Любая причина, почему вы должны использовать встроенный Jetty? Как вы, возможно, знаете, есть много проблем, особенно с более сложными проектами. Я бы рекомендовал использовать внешний сервер (поскольку у вас уже есть Tomcat): http://code.google.com/webtoolkit/doc/latest/FAQ_DebuggingAndCompiling.html#How_do_I_use_my_own_server_in_hosted_mode_instead_of_GWT%27s –

+0

Я полагаю, что вы правы, вещь заключается в том, что я надеялся избежать еще одной процедуры настройки ... – nvrs

+0

Ну, если вы посмотрите на это как способ избежать крупной PITA с настройкой Jetty в будущем (или теперь, как кажется), это не так уж плохо;) –

ответ

0

Я думаю, что вам не хватает тега 'ARG'.

Try:

<New id="db2test" class="org.mortbay.jetty.plus.naming.Resource"> 
    <Arg>java:comp/env/jdbc/db2db</Arg> 
    <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> 
    </Arg> 
</New>