Мне не хватает чего-то очевидного, но я не уверен, что. У меня есть один «HelloWorld.java», который имеет один метод @GET, который возвращает некоторый текст.
Мой web.xml был взят из этого документа (описанного как "Еще более простой подход - позволить Джерси автоматически выбирать реализацию PackagesResourceConfig ...."):
<web-app>
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.hello.rest</param-value>
</init-param>
</servlet>
</web-app>
Вот мой класс (в основном взят из здесь ):
package com.hello.rest;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.ws.rs.Path;
@Path("/helloworld")
public class HelloWorld {
@GET
@Produces("text/json")
public String getHelloWorld() {
return "{\"hello\":\"World\"}";
}
}
Я использую ant для создания файла войны и развертывания его в Tomcat. Война кажется правильной, потому что tomcat разархивирует ее, и я могу получить доступ к своему статическому index.html, который я вставил в него для тестирования. Но доступ к localhost: 8080 / helloworld дает мне 404. Должен быть какой-то другой кусок, который мне нужен, чтобы Джерси работал. Что я пропустил?
Спасибо, Божо, я пропустил раздел <servlet-mapping>
. На самом деле кажется, что я не хочу использовать «/» в качестве URL-шаблона, потому что это препятствует подаче статического содержимого (я больше не могу получить свою страницу index.html!), Поэтому вот мой новый web.xml (я поместил свой ресурс в пути "/ data /"):
<web-app>
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.hello.rest</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/data/*</url-pattern>
</servlet-mapping>
</web-app>
Теперь я могу получить доступ к своей странице index.html как http://localhost:8080/hello/index.html
, а мой ресурс - http://localhost:8080/hello/data/helloworld
.