我使用tomcat7来开发项目,看了下官方文档,推荐在项目的/META-INF/context.xml中配置数据源,但是我配了之后,根本就不起作用。web.xml里面也加了数据源的引用的。在server.xml里面配数据源是起作用的。麻烦大家帮忙解决下。感激不尽。 /META-INF/context.xml的配置如下:
<?xml version="1.0" encoding="UTF-8"?> <Context path="" docBase="webcontext" reloadable="true" workDir="D:\eclipsespace\db\webcontext\WEB-INF\work" sessionCookieName="DB_SESSION" sessionCookiePath="/"> <Resource name="jdbc/db" auth="Container" type="javax.sql.DataSource" maxActive="10" maxIdle="5" maxWait="10000" username="root" password="123456" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/abc?useUnicode=true&characterEncoding=UTF-8"/> </Context>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Tomcat 7中,配置数据源确实可以在/META-INF/context.xml文件中进行,这种方式允许你为特定的Web应用配置数据源。如果您的配置没有生效,可能是由以下几个原因造成的:
确保路径正确:首先确认/META-INF/context.xml
文件位于您Web应用的WEB-INF
目录下,而不是根目录下的META-INF
。正确的路径应该是WEB-INF/META-INF/context.xml
。但根据常规结构,通常直接是WEB-INF/context.xml
。
Context元素命名空间:请检查您的context.xml
文件是否包含了正确的命名空间声明。虽然您提供的代码片段未显示完整,但确保有如下开头:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
资源引用:在web.xml
中,您需要正确引用在context.xml
中定义的数据源。确保引用名称与context.xml
中的name
属性匹配,并且引用类型正确。例如,在web.xml
中添加:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/YourDataSourceName</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
确保<res-ref-name>
标签内的值与context.xml
中<Resource>
的name
属性一致。
Tomcat重启:修改了context.xml
后,请确保完全重启了Tomcat服务器,因为有时候简单的reload或hot deploy可能不会重新加载这些配置。
权限问题:确认Tomcat运行用户有足够的权限访问和读取context.xml
文件。
日志检查:查看Tomcat的日志文件(通常在logs/catalina.out
),可能会有错误信息提示为何配置未被正确应用。
如果以上都检查无误,而server.xml中的配置有效,这可能意味着存在环境特定的问题或者配置覆盖的情况。不过,按照标准做法,推荐在应用级别的context.xml
中配置数据源以保持配置的模块化和可移植性。如果问题依旧无法解决,考虑检查Tomcat的具体版本是否有已知的bug,或者尝试在Tomcat社区论坛寻求帮助。