tomcat 7忽略my context.xml

tomcat 7忽略my context.xml,tomcat,tomcat7,server.xml,context.xml,Tomcat,Tomcat7,Server.xml,Context.xml,我希望这是件愚蠢的事。但我已经盯着它看太久了 我在Linux上升级到Tomcat 7(从6升级到7),它忽略了我的context.xml文件。如果我在server.xml中包含上下文(datasource),它就可以正常工作。但我希望最终从server.xml中获取这些内容 我让Tomcat7在Windows/Eclipse中运行,并使用单独的上下文,它运行得很好 我尝试了主机copyXML参数。即使它复制了context.xml,也不会使用它。。。除非我将其包含在server.xml中的主机中

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

我在Linux上升级到Tomcat 7(从6升级到7),它忽略了我的context.xml文件。如果我在server.xml中包含上下文(datasource),它就可以正常工作。但我希望最终从server.xml中获取这些内容

我让Tomcat7在Windows/Eclipse中运行,并使用单独的上下文,它运行得很好

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

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

有人能指出我遗漏了什么吗?不应该这么难。谢谢

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

地点:

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

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

javax.servlet.jsp.jstl.sql.dataSource
jdbc/shop1db

这些更改是否有效

1:
web.xml
代码片段中,将
javax.servlet.jsp.jstl.sql.dataSource
替换为
javax.sql.dataSource

2:
web.xml
片段(即整个
上下文参数
部分)完全替换为:


数据库连接
jdbc/shop1db
javax.sql.DataSource
容器
3:确保您的web应用程序确实有一个MySQL连接器(jar?),例如在
web-INF/lib

希望那里能有帮助


…考虑到这个问题已经存在几个月了,如果您在此期间自己解决了它,请在此处评论对您有效的修复方法!:-P

如果您使用MySQL,那么Tomcat官方文档中的这个示例可能会对您有所帮助:。顺便说一下,MySQL的默认端口是3306,即它应该是
url=“jdbc:mysql://localhost:3306/shop1“
,当然,如果您没有更改它是的。。。我以前在那里有港口。同样的结果。我认为必须有一个与读取context.xml文件相关的设置。如果我将copyXML设置为true,那么它会正确地复制和重命名它。所以它知道它在那里。它就是不能用它做任何事。同样,如果我在server.xml中包含主机中的context.xml文本,那么它就可以正常工作。但是,这种做法并不理想……我可以一直回到那一点。但这是我做对的机会……事实上,根据Tomcat的官方文档(引用):“不建议将元素直接放在server.xml文件中。这是因为修改上下文配置更具侵略性,因为在不重新启动Tomcat的情况下无法重新加载主conf/server.xml文件。”因此,您不希望在server.xml中包含上下文是正确的。另外,您是否确实需要
docBase
path
属性在
context
元素中(以防万一,这里是描述:)?也许没有他们的尝试会有所帮助。我通常只在META-INF下包含custom context.xml,而不包含
docBase
path
属性,格式如我在这里的一个问题中所述:。工作起来很有魅力。当然,也许你有理由包含这些属性。我从来就不需要这个。
<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>