WebSphere上のローカルとリモートの両方のEJBを構成する方法
-
26-09-2019 - |
質問
私はbith @localと@Remote注釈をステートレスEJB SessionBeanのを持っています。コードは、WebLogic Serverで正常に動作しています。しかしWebSphereへそれを導入するには例外を以下与えます。
bm.ejs.container.EJBConfigurationException:BUSINESS_INTERFACE_DESIGNATED_AS_BOTH_REMOTE_AND_LOCAL: 'oracle.odc.session.ODCSession'
oracle.odc.session.ODCSessionビジネス・インターフェース・クラスは、リモートとローカルの両方にすることはできません。
は、リモートとローカルの呼び出しのために別々のEJBを記述することなく、それを動作させるためにそこに任意の回避策はありますか?
解決
一つの回避策は、例えば、メソッド宣言とベースインタフェースを有する&ローカルインタフェース&リモートintefaceをを有する、ベースインタフェースを延びていることである。
public interface MyEJBBase {
public void foo();
public void bar();
}
@Local
public interface MyEJBLocal extends MyEJBBase {}
@Remote
public interface MyEJBRemote extends MyEJBBase {}
他のヒント
私の知る限り方法はありません、エラーはかなり説明的なようです。
EJB 3.2仕様のセクション4.9.7から、
同じビジネス・インターフェースは、ローカルとリモートの両方することはできません Beanのビジネス・インタフェースます。
あなたは、回避策として、サブインターフェイスを使用することができます:
public interface MyInterface { /* all the methods */ }
public interface MyRemoteInterface extends MyInterface { /* empty */ }
@Stateless
@Remote(MyRemoteInterface.class)
@Local(MyInterface.class)
public class MyBean { /* ... */ }
リモートインタフェースのメソッドのパラメータと戻り値は、パスごとの値になることに注意してくださいが、ローカルインタフェースのメソッドのパラメータと戻り値は、参照渡しされます。
所属していません StackOverflow