問題: EJB を介した注入も使用されている場合、1 つのプロジェクトで REST サービスと SIP サーブレットを使用すると、例外が発生します。
問題を再現する手順は何ですか?
プロジェクトに Sip サーブレットと REST サービスを追加する (REST サービスは Application を拡張するクラスを介してアクティブ化され、 @
ApplicationPath
で注釈が付けられます。これは Java EE 6 の「非 XML」アプローチであり、JAX-RS をアクティブ化します)REST サービスや SIP サーブレットを使用しても、エラーは発生しません。
@EJB を介して注入されたサービスをプロジェクトに追加します。
REST サービスを使用すると、次の例外が発生します。
エラー:
Exception sending request destroyed lifecycle event to listener instance of class org.jboss.weld.servlet.WeldListener: java.lang.NullPointerException
at org.jboss.weld.context.AbstractBoundContext.deactivate(AbstractBoundContext.java:71) [weld-core-1.1.8.Final.jar:2012-04-29 10:45]
at org.jboss.weld.context.http.HttpRequestContextImpl.deactivate(HttpRequestContextImpl.java:86) [weld-core-1.1.8.Final.jar:2012-04-29 10:45]
at org.jboss.weld.servlet.WeldListener.requestDestroyed(WeldListener.java:103) [weld-core-1.1.8.Final.jar:2012-04-29 10:45]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185) [jbossweb-7.0.16.Final.jar:]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.16.Final.jar:]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.16.Final.jar:]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.16.Final.jar:]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.16.Final.jar:]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:679) [jbossweb-7.0.16.Final.jar:]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:931) [jbossweb-7.0.16.Final.jar:]
at java.lang.Thread.run(Thread.java:680) [classes.jar:1.6.0_37]
私は使っている:
- モビセント: mss-2.0.0.FINAL-jboss-as-7.1.2.Final
- OS: Mac OS X 10.6.8、Ubuntu 12.04、Windows 8
また、テスト プロジェクトがアップロードされ、実際のテスト ケースの実行に使用できるGoogle Codeにも問題を投稿しました。デプロイされた REST サービスを呼び出すテスト ファイルが src/test/java にあります。元のプロジェクトでは、これにより上記のエラーが発生するはずです。
SIP サーブレットがアクティブ化されていない場合 (sip.xml の名前を変更するなど)、REST サービスを呼び出してもエラーは発生しません。
SIP サーブレットがアクティブ化され、挿入されたサービスHelloWorldService
が削除された場合、REST サービスの呼び出しでもエラーは発生しません。