如何在运行时动态查找 EJB



我有这样的场景,我的 EJB3 bean 在一个 jar 文件中,成功部署到 Jboss EAP-6.4。

然后我有另一个 Web 项目,在 REST POJO 类中查找这些 EJB。我目前可以使用 @Inject@EJB 从 Web 项目内部访问 EJB,但我的用例是我不知道我需要加载哪些 bean,直到运行时并且列表不是静态的,所以我可能需要查找 10 个 EJB 或没有针对特定请求等。

我知道我可以使用

InitialContext.lookup('ejb:/.....')

从 Web 项目内部检索我的 EJB bean,但是有没有办法我可以在没有往返的情况下检索它们(我相信),或者也许我只是在寻找一种更优雅的方法,可以在运行时进行 EJB 查找,就像静态类型的 @EJB@Inject 版本一样。

任何建议将不胜感激。

编辑

在我的 REST POJO 类中,我不想硬编码任何@Inject或@EJB注释,而是我希望当请求进来时,我查找(因为缺乏更好的词)将处理请求的 EJB,所以所有的决定都是在运行时做出的,如下所示

@Path("/path")
public class TestService {
    @GET("/{id}")
    public String loadGetPath(@Param id int id){
        //at this point i want to dynamically resolve the EJB based on 
        //the value of id
    }
}

Whoopdicity 博客:使用 CDI 开发动态 JEE 服务客户端似乎有你想要的东西。最后,它声称您可以执行以下操作:

public class MyServiceConsumer {
    @Inject @ServiceClient
    private MyBusinessService service;
    ... 
}

而不是

public class MyServiceConsumer {
    @EJB(lookup="...")
    private MyBusinessService service;
    ... 
}

最新更新