我正在部署一个简单的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.我完成了该项目所需的所有步骤
答案 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
。