我有这样的场景,我的 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;
...
}