0

EJB 3.0 モジュールを含むアプリケーションがあります。EJB 実装でビジネス ロジックをオーバーライドしたいと考えています。出来ますか?

オーバーライドしたら、オーバーライドされたセッション Bean を検索または注入するにはどうすればよいですか?

public interface TestRemote {
    public String result(String arg1, String arg2);
}

@Stateless
public class TestBeanOne implements TestRemote {
    public String result(String arg1, String arg2) {
        return "TestBeanOne " + arg1 + arg2;
}

//Is the below code possible?
public class TestBeanTwo extends TestBeanOne {
    public String result(String arg1, String arg2) {
        return "TestBeanTwo " + arg1 + arg2;
}
4

3 に答える 3

0

TestBeanTwoクラスに意図的なものがないと仮定すると、クラスは@StatelessステートレスセッションBeanではないため、EJBとしてルックアップまたはインジェクトすることはできません。ファイル@Stateless内のまたは宣言があっても、 Beanクラスはインターフェースを公開せず、たまたま利用可能なインターフェースなしのビューを公開するだけです。ejb-jar.xmlTestBeanTwoTestRemotepublic String result(String, String)

EJB 3.1仕様は、セクション4.9.2.1 Session Bean Superclasses(121ページ)で次のように述べています。

セッションBeanクラスには、それ自体がセッションBeanクラスであるスーパークラスを含めることができます。ただし、この場合のアノテーションまたはデプロイメント記述子の処理に適用される特別なルールはありません。特定のセッションBeanクラスを処理するために、スーパークラス自体がセッションBeanクラスであるかどうかに関係なく、すべてのスーパークラス処理は同一です。この点で、スーパークラスとしてのセッションBeanクラスの使用は、実装継承の便利な使用法を表すだけであり、コンポーネント継承のセマンティクスはありません。

そして、仕様の同じページで:

特定のセッションBeanによって公開されるクライアントビューは、セッションBeanを定義するサブクラスにも継承されません。

仕様からのこれらの2つの抜粋は、質問を十分に説明していると思います。

于 2013-02-15T00:04:14.277 に答える
0

EJB は依然として単純な Java クラスであることを理解しておく必要があります。Java クラスで可能なことはすべて、EJB で可能です。そのため、セッション Bean と同じようにクラスを検索するだけです。

于 2013-02-14T11:08:57.087 に答える
0

はい、そのコードは可能です。注釈を付けるだけです。注釈は、デプロイメント記述子によってオーバーライドできます。

于 2013-02-14T05:37:07.410 に答える