2016-12-09 8 views
0

Я пытаюсь получить resteasy 3.0.19, guice 4.0 и tomcat 7.0.73, работая вместе, и я пытаюсь получить что-то другое, кроме ответа 404. Чтобы устранить неполадки, я просто попытался заставить пример guice-hello работать, слегка измененный. При запуске я вижу, что HelloModule и HelloResource взяты и зарегистрированы.resteasy + tomcat servlet container 3.0 + guice not working

23:09:29.875 [RMI TCP Connection(3)-127.0.0.1] INFO org.jboss.resteasy.plugins.guice.i18n - RESTEASY011005: found module: org.jboss.resteasy.examples.guice.hello.HelloModule 
23:09:30.169 [RMI TCP Connection(3)-127.0.0.1] INFO org.jboss.resteasy.plugins.guice.i18n - RESTEASY011020: registering factory for org.jboss.resteasy.examples.guice.hello.HelloResource 
[2016-12-08 11:09:30,250] Artifact Gradle : abbvie.ir.pikm : people.service.war (exploded): Artifact is deployed successfully 
[2016-12-08 11:09:30,250] Artifact Gradle : abbvie.ir.pikm : people.service.war (exploded): Deploy took 3,172 milliseconds 

Однако, когда я пытаюсь получить доступ к http://localhost:8080/people.service/hello/test, я получаю страницу 404 от кота. Еще одно замечание: если я получаю доступ к http://localhost:8080/garbage, я также получаю статус 404, но у меня нет страницы статуса 404, просто пустой.

Поскольку это контейнер сервлетов 3.0, я не определяю сервлет-диспетчера в своем web.xml. Это выглядит как:

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
     version="3.0" metadata-complete="true"> 

    <display-name>People Service</display-name> 

    <context-param> 
     <param-name>resteasy.guice.modules</param-name> 
     <param-value> 
      org.jboss.resteasy.examples.guice.hello.HelloModule 
     </param-value> 
    </context-param> 

    <listener> 
     <listener-class> 
      org.jboss.resteasy.plugins.guice.GuiceResteasyBootstrapServletContextListener 
     </listener-class> 
    </listener> 

</web-app> 

Все остальные классы только те, по умолчанию от Guice-приветствия, например, т.е. HelloModule, HelloResource, Greeter и DefaultGreeter. Мне кажется, что диспетчер по умолчанию не обрабатывает запросы, как определено. Любые идеи по устранению неполадок?

ответ

0

Шаговый через код Resteasy, я обнаружил, что проблема в том, что в ResteastServletInitializer, который используется для сервлета 3.0 контейнеров, если нет Application класса определен, то он пропускает конфигурацию HttpServlet30Dispatcher. Существует метод handleNoApplicationClass, но он пока не завершен в данный момент времени.

Решение было определить следующий класс:

package abbvie.ir.pikm.people.service; 

import javax.ws.rs.ApplicationPath; 
import javax.ws.rs.core.Application; 

@ApplicationPath("/api") 
public class PeopleServiceApplication extends Application { 
}