ステートレス Bean があるとします。
@Stateless(name = "fooBean")
@LocalBean
public class Foo {
...
}
テスト用のモックを作成したい (CDI を使用)
@Alternative @Specializes
public class FooMock extends Foo {
...
}
モックを に登録し、beans.xml
OpenEJB で実行すると、次の例外が発生します。
...
Caused by: javax.naming.NameAlreadyBoundException:
openejb/Deployment/fooBean/com.company.Foo!LocalBeanHome
Foo
コンテナがのインターフェースを作成@LocalBean
するように思えFooMock
ます。OpenEJB は、2 つのクラスを同じ生成インターフェースの同じ名前でバインドしようとしますが、これは不可能です。
もちろん、コメントアウトしてクラス内にいれば@Stateless
、問題なく動作します@LocalBean
。Foo
これを解決するためのアイデアや提案はありますか?