【问题标题】:GWT eclispe embedded jetty and DBCP connection poolingGWT eclispe 嵌入式码头和 DBCP 连接池
【发布时间】:2011-01-20 23:51:32
【问题描述】:

我正在尝试设置 GWT (2.0.3) Eclipse 插件附带的嵌入式 Jetty,以使用在 Tomcat 下完美运行的 JNDI 连接池,但没有成功。现在,由于我已经阅读了有关该问题的一些内容,因此我设法做到了以下几点: 通过使用以下参数启动 jvm,将 Jetty 命名初始上下文工厂包含到类路径中:-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 资源,一个使用 MysqlConnectionPoolDataSource 的 MySQL 数据库句柄(我在博客文章中看到)在我的环境下运行良好,并使用它来确保码头正在解析码头- 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,我也无法使用 DBCP 获得 MySQL 数据源。查看错误消息,似乎 DBCP 文件不在类路径中,但我不知道如何将它们放在那里(它们当然在项目构建路径中,但这似乎与 Jetty 无关)。我可能必须向 Djava.naming.factory.initial 添加另一个参数,但我不确定 DBCP 的正确参数是什么。

干杯

【问题讨论】:

  • 有什么理由必须使用嵌入式 Jetty?正如您可能知道的那样,它存在许多问题 - 特别是对于更复杂的项目。我建议使用外部服务器(因为您似乎已经拥有 Tomcat):code.google.com/webtoolkit/doc/latest/…
  • 我想你是对的,问题是我希望避免另一个配置过程......
  • 好吧,如果您将其视为在未来(或现在看来)配置 Jetty 来避免主要 PITA 的一种方式,那还不错;)

标签: gwt jetty apache-commons-dbcp


【解决方案1】:

我认为您缺少“Arg”标签。

试试:

<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>

【讨论】:

    猜你喜欢
    • 2019-03-03
    • 1970-01-01
    • 2012-12-22
    • 2012-07-06
    • 2017-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多