@EJBアノテーションを使用してEJB(3.0)を挿入するRESTfulサービスがあります。Beanでgreeting()メソッドにアクセスしようとすると、NullPointerExceptionが発生するため、このインジェクションは機能しません。
この正確なコードはGlassfish3.1で機能しますが、WAS8.0.2では失敗します。ただし、まったく同じアプローチを使用してサーブレットから参照された場合、インジェクションは同じアプリケーションで機能します
@Stateless
@Path("/hello")
public class HelloRestService {
@EJB
public HelloInterface helloImpl;
}
私の豆はこんな感じ
package impl;
@Stateless
@Local
public class HelloImpl implements iface.HelloInterface {
@Override
public String greeting() {
return "Hello developer";
}
}
サーバーの起動時に出力されるjndi名を使用して、実装のルックアップを実行しようとしました
helloimpl = (HelloImpl) new InitialContext().lookup("java:global/REST_EAR/REST_WAR/HelloImpl!iface.HelloInterface");
ただし、これによりClassCastExceptionが発生します
java.lang.ClassCastException: iface.EJSLocal0SLHelloImpl_f8ca883b incompatible with impl.HelloImpl
私はこれをたくさん読むことができますか..?
現在、JAX-RS1.1の実装としてWinkを使用しています。以前にJerseyを使用したことがあり、同じ結果が得られました。
これがJAX-RS/WASの問題であり、DIが失敗する原因であるかどうかを誰かが知っていますか?以前に@EJBインジェクションがサーブレットから機能すると述べたように、これは間違いなくRESTと関係があります。