我的应用程序需要在生产中的tomcat 8服务器中部署。在生产中,应用程序将使用tomcat 8附带的servlet-api.jar。因此,在开发中我们应该使用以下哪个servlet jar?它们都是一样的吗?
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>8.0.20</version>
<scope>provided</scope>
</dependency>
答案 0 :(得分:0)
javax
个罐子是specifications。但由于它们都是provided
- 范围,我猜你在部署时不需要。
来自Maven docs:
provided
这很像compile,但表示您希望JDK或容器在运行时提供依赖项。例如,在为Java Enterprise Edition构建Web应用程序时,您可以将Servlet API和相关Java EE API的依赖关系设置为提供的范围,因为Web容器提供了这些类。此范围仅在编译和测试类路径中可用,并且不可传递。
如果您需要使用javax
规范中的任何内容,您的框架很可能已在其依赖项中包含此jar。只要您在开发过程中没有获得有关未知类的任何运行时异常,我就不会太担心。
答案 1 :(得分:0)
Oracle / Java以接口/签名和一些基本规则的形式提供规范,并为供应商/容器提供商提供实施,例如Tomcat和weblogic等等......
现在在你的情况下,因为你要在tomcat上部署它,所以你应该坚持使用tomcat提供的servlet-Jar。
答案 2 :(得分:0)
为什么不下载Tomcat 8.0.20和have a look?另一方面,this页面显示Tomcat 8使用Servlet 3.1.x。