gpt4 book ai didi

java - web.xml 中的 Servlet 3.0 兼容 Web 应用程序声明有何作用?

转载 作者:搜寻专家 更新时间:2023-10-30 21:34:57 25 4
gpt4 key购买 nike

我正在部署一个在 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 应用程序有所不同?

最佳答案

您应该能够简单地将模式声明从 2.4 交换到 3.0

科学方法

最初我开始通过在 2.42.5 之间做 diff 和另一个比较 2.5 来证明它和 3.0

我确信 2.42.5 之间的区别只是附加的, namespace 已从 j2ee 转移到 javaee.

但是 3.0 的 xsd 架构比其他两个版本的 1/3 小。不确定在这种情况下如何进行(欢迎提出任何想法!)


您可以从这里下载所有模式并自己进行比较:


不太科学的方法

以下是描述每个新版本标准的新内容文章:

如果您仔细阅读,文章中提到的 web.xml 描述符的变化很小。

我要做的只是列出原始 web.xml 中的所有元素,并确认它们确实存在于描述 3.0 schema 的文档中。 .

希望这对您有所帮助!

关于java - web.xml 中的 Servlet 3.0 兼容 Web 应用程序声明有何作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21383734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com