我试图让resteasy 3.0.19,guice 4.0和tomcat 7.0.73一起工作,我试图获得除404响应之外的其他东西。要进行故障排除,我只是试着让guice-hello示例工作,稍加修改。在启动时,我看到HelloModule
和HelloResource
被选中并注册。
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时,我从tomcat获得了404页面。还有一点要注意,如果我访问http://localhost:8080/garbage,我也会获得404状态,但我没有获得404状态页面,只是一个空白页面。
由于这是一个3.0 servlet容器,我没有在web.xml中定义任何调度程序servlet。它看起来像:
<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-hello示例中的默认类,即HelloModule,HelloResource,Greeter和DefaultGreeter。在我看来,默认调度程序不处理定义的请求。有关排除故障的任何想法吗?
答案 0 :(得分:0)
逐步执行resteasy代码,我发现问题是在ResteastServletInitializer
中,用于servlet 3.0容器,如果没有定义Application
类,那么它会跳过HttpServlet30Dispatcher
的配置{1}}。有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 {
}