JNDI按类查找

时间:2011-11-18 16:28:51

标签: java jndi

我们想要使用本地或远程接口查找一堆服务(EJB)。如果我们有可能找到多个实现,那么无关紧要,因为如果我们允许这样做是有目的的。

由于我们无法直接访问EJB容器,因此我们需要使用JNDI查找。

目前,我们使用Context#listBindings("")迭代上下文并检查每个绑定中返回的对象是否是上下文 - 在这种情况下我们递归调用查找 - 或者可以将其分配给我们的接口重新寻找 - 在这种情况下我们已经完成了。

然而,这样做可能会导致一大堆查询,因为我必须为我找到的每个子上下文调用list("")(在更大的应用程序中可能会有很多)。

那么有没有办法在一次调用(或定义的调用次数)中在JNDI中进行基于类的查找?

顺便说一句,我们在JBoss 4.2.3.GA上这样做,所以我们无法访问Java EE 6 JNDI实现。

1 个答案:

答案 0 :(得分:1)

总而言之:不。您的用例太特殊了。

但你有一些选择:

  1. 为什么不通过JNDI注册Spring ApplicationContext?这样您就可以拨打getBean(type)

  2. 不是一次又一次地进行这些查找,而是在代码中添加一个工厂来缓存查找?

  3. 如何创建“Service Lookup EJB”?