0

基本的な概念が欠けているように見えますが、何時間も読んだ後でも、どういうわけか立ち往生しています。

次のセットアップが与えられた場合: Glassfish 4 上の EE7、Arquillian (疑似) コード:

インターフェイスの複数の実装:

public interface Activity {
    public void doFoo();
}

@Stateless
public class StockActivity implements Activity {
    @Override
    public void doFoo(){
        ...
    }
}


@Stateless
public class OrderActivity implements Activity {
    @Override
    public void doFoo(){
        ...
    }

    public void doSomeOtherStuff(){
        ...
    }   
}

ビジネスコードのような選択

@Any
@Inject
Instance<Activity> activities;

これまでのところ、すべて正常に動作しています...しかし、インターフェイスで定義されていない Arquillian-Test で doSomeOtherStuff-method を呼び出したいと思います。OrderActivity Bean のインスタンスを取得する方法がわかりません

(「ハードコードされた」特定の修飾子の導入は避けたいと思います。これらはテストにのみ使用されるためです。また、特定の実装は独自のプロジェクトに存在し、顧客ごとにパッケージ化されるため、「列挙された」ものも使用できません'修飾子。)

何か案は?

4

1 に答える 1

2

わかりました、自分で取得しました。参考までに、解決策は次のとおりです。

'Activity' が唯一の実装されたインターフェースであるため (java.io.Serializable/Externalizable または javax.ejb パッケージからのものではない)、コンテナーはそれを唯一のローカル ビジネス インターフェースと見なします。非インターフェース ビューを公開するには、Bean に@LocalBeanで明示的にアノテーションを付ける必要があります。

于 2013-11-12T09:22:08.177 に答える