【问题标题】:ServiceLoader + EJB injectionServiceLoader + EJB 注入
【发布时间】:2014-05-29 10:51:58
【问题描述】:

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

假设我有一个接口 ServiceI 可以由两个 EJB 无状态 bean BeanABeanB 实现。

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

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

【问题讨论】:

    标签: java jakarta-ee ejb jboss7.x serviceloader


    【解决方案1】:

    我找到了解决办法。

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

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

    services 实现 Iterator&lt;Service&gt; 并允许循环访问所有实现 Service 接口的 bean。

    然后您可以根据某些标准选择其中一种实现,并且您拥有相当于 EJB 的 ServiceLoader

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      • 2012-07-02
      • 1970-01-01
      • 2014-04-25
      相关资源
      最近更新 更多