即使我实际使用的是Servlet-api jar 3.0版,我也可以保留web.xml版本2.4

时间:2014-07-21 09:17:52

标签: maven tomcat7 pom.xml servlet-3.0 servlet-2.5

我的应用程序目前使用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: what is the meaning of the id attribute in the tag web-app in web.xml?
[参考文献2] http://docs.oracle.com/cd/E13222_01/wls/docs100/webapp/web_xml.html
[参考文献3] Java web app - What determines my Servlet API version? Does it get specified in web.xml?

1 个答案:

答案 0 :(得分:1)

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

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

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

只需在较旧的Tomcat安装中升级servlet API jar就不是一个好主意......