我正在部署一个在web.xml中声明并部署为.war文件的Web应用程序。
我正在Jetty 9.1.x上部署(但我认为这个问题不是特定于容器的)。
我的web.xml文件很旧,并将自己声明为Servlet 2.4应用程序:
<web-app version="2.4" id="my_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/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
我的配置实际上声明了一些仅限Servlet 3.0的功能,例如默认错误页面。这些功能不会根据架构进行验证,但功能似乎可以正常工作。
由于我使用3.0功能,我想将声明更改为正确:
<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">
但我害怕这样做,因为我不明白Jetty的区别。
更改声明是否会影响Jetty的运行时行为? Jetty对待2.4应用程序的方式与3.0应用程序不同吗?
答案 0 :(得分:1)
您应该可以简单地将架构声明从 2.4 交换为 3.0 。
最初,我开始通过 2.4 和 2.5 之间的diff
进行证明,另一个比较 2.5 和 3.0 强>
我确信自己 2.4 和 2.5 之间的差异只是加法,名称空间已从j2ee
转移到javaee
。
然而 3.0 的xsd架构小于其他两个版本的1/3。在这种情况下不确定如何处理(欢迎任何想法!)
您可以从此处下载所有模式并自行进行比较:
以下是描述每个新版本标准的内容新文章:
如果你读完了,文章中提到的web.xml
描述符的更改是分钟的。
我要做的只是列出原始web.xml
中的所有元素,并确认它们确实存在于描述3.0 schema的本文档中。
希望这有帮助!