/ / 404 error with Jersey REST Usługa na Tomcat - java, reszta, tomcat, koszulka, jersey-2.0

Błąd 404 z usługą REST Jersey na Tomcat - java, reszta, tomcat, koszulka, jersey-2.0

Przyjrzałem się wszystkim odpowiedziom na ten temat, albo mam do czynienia z zupełnie innym problemem, albo brakuje mi czegoś wielkiego.

Klasa usługi:

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>

Adres URL:

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

wprowadź opis obrazu tutaj

Powinien działać, ale nie działa. Każda pomoc będzie naprawdę doceniona.

Używam oprogramowania Jersey 2.17 i Tomcat 8.0.20

Odpowiedzi:

3 dla odpowiedzi № 1

"Używam Jersey 2.17"

To nie istnieje w 2.17

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

Jestem zaskoczony, że nie otrzymujesz wyjątku od klasy. Co oznacza, że ​​prawdopodobnie mieszacie wersje. A może otrzymujesz wyjątek i nie mówisz nam, w każdym razie, poprawne ServletContainer powinno być

org.glassfish.jersey.servlet.ServletContainer

Następnie powinieneś pozbyć się wszystkiego (słoika), którego pakiety zaczynają się od tego, co powinieneś zrobić com.sun. Są to słoiki Jersey 1. W drugiej wersji Jersey zmieniono nazewnictwo paczki na org.glassfish.xxx Jeśli chcesz ułatwić życie, skorzystaj z Mavena i po prostu dodaj tylko jedną zależność do całego projektu, a ona przyciągnie resztę.

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

Poza tym to samo nie istnieje w Jersey dwa

jersey.api.json.POJOMappingFeature

W Jersey 2 po prostu dodaj deprawację Mavena, a życie będzie dobre.

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

Jeśli nie korzystasz z Maven, pobierz pakiet RI tutaj. Otwórz wszystkie foldery i dodaj każdy słoik do projektu. To jest dla podstawowego wsparcia.

Aby uzyskać wsparcie dla JSON, pobierz to, jak również wszystkie te. Możesz wyszukiwać w tej samej witrynie dla nich. robienie tego powinno działać bez dodatkowej konfiguracji. Możesz też pobrać tylko te z drugiego linku, a następnie dodać pakiet w pliku web.xml, jak widać w linku.

Ale żeby to działało, ponieważ twój kod nie wytwarza ani nie zużywa JSON-a, możesz po prostu najpierw uruchomić jądro, a kiedy zacznie działać poprawnie, możesz pracować nad obsługą JSON.