似乎我错过了一个基本概念,但即使经过几个小时的阅读,我现在也不知所措。
给出以下设置: Arquillian的Glassfish 4上的EE7 (伪)代码:
接口的多种实现:
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方法,该方法未在接口上定义。我只是无法找到一种方法来检索OrderActivity Bean的实例
(我希望避免引入&#34;硬编码&#34;特定限定符,因为它们仅用于测试。此外,具体实现存在于他们自己的项目中并按客户打包,所以我也不能使用一个“enumifed&#39; Qualifier”。)
任何想法?
答案 0 :(得分:2)
因为'Activity'是唯一实现的接口(并且不是java.io.Serializable / Externalizable或来自javax.ejb包),容器假定它是唯一的本地业务接口。要公开无界面视图,必须使用 @LocalBean
显式注释bean。