Tomcat 8无法读取JNDI XML文件,报DOCTYPE根元素匹配错误如何解决?
问题根因
Tomcat解析Context配置文件时要求匹配对应DTD约束,缺少正确的DOCTYPE声明就会触发根元素匹配失败的异常。
修正后的完整配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE Context PUBLIC "-//Apache Software Foundation//DTD Context 1.0//EN" "http://tomcat.apache.org/dtds/tomcat-8.0-context.dtd"> <Context path="/myapp" reloadable="true"> <Resource auth="Container" name="jdbc/myapp" driverClassName="oracle.jdbc.driver.OracleDriver" password="password" username="username" type="javax.sql.DataSource" url="jdbc:oracle:thin:@192.168.1.33:1521/xe" /> </Context>
配置优化建议
- 若你将该配置文件放在应用
META-INF/context.xml路径下,不需要手动配置path属性,Tomcat会自动根据war包名称匹配上下文路径,手动配置的path在部分部署场景下会不生效 - Tomcat 8已经废弃了
debug属性,上述配置已经移除了该冗余属性 - 生产环境建议将
reloadable属性设置为false,避免运行时类重载带来的性能损耗和稳定性风险
内容的提问来源于stack exchange,提问作者AppleT
相关产品推荐
相关产品推荐

