我有这个场景,我在一个jar文件中有我的EJB3 bean,成功部署到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
}
}
答案 0 :(得分:0)
Whoopdicity博客:Developing a dynamic JEE service client with CDI 似乎有你想要的东西。最后声称你可以这样做:
public class MyServiceConsumer {
@Inject @ServiceClient
private MyBusinessService service;
...
}
而不是
public class MyServiceConsumer {
@EJB(lookup="...")
private MyBusinessService service;
...
}