2

問題: EJB を介した注入も使用されている場合、1 つのプロジェクトで REST サービスと SIP サーブレットを使用すると、例外が発生します。

問題を再現する手順は何ですか?

  1. プロジェクトに Sip サーブレットと REST サービスを追加する (REST サービスは Application を拡張するクラスを介してアクティブ化され、 @ApplicationPathで注釈が付けられます。これは Java EE 6 の「非 XML」アプローチであり、JAX-RS をアクティブ化します)

  2. REST サービスや SIP サーブレットを使用しても、エラーは発生しません。

  3. @EJB を介して注入されたサービスをプロジェクトに追加します。

  4. 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 サービスの呼び出しでもエラーは発生しません。

4

2 に答える 2