Загрузка ресурсов с помощью аннотации Jersey и @ApplicationPath


Я пытаюсь развернуть базовую службу Jersey restful для Tomcat7 без интернета.xml:

 @WebServlet(loadOnStartup=1)
 @ApplicationPath("resources")
 @Path("/mypath/{name}")
 public class MyResource extends Application {

 @Override
 public Set<Class<?>> getClasses() {
     Set<Class<?>> s = new HashSet<Class<?>>();
     s.add(MyResource.class);
     return s;
 }

 @GET
 @Consumes("text/plain")
 @Produces("text/plain")
 public String getWelcome(@PathParam(value = "name") String name) {
     return "Welcome to jax-rs " + name;
 }
}

Мне представляется 404 при попытке доступа: /myapplication/resources/mypath/sample.

Я могу развернуть сервлет, используя аннотацию @WebServlet, поэтому это не имеет ничего общего с загрузкой сервлетов без web.xml в Tomcat7.

Из чтения документации для Джерси, среда выполнения должна сканировать классы расширения Application и выполнить getClasses(), загружая все корневые файлы ресурсы.

1 4

1 ответ:

Какую версию Джерси вы используете? Попробуйте разделить приложение и ресурс на два класса. Определенно удалите аннотацию @WebServlet. Например, один класс, расширяющий приложение, аннотируется @ApplicationPath, а другой класс - @Path.

EDIT: убедитесь, что jersey-servlet.jar включен в ваш файл WAR.