簡體   English   中英

Tomcat上的Jersey REST服務出現404錯誤

[英]404 error with Jersey REST Service on Tomcat

我已經查看了有關此主題的所有可用答案,或者我面臨的是一個完全不同的問題,或者我錯過了很多寶貴的時間。

服務等級:

package org.test;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

//http://localhost:8080/JunkWeb/rest/TestRestService/callService
@Path("/TestRestService")
public class TestRestService {

    @GET
    @Path("/callService")
    @Produces(MediaType.TEXT_PLAIN)
    public String callService(){return "from Rest Service";}

}//class closing

web.xml中

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>JunkWeb</display-name>

  <servlet>
        <servlet-name>jersey-serlvet</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>jersey.config.server.provider.packages</param-name>
      <param-value>org.test</param-value>
    </init-param>
    <!-- <init-param>
      <param-name>jersey.api.json.POJOMappingFeature</param-name>
      <param-value>true</param-value>
    </init-param> -->
    <load-on-startup>1</load-on-startup>
  </servlet>
   <servlet-mapping>
        <servlet-name>jersey-serlvet</servlet-name>
        <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>
</web-app>

網址:

http://localhost:8080/JunkWeb/rest/TestRestService/callService

在此處輸入圖片說明

應該可以,但是不能。 任何幫助將不勝感激。

我正在使用Jersey 2.17和Tomcat 8.0.20

“我正在使用Jersey 2.17”

在2.17中不存在

com.sun.jersey.spi.container.servlet.ServletContainer

我很驚訝您沒有收到未找到的類異常。 這意味着您可能正在混合版本。 或者,也許您正在得到一個例外,那就是不告訴我們。 無論如何,正確的ServletContainer應該是

org.glassfish.jersey.servlet.ServletContainer

接下來,如果有的話,應該做的事情是擺脫所有以com.sun開頭的包(jar)。 這些是球衣1罐。 在第二個澤西島,程序包的命名模式更改為org.glassfish.xxx如果您想使生活變得輕松,請使用Maven,並僅向整個項目添加一個依賴項,其余的將全部引入。

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.17</version>
</dependency>

而且,這在澤西島2都不存在

jersey.api.json.POJOMappingFeature

在《澤西島2》中,只需添加這種Maven優勢,生活就會很好。

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.17</version>
</dependency>

如果您不使用Maven,請在此處下載RI軟件包。 打開所有文件夾,然后將每個jar添加到您的項目中。 這是對核心的支持。

對於JSON支持,下載 ,以及所有這些 您可以在同一站點上搜索它們。 這樣做無需額外配置。 或者,您可以只下載第二個鏈接中的鏈接,然后將包添加到web.xml中,如鏈接中所示。

但是僅僅為了使其正常工作,因為您的代碼不會產生或使用任何JSON,因此您可以簡單地先使核心運行,然后一旦其開始正確運行,就可以使用JSON支持。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM