我正在开发一个使用 web-fragment.xml 文件的 Web 应用程序。
AFAIK,WEB-INF/lib 中 JAR 的 web-framgent.xml 文件应该合并并解析为有效的 web.xml。因此,我激活了 Tomcat 7 服务器的 logEffectiveWebXml 选项以查看生成的文件。
特此开始有效的 web.xml 文件:
案例 1:当应用程序部署在独立的 Tomcat 7 上时:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
案例 2:当应用程序部署在 Eclipse IDE 中的 Tomcat 7 上时:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="2.5"
metadata-complete="true">
您注意到版本属性已替换为“2.5”。
此外,在独立的Tomcat上部署应用程序时有效的web.xml是正确的(web-fragments.xml文件的内容被合并),而从Eclipse启动Tomcat时这些内容是不存在的。我认为这是由于版本覆盖。
你知道为什么在 Eclipse 中启动时版本属性会被覆盖吗?
我检查了 Eclipse 配置、项目配置(它们都使用动态 Web 模块 3.0)和工作区目录“.metadata.plugins\org.eclipse.wst.server.core”,但我没能找到错误...
注意:我还注意到,即使我没有部署我的应用程序(= 全新的 Tomcat 安装),该版本也会被覆盖。
谢谢你的帮助。