如何注入两个相同类型的EJB?

时间:2015-10-02 14:52:15

标签: ejb cdi

我正在尝试注入两个具有不同注释的相同类型的EJB。 但注入的实例是相同的。

@Path("/some")
public class SomeResource {

    @Inject
    @SomePostConstructionAnnotationForSomeService("this")
    private SomeService s1;

    @Inject
    @SomePostConstructionAnnotationForSomeService("that")
    private SomeService s2;
}

SomeService类看起来像这样。

public SomeService {

    @PostConstruct
    private void constructed() {
        // find the annotation and do something else.
    }

    @Inject
    private InjectionPoint injectionPoint;
}

问题是只调用s1s2等于s1

1 个答案:

答案 0 :(得分:2)

如果SomeServiceCDI bean并且其范围是@Dependent或没有范围(在注入另一个bean时也意味着@Dependent),这将有效。它有什么范围?如果SomeServiceEJB bean而不是CDI,那么这项工作就无法完成。

<强>更新 您可以将SomeService移动到基类,并通过扩展此类并注入这些EJB来创建两个不同的EJB bean。