我的应用程序目前使用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?
答案 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就不是一个好主意......