4

初歩的に聞こえるかもしれませんが、次のシングルトン Bean について疑問に思っています。

@Startup
@Singleton
@LocalBean
public class MyServiceBean {
    public String sayHello() { return "Hello"; }
}

ここで、「リモート」クライアントがこの Bean を使用する必要があると思うので、この Bean にリモート インターフェイスを追加します。

@Remote
public interface MyService {
    String sayHello();
}

Bean に新しいリモート インターフェイスを実装させることはできますか?

"MyServiceBean" が "MyService" リモート インターフェイスを実装すると、"remote-interface-view" を持つ Bean になりますが、Web を検索したところ、アノテーション "LocalBean" を持つ Bean は "インターフェイスビューなし」。

それは働くことができますか?または、Local インターフェースを作成して LocalBean アノテーションを削除する必要がありますか?

より深い考え...「リモートビュー」、「ローカルビュー」、および「インターフェースなしのビュー」が1つのBeanにすべて存在できる3種類のビューである場合....? それらすべてを実装する Bean を使用できますか?

@Local
@Remote
@LocalBean
public class Possible implements PosLoca, PosRemote {}

……本当に困った……

4

1 に答える 1

3

はい、Bean が複数のビュー (リモート ビジネス、ローカル ビジネス、インターフェースなし) を公開することは可能です。

コンポーネントは同じにすることができます - 別のアクセス方法を追加するだけです。

EJB 3.1 FR仕様を見てみましょう。

4.4.2.2 複数のクライアント ビューを公開するセッション Bean (p. 86)。

package com.acme;

@Singleton(name="Shared")
@LocalBean
@Remote(com.acme.SharedRemote.class)
public class SharedBean { ... }

1 つの注意点 - あなたが投稿した例は、すぐに使えるとは思いません。インターフェイス参照を指定せずに使用し@Remoteています。@Localコンテナがどのインターフェースが何であるかを判断することはないと思います。を指定する@Remote(clazz)か、インターフェイス自体に として注釈を付けます@Remote

于 2012-11-15T09:15:47.767 に答える