質問

私は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 { /* ... */ }

リモートインタフェースのメソッドのパラメータと戻り値は、パスごとの値になることに注意してくださいが、ローカルインタフェースのメソッドのパラメータと戻り値は、参照渡しされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top