java - 泽西网络服务

标签 java maven jersey java-web-start

我正在尝试使用 jersey 来建立一个简单的 Java Web 应用程序来提供 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>

最佳答案

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

您正在使用 Netbeans,因此只需执行以下操作

  1. 文件 → 新项目
  2. Maven → 来自 Archetype 的项目
  3. 搜索jersey-quickstart-webapp
  4. 选择具有组 ID org.glassfish.jersey.archetypes 的组
  5. 应显示最新版本。
  6. 应该是不言自明的

您会发现添加的唯一依赖项是

<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。在我看来,Jackson 是一个更好的 JSON 库。

同时保留 Jersey Documentation方便获取一些使用 Jersey 的良好阅读和引用 Material

关于java - 泽西网络服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30684707/

相关文章:

java - 运行使用 Maven 构建的 Android 应用程序时出现 NoClassDefFoundError

java - 基于 JAX-RS 的实现中的简单 REST 资源版本控制?

java - 如何从 javaee-api-7 中排除不需要的包,例如 mail 和 ws?

java - 配置 Jetty、Jersey 和 Guice

java - jar 尺寸太大。如何减少maven项目中的jar大小?

java - Java 打印不工作

java - Log.e 在拦截器中产生一些问题

java - 有没有任何指南展示如何在 Eclipse 中使用 appengine 和 Maven 有效构建应用程序?

java - Maven Simple Webapp 原型(prototype)不处理 jsp 页面?

java - 等待模式在 Selenium 2.0 中消失