泽西岛网络服务

时间:2015-06-06 15:43:00

标签: java maven jersey java-web-start

我正在尝试使用针对Web服务的jersey设置一个简单的Java Web应用程序。但是我有以下问题。 tomcat服务器找不到资源http://localhost:8081/OnlineShop/rest/books/list,但它可以找到我的简单servlet http://localhost:8081/OnlineShop/index

Problem

我有以下web.xml web.xml file

另一方面,我注意到com.sun.jersey.spi.container.servlet.ServletContainer存在于我的项目中,因为我使用maven添加了依赖项,但是jersey.config.server.provider.packages不存在。也许这就是问题,但我不知道我必须添加的确切依赖性。

My BookRest.java具有以下代码,位于com.shop.rest包中。

enter image description here

最后,我的pom.xml具有以下依赖项。

 <dependencies>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.19</version>
    </dependency>
    <dependency>
        <groupId>net.sf.json-lib</groupId>
        <artifactId>json-lib-ext-spring</artifactId>
        <version>1.0.2</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-servlet</artifactId>
        <version>1.18</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-core</artifactId>
        <version>1.19</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-client</artifactId>
        <version>1.19</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-common</artifactId>
        <version>2.17</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet-core</artifactId>
        <version>2.17</version>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

1 个答案:

答案 0 :(得分:3)

请,请摆脱整个项目。你显然是一个初学者,似乎只是将随机配置和依赖关系放在一起,可能来自不同的教程。您的依赖项不兼容,并且您的web.xml配置错误。就像我说的那样,废弃整个项目并从头开始。如果您刚刚开始,则应使用其中一个启动应用程序。

你在Netbeans,所以请执行以下操作

  1. 文件→新项目
  2. Maven→来自Archetype的项目
  3. 搜索jersey-quickstart-webapp
  4. 选择具有组ID org.glassfish.jersey.archetypes
  5. 的那个
  6. 应显示最新版本。
  7. 应该从那里自我解释
  8. 您将添加的唯一依赖项是

    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet-core</artifactId>
        <!-- use the following artifactId if you don't need servlet 2.x compatibility -->
        <!-- artifactId>jersey-container-servlet</artifactId -->
    </dependency>
    

    web.xml看起来像

    <servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>com.stackoverflow.jersey</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/api/*</url-pattern>
    </servlet-mapping>
    

    这将为您启动并运行一个简单的应用程序。您将看到需要取消注释JSON支持的依赖项。取消评论。或者更好的是,取消评论,然后将jersey-media-moxy更改为jersey-media-json-jackson。杰克逊是IMO更好的JSON库。

    同时保留Jersey Documentation便于阅读和使用泽西的参考资料

相关问题