2016-02-19 63 views
2

好日子家伙一个EJB,如何动态地查找在运行时

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

然后我有另一个Web项目,查找这些EJB里面的REST POJO类。我目前可以使用@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

只是让“未知”的EJB实现共同的接口并注入是不是? – BalusC

+0

@BalusC,感谢您的答案,但我已经这样做。而这并不能解决我的主要问题,即我想动态地在运行时执行查找,也是我希望在运行时动态查找的具体bean实现,而不是实际上为空的接口。 –

+0

然后我不明白你的具体问题。如果提供了合适的实现,则注入接口应该可以很好地工作。 – BalusC

回答

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; 

    ... 
} 
+0

谢谢你的回应,但是我不确定解释是否符合我的要求,欢迎您加入。我也编辑了这个问题来添加一个小代码示例,也许这会使我的初始问题更具可读性。 –

相关问题