了解webapp上的maven依赖关系

时间:2015-08-19 07:23:44

标签: java web-services maven web-applications

这是我第一次处理web-app和maven。现在,我有一个宁静的网络服务项目,而且我正在寻找其服务器端 pom.xml文件。在那里有4个与Web应用程序相关的不同依赖项。这些是:

        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-server</artifactId>
            <version>9.3.2.v20150730</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-servlet</artifactId>
            <version>9.3.2.v20150730</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-servlets</artifactId>
            <version>9.3.2.v20150730</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-jetty-http</artifactId>
            <version>2.20</version>
        </dependency>

现在,据我所知,运行webapp需要3个实体。这些是Web serverweb container (servlet engine)servlet。 (至少在我的申请中这些是必需的)

因此,我认为pom.xml中的依赖项应该与这些依赖项之一相对应。然而,由于存在4个依赖性但是3个逻辑实体,因此不存在一对一匹配。 (当然,我的pom.xml文件中的这些依赖项可能是多余的(未使用))

我的问题是这些依赖项中的哪一个与我上面列出的逻辑实体相对应?而且jetty-servlet和jetty-servlets依赖关系有什么区别?

修改

为了测试是否存在未使用的依赖项,我评论了第4个依赖项(jersey-container-jetty-http),但我的应用程序仍能正常工作。 因此,我认为:

  • jetty-server对应于web-server
  • jetty-servlet对应于servlet引擎(即web容器)
  • jetty-servlets对应于servlet

EDIT2

我现在感到困惑。当我查看我的项目文件夹时,我找到了一个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">
    <display-name>Restful Web Application</display-name>


    <servlet>
        <servlet-name>jersey-serlvet</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>com.myproject.rest</param-value>
        </init-param>
        <init-param>
            <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <filter>
        <filter-name>cross-origin</filter-name>
        <filter-class>com.myproject.rest.rest.filter.CORSFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>cross-origin</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <servlet-mapping>
        <servlet-name>jersey-serlvet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

</web-app> 

现在写一下,servlet名称是jersey-server(com.sun.jersey.spi.container.servlet.ServletContainer)。但是在pom.xml中,jetty被定义为web容器?

0 个答案:

没有答案