使用哪个servlet-api jar

时间:2016-02-23 22:54:28

标签: java maven tomcat servlets tomcat8

我的应用程序需要在生产中的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>

3 个答案:

答案 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。