我们想要使用本地或远程接口查找一堆服务(EJB)。如果我们有可能找到多个实现,那么无关紧要,因为如果我们允许这样做是有目的的。
由于我们无法直接访问EJB容器,因此我们需要使用JNDI查找。
目前,我们使用Context#listBindings("")
迭代上下文并检查每个绑定中返回的对象是否是上下文 - 在这种情况下我们递归调用查找 - 或者可以将其分配给我们的接口重新寻找 - 在这种情况下我们已经完成了。
然而,这样做可能会导致一大堆查询,因为我必须为我找到的每个子上下文调用list("")
(在更大的应用程序中可能会有很多)。
那么有没有办法在一次调用(或定义的调用次数)中在JNDI中进行基于类的查找?
顺便说一句,我们在JBoss 4.2.3.GA上这样做,所以我们无法访问Java EE 6 JNDI实现。
答案 0 :(得分:1)
总而言之:不。您的用例太特殊了。
但你有一些选择:
为什么不通过JNDI注册Spring ApplicationContext
?这样您就可以拨打getBean(type)
。
不是一次又一次地进行这些查找,而是在代码中添加一个工厂来缓存查找?
如何创建“Service Lookup EJB”?