/ Tomcat上のJersey RESTサービスでの/ 404エラー - java、rest、tomcat、jersey、jersey-2.0

TomcatのJersey RESTサービスで404エラー - java、rest、tomcat、jersey、jersey-2.0

私はこのトピックに関して利用可能なすべての答えを調べました、私は全く異なる問題に直面しているか、または私は何か大きな時間を逃しています。

サービスクラス

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>

URL

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

ここに画像の説明を入力

動作するはずですが、動作しません。どんな助けでも本当に感謝されるでしょう。

私はJersey 2.17とTomcat 8.0.20を使っています

回答:

回答№1の場合は3

「私はJersey 2.17を使用しています」

これは2.17には存在しません

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

クラスが見つからないという例外が発生しないことに「私は驚いています」。それはあなたがおそらくバージョンを混在させていることを意味します。それとも、あなたは「私たちに言っていないという例外を受けています。いずれにせよ、正しい ServletContainer すべきである

org.glassfish.jersey.servlet.ServletContainer

次に、あなたがすべきことがあれば、あなたがすべきことは、そのパッケージがで始まるすべてのもの(jar)を取り除くことです com.sun。これらはJersey 1 jarです。 Jersey 2では、パッケージの命名パターンはに変更されました。 org.glassfish.xxx あなたが人生を楽にしたいのなら、Mavenを使って、プロジェクト全体に1つの依存関係を追加するだけで、残りはすべて取り込まれます。

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

また、これはジャージー2にも存在しません

jersey.api.json.POJOMappingFeature

Jersey 2では、このMavenの依存関係を追加するだけで、人生は良くなります。

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

Mavenを使用していない場合は、RIバンドルをダウンロードしてください。 ここに。すべてのフォルダを開き、プロジェクトにすべてのjarファイルを追加します。これはコアサポート用です。

JSONサポートについては、ダウンロード この、 と同様 これらすべて。あなたはそれらを同じサイトで検索することができます。 これを行うことは追加の設定なしで動作するはずです。あるいは、2番目のリンクにあるものだけをダウンロードしてから、リンクにあるようにweb.xmlにパッケージを追加することもできます。

しかし、それを機能させるためには、コードはJSONを生成または消費しないので、最初にコアを実行させてから、正しく機能し始めたら、JSONサポートに取り組むことができます。