0

GWT (2.0.3) Eclipse プラグインに付属する組み込み Jetty をセットアップして、Tomcat で完全に動作する JNDI 接続プールを使用しようとしていますが、成功しませんでした。この問題に関するいくつかのことを読んだので、次のことを行うことができました: 次のパラメーターを使用して jvm を起動することにより、Jetty の名前付け初期コンテキスト ファクトリをクラスパスに含めました-Djava.naming.factory.initial=org.mortbay.naming.InitialContextFactoryjetty-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>

ビルドパスに必要なファイルを含めました。ご覧のとおり、そこでは 2 つの JNDI リソースが宣言されています。MySQL データベースへのハンドルMysqlConnectionPoolDataSource(ブログ投稿で見ました) は、私の環境で正常に動作し、jetty が jetty-web.xml を解析していることを確認するために使用されます。もう 1 つ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 が機能するための正しいパラメーターが何であるかはわかりません。

乾杯

4

1 に答える 1

0

「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>
于 2010-02-28T15:03:35.887 に答える