1

我想知道我是否可以将ServiceLoaderEJB 和 Java EE 6 的注入结合起来。

想象一下,我有一个ServiceI可以由两个 EJB 无状态 beanBeanABeanB.

如果我在其中注册这两个类,MEAT-INF/services它们将以 Java SE 方式实例化,而不是由应用程序容器管理(就像您使用 时一样@Inject)。这意味着注释喜欢@Inject@PostConstruct不会被解析。

是否有可能有类似 a 的东西,ServiceLoader它允许我通过 EJB bean 实现给定的接口并根据某些标准返回一个?

4

1 回答 1

1

我找到了解决方案。

如果两个 bean 都实现了Service接口,您可以执行以下操作:

@Inject
private javax.enterprise.inject.Instance.Instance<Service> services

services实现Iterator<Service>并将允许循环遍历实现该Service接口的所有 bean。

然后,您可以根据某些标准选择其中一种实现,并且您拥有ServiceLoaderEJB 的等价物!

于 2014-05-29T11:38:13.913 回答