EJB への参照を非 EJB クラス (EJB で静的メンバーとして使用される) からのメンバーとして保存するという問題があります。
私が持っていると言う
@EJB(...)
@Stateless
public Class SessionBean implements MySession{
protected static MyHelper helper = new MyHelper();
}
public Class MyHelper{
protected AnotherSessionBean ejb = lookup("jndi");
public void doSomething(){
ejb.foo();
}
}
ヘルパー クラスは EJB ではないため、インスタンス化するメンバーの int と呼ばれるルックアップのメソッドがあります。このコードを使用すると、実行時に例外 java.lang.NoClassDefFoundError: Could not initialize class on the SessionBean クラスが発生しました。
MyHelper をこれに変更すると、うまくいきました:
public Class MyHelper{
protected AnotherSessionBean getEjb(){
return (AnotherSessionBean)lookup("jndi");
}
public void doSomething(){
getEjb().foo();
}
}
なぜ最初の方法がうまくいかなかったのか疑問に思っています...