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

How can I inject two EJBs of same type?

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

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

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

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

SomeService class 看起来像这样。

public SomeService {

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

    @Inject
    private InjectionPoint injectionPoint;
}

问题是只调用了 s1s2 等于 s1.

如果 SomeServiceCDI bean 并且它的范围是 @Dependent 或没有范围(这也意味着 @Dependent 注入另一个 bean 时),这将起作用。它有什么范围?如果 SomeServiceEJB bean 而不是 CDI 这将不起作用。

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