META-INF / context.xml导致我的Java Webapp出现问题

时间:2016-07-26 20:07:41

标签: java maven tomcat jndi

我正在部署一个简单的Java 7(我将Maven用于项目设置,依赖关系等)Web应用程序部署到Tomcat 8,我有一个META-INF / context.xml,我需要指定我的数据库资源:

项目/ SRC /主/资源/ META-INF / context.xml中

<xml version="1.0" encoding="UTF-8"?>
<Context>
  <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
            maxTotal="100" maxIdle="30" maxWaitMillis="10000"
            username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://127.0.0.1:3306/javatest"/>
</Context>

当我从项目中删除这个META-INF / context.xml文件时,我能够访问我的jsps,但当然,由于我的数据源丢失,它们会返回错误。但是,当我将META-INF / context.xml包含回项目时,我尝试访问的所有资源都给了我404.为什么它会这样?

For reference, I am trying how to use a JNDI data source by following this guide.我完成了该项目所需的所有步骤

2 个答案:

答案 0 :(得分:0)

服务器启动时是否有例外?

如果jdbc驱动程序未捆绑在WEB-INF / lib中而不捆绑在CATALINA_BASE / lib中,则它无法找到该类。这很可能会导致启动失败。

检查catalina.out(如果您使用的是unix)或CATALINA_BASE / logs / localhost / catalina.date.log

修改

刚刚注意到你有src / main / resources / META-INF

尝试src / main / webapp / META-INF /context.xml ...

答案 1 :(得分:0)

不要删除META-INF/context.xml,因为它是项目的默认配置!另外,请勿将production-password输入默认的META-INF/context.xml

使用copyXML="true"代替!首次部署到tomcat时,META-INF/context.xml将永久复制到tomcat/conf/Catalina

Set to true if you want a context XML descriptor embedded inside the application 
(located at /META-INF/context.xml) to be copied to xmlBase when the application is 
deployed. On subsequent starts, the copied context XML descriptor will be used in 
preference to any context XML descriptor embedded inside the application even if the 
descriptor embedded inside the application is more recent. The flag's value defaults to 
false. Note if deployXML is false, this attribute will have no effect.

首次部署后,将tomcat/conf/Catalina/webappname.xml更新为高效的数据库信息。

任何重新部署都将继续使用tomcat/conf/Catalina/webappname.xml