2012-02-29 37 views
0

我尝试将一些服务从Tomcat服务器移动到Jetty,以进行一些比较。显然,我不想更改我的服务,但我尝试了一些问题以使用JDBC部署它们。将web.xml之外的JDBC引用保存在Jetty中,就像在tomcat中一样

我的服务都使用相同的数据库来访问数据,所以我写了我自己的库来提出我的请求。这些服务没有关于数据库的任何信息,他们只知道他们必须使用该库。在这个图书馆中,我让使用这种代码与数据库的连接:

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 2012-02-29 09:34:02

+0

码头7.5:jetty-7.5.0.v20110725 2011年7月25日 – 2012-02-29 09:36:40

回答

0

您可以将其添加到用作处理web.xml的基础的webdefault.xml中。

此文件通常位于发行版的etc/webdefault.xml中。

欢呼声

+0

感谢这正是我想要的:) – 2012-03-05 10:22:16

相关问题