开发者社区 问答 正文

tomcat 7 在项目的/META-INF/context.xml配置数据源不起作用 配置报错 

我使用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>

展开
收起
kun坤 2020-05-30 23:27:12 837 分享 版权
阿里云 AI 助理回答

在Tomcat 7中,配置数据源确实可以在/META-INF/context.xml文件中进行,这种方式允许你为特定的Web应用配置数据源。如果您的配置没有生效,可能是由以下几个原因造成的:

  1. 确保路径正确:首先确认/META-INF/context.xml文件位于您Web应用的WEB-INF目录下,而不是根目录下的META-INF。正确的路径应该是WEB-INF/META-INF/context.xml。但根据常规结构,通常直接是WEB-INF/context.xml

  2. Context元素命名空间:请检查您的context.xml文件是否包含了正确的命名空间声明。虽然您提供的代码片段未显示完整,但确保有如下开头:

    <?xml version="1.0" encoding="UTF-8"?>
    <Context>
    
  3. 资源引用:在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属性一致。

  4. Tomcat重启:修改了context.xml后,请确保完全重启了Tomcat服务器,因为有时候简单的reload或hot deploy可能不会重新加载这些配置。

  5. 权限问题:确认Tomcat运行用户有足够的权限访问和读取context.xml文件。

  6. 日志检查:查看Tomcat的日志文件(通常在logs/catalina.out),可能会有错误信息提示为何配置未被正确应用。

如果以上都检查无误,而server.xml中的配置有效,这可能意味着存在环境特定的问题或者配置覆盖的情况。不过,按照标准做法,推荐在应用级别的context.xml中配置数据源以保持配置的模块化和可移植性。如果问题依旧无法解决,考虑检查Tomcat的具体版本是否有已知的bug,或者尝试在Tomcat社区论坛寻求帮助。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答