我希望这是愚蠢的事情。但我已经盯着它看了太久了。
我正在 Linux 上升级到 Tomcat 7(从 6),它忽略了我的 context.xml 文件。如果我在 server.xml 中包含上下文(数据源),它就可以正常工作。但我想最终从 server.xml 中获取这些内容。
我在 Windows/Eclipse 中运行 Tomcat 7,并且上下文分离,并且工作正常。
我尝试过 Host 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>
这些改变有效吗?…
1: 在您的
web.xml
代码段中,将 javax.servlet.jsp.jstl.sql.dataSource
替换为 javax.sql.dataSource
2: 将
web.xml
代码段完全替换为:context-param
3:确保您确实有一个可供您的 Web 应用程序使用的 MySQL 连接器(jar?),例如在
<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>
希望那里的东西可能有所帮助......
…考虑到这个问题已经有几个月了,如果您同时已经自己解决了这个问题,请在此处发表评论,并提供对您有用的修复! :-P