0

我的应用程序当前使用 servlet-api.jar 2.4 版进行编译。
jar 与代码一起打包并部署在 tomcat 服务器上。
Web.xml 也有相同的版本

<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" 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">

但是现在我们部署代码的tomcat正在升级到servlet-api.jar 3.0版。

我们需要停止将 jar 与我们的代码捆绑在一起,而是使用 tomcat 提供的 jar。

我想知道 :

1) 我可以保持 web.xml 完整(即没有提及 3.0)并且只更改 pom.xml 以使用 3.0 编译代码吗?是否会对应用程序功能产生任何影响?


【参考1】java、tomcat:web.xml中标签web-app中的id属性是什么意思?
[参考 2] http://docs.oracle.com/cd/E13222_01/wls/docs100/webapp/web_xml.html
[参考 3] Java web app - 什么决定了我的 Servlet API 版本?它是否在 web.xml 中指定?

4

1 回答 1

1

Servlet 规范是向后兼容的,因此 2.4 Web 应用程序应该在 3.0 容器中运行,并且您可以继续针对 Servlet 2.4 API 编译您的应用程序,并web.xml在部署到 3.0 容器时保持不变。

永远不应该在你的 WAR 中打包一个 servlet API jar。在运行时,应用程序将始终使用容器提供的 API 和实现。

关于 Tomcat 升级,我想您的意思是您的安装已从 Tomcat 5.x(?)(基于 Servlet 2.4)升级到 Tomcat 7.x(基于 Servlet 3.0)。

在较旧的 Tomcat 安装中简单地升级 servlet API jar 不是一个好主意......

于 2014-07-21T20:56:41.777 回答