我想知道是否可以将ServiceLoader与EJB以及Java 6的注入结合起来。
假设我有一个接口ServiceI,可以由两个EJB无状态bean BeanA和BeanB实现。
如果我在MEAT-INF/services中注册这两个类,它们将以Java方式实例化,而不是由应用程序容器来管理(就像使用@Inject时一样)。这意味着像@Inject或@PostConstruct这样的注释不会被解析。
是否可能有类似于ServiceLoader的东西,允许我通过EJB实现给定的接口并根据某些条件返回接口呢?
发布于 2014-05-29 11:38:13
我找到了解决办法。
如果两个bean都实现了Service接口,则可以执行以下操作:
@Inject
private javax.enterprise.inject.Instance.Instance<Service> servicesservices实现Iterator<Service>,并允许循环执行实现Service接口的所有bean。
然后,您可以基于某些条件选择其中的一个实现,并且您有相当于ServiceLoader的EJB!
https://stackoverflow.com/questions/23931645
复制相似问题