2012-02-29 7 views
0

Tomcat ServerからJettyにいくつかのサービスを移動しようとしました。私のサービスを変更したくないのは明らかですが、私はJDBCでそれらを展開するためにいくつかの問題を試しています。Tomcatのようにweb.xmlの外側にあるJDBC参照をJettyにデプロイするようにしました。

私のサービスはすべて同じデータベースを使用してデータにアクセスしますので、自分のライブラリを作成してリクエストしました。サービスはデータベースに関する情報を持っていません。彼らは単にライブラリを使用しなければならないことを知っています。このライブラリでは、私はこの種のコードを使用してデータベースとの接続を行います。

InitialContext ictx = new InitialContext(); 
Context envCtx = (Context) ictx.lookup("java:comp/env"); 
DataSource ds = (DataSource) envCtx.lookup("jdbc/mysql"); 

のTomcatで私のサービスはのcontext.xmlに行を追加するだけでよく働く:

<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="100" maxIdle="30" maxWait="10000" name="jdbc/mysql" username="login" password="password" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/mysql" /> 

だから私はただやりたいです桟橋でも同じ。私は私のjetty.xmlで次のブロックを追加しました:

<New id="mysql" class="org.eclipse.jetty.plus.jndi.Resource"> 
    <Arg></Arg> 
    <Arg>jdbc/mysql</Arg> 
    <Arg> 
     <New class="org.apache.commons.dbcp.BasicDataSource"> 
      <Set name="driverClassName">com.mysql.jdbc.Driver</Set> 
      <Set name="url">jdbc:mysql://localhost:3306/mysql</Set> 
      <Set name="username">login</Set> 
      <Set name="password">password</Set> 
     </New> 
    </Arg> 
</New> 

サーバがうまく起動し、動作するようには思えますが、私は私のサービスにアクセスしようとすると、私はエラーを取得します。他の解決策があるのであれば、私はすべての私のweb.xmlサービスで同じ行を書くよりも、不思議

<resource-ref> 
    <description>My DataSource Reference</description> 
    <res-ref-name>jdbc/DSTest</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 

:桟橋のマニュアルでは、私は明示的に私は次のようにweb.xml内のいくつかの情報を追加することが必要であること書かれてい'ファイル?同じ情報を持つ私のすべてのサーバーに共通のXMLファイルを追加するのと同じですか?

+0

どのバージョンのJetty? – Tim

+0

Jetty 7.5:jetty-7.5.0.v20110725 2011年7月25日 –

答えて

0

web.xmlを処理するための基礎として使用されるwebdefault.xmlに追加できます。

このファイルは通常、配布のetc/webdefault.xmlにあります。

歓迎

+0

ありがとうございました。 –