2016-12-09 8 views
0

私はresteasy 3.0.19、guice 4.0、およびtomcat 7.0.73を一緒に使用しようとしていますが、私は404応答以外のものを取得しようとしています。トラブルシューティングのために、私はguice-helloの例を少し修正してみました。起動時に、HelloModuleHelloResourceが取得され、登録されていることがわかりました。私はhttp://localhost:8080/people.service/hello/testにアクセスしようとすると、resteasy + tomcatサーブレットコンテナ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 

はしかし、私は、Tomcatから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、グリーター、およびDefaultGreeterある:それはちょうどのように見えます。既定のディスパッチャが定義された要求を処理していないように見えます。これを解決するためのアイデアはありますか? RESTEasyのコードを介してステッピング

答えて

0

は、私は、問題が定義されApplicationクラスが存在しない場合、サーブレット3.0コンテナを使用さResteastServletInitializerに、それは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 { 
} 

ソリューションは、以下のクラスを定義することでした