7

我希望这是一件愚蠢的事情。但我已经盯着它太久了。

我在 Linux 上升级到 Tomcat 7(从 6),它忽略了我的 context.xml 文件。如果我在 server.xml 中包含上下文(数据源),它工作正常。但我想最终将这些东西从 server.xml 中取出。

我有 Tomcat 7 在 Windows/Eclipse 中运行,具有分离的上下文,它工作正常。

我已经尝试过 Host copyXML 参数。即使它确实复制了 context.xml,它也不会使用它......除非我将它包含在 server.xml 的主机中。当它失败时,它抱怨它无法获取我的 MySQL 连接:“无法获取连接,数据源无效”

我确信配置的其余部分很好,因为当我将它粘贴到 server.xml 中时它可以工作......

有人可以指出我缺少什么吗?不应该这么难。谢谢!

顺便说一句:它是 CentOS 5.9 (64) 上的普通 Tomcat7(不是 rpm)、JDK-7u11。

地点:

/var/webapps/shop1
    query.jsp
/var/webapps/shop1/META-INF
    context.xml

在 server.xml 中:

<Host name="dev3.domain.net" appBase="/var/webapps" 
    unpackWARs="true" autoDeploy="true">

    <Context docBase="shop1" path="" reloadable="true" />
</Host>

上下文.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <Resource name="jdbc/shop1db" auth="Container"
            type="javax.sql.DataSource"
            factory="org.apache.commons.dbcp.BasicDataSourceFactory"
            maxActive="50" maxIdle="25" maxWait="10000"
            username="user" password="pass"
            driverClassName="com.mysql.jdbc.Driver"
            validationQuery="SELECT 1"
            url="jdbc:mysql://localhost/shop1"
            logAbandoned="true" removeAbandoned="true" removeAbandonedTimeout="60"
    />
</Context>

在 web.xml 中:

<context-param>
    <param-name>javax.servlet.jsp.jstl.sql.dataSource</param-name>
    <param-value>jdbc/shop1db</param-value>
</context-param>
4

1 回答 1

0

这些更改是否有效?...</p>

1:在您的web.xml代码段中,仅替换javax.servlet.jsp.jstl.sql.dataSourcejavax.sql.dataSource

2:将您的web.xml代码段(即整个context-param部分)完全替换为:

<resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/shop1db</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

3:确保您确实有一个可用于您的 Web 应用程序的 MySQL 连接器(jar?)——例如在WEB-INF/lib

希望那里的东西可能会有所帮助......</p>

......鉴于这个问题现在已经有几个月了,如果您在此期间自己解决了这个问题,请在此处评论对您有用的修复程序!:-P

于 2013-04-19T00:58:38.160 回答