アプリケーション クライアントからステートフル セッション Bean (SFSB) にアクセスできません。JBoss 5.0.1.GA を使用しています。アプリケーション クライアントと EJB は両方ともデプロイする EAR にパッケージ化されており、問題なく動作する他のアプリケーション クライアントがあります。これまで、私はステートレス セッション Bean (SLSB) しか使用していませんでしたが、私が理解している限り、SLSB と SFSB の違いは、アプリケーション クライアントからのアクセス方法には影響しません。
クラス/インターフェースの構造:
@Local public interface A {...}
@Stateless public class ABean implements A {...}
@Remote public interface B {...}
@Stateful public class BBean implements B {
@EJB private A anInstanceOfA;
@PostConstruct private void init() {
this.anInstanceOfA.someMethod();
}
}
アプリケーション クライアントは、「 JBoss 5 でアプリケーション クライアントを使用する方法」で説明されているように、「appclient-launcher」を介して実行されます。init() の実行中に (ローカル) ABean で someMethod() が呼び出されるまで、「BBean」のルックアップを行うことは正常に機能します。その呼び出し中に、コンテナーは InvalidStateException("Local call: security context is null") をスローします (根本的な原因として)。ステートフル Bean をステートレス Bean に変更すると、すべて正常に動作します (もちろん、状態が保持されないことを除きます)。興味深いことに、Web アプリケーション (JSF マネージド Bean) からまったく同じ SFSB を問題なく使用できます。
私は何か間違ったことをしていますか?アプリケーション クライアントから SFSB を使用するにはどうすればよいですか?
これまでのところ、この特定の問題について役立つものは何も見つかりませんでした。この例外は、[#JBAS-4317] Security Context over the invocationの同様のコンテキストで言及されていますが、完了としてマークされ、JBoss 5.0.0.Beta3 で修正されていることを考慮すると、同じ問題ではないようです。