mysql - 将 JDBC 引用保留在 web.xml 之外以部署在 Jetty 中,就像在 tomcat 中一样

标签 mysql web-services tomcat jdbc jetty

我尝试将一些服务从我的 Tomcat 服务器迁移到 Jetty,只是为了做一些比较。显然我不想更改我的服务,但我尝试了一些问题以使用 JDBC 部署它们。

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

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 中做同样的事情。我在 jetty.xml 中添加了以下 block :

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

服务器启动良好并且似乎可以正常工作,但是当我尝试访问我的服务时出现错误。在 jetty 的手册中,我发现它明确地写着我必须在 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 文件一样?

最佳答案

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

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

干杯

关于mysql - 将 JDBC 引用保留在 web.xml 之外以部署在 Jetty 中,就像在 tomcat 中一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9495855/

相关文章:

sqlite - Tomcat 无法启动并生成 java.util.concurrent.ExecutionException,如下所示,一旦我用 listener-class 初始化了 web.xml

php - 如何将带有 PHP PDO 的 UCS-2 数据插入 MySQL?

Mysql二分查找

web-services - 服务层和 Web API 服务层?

java - 使用 JAX-WS 跟踪 XML 请求/响应

apache - 将 index.jsp 设置为应用程序 Sencha Architect 的默认启动页面

mysql - 每天的第一个值和最后一个值之间的差异

mysql - 获取每个列值的前 N ​​个结果

java - 单击按钮时调用 WebService

java - Netbeans:无法集成 Tomcat (Ubuntu)