我的机器中有两个配置文件,在一个配置文件中我部署了一个 EJB,可以从另一个配置文件中的 POJO 中查找该 EJB。但是我从中进行查找的配置文件最终会在其自己的节点中进行查找。如果我将这两个应用程序部署在两台不同的机器上,我可以执行查找。有人告诉我在 WAS 中创建虚拟机名称会有所帮助,但我不知道如何使用它。有人可以帮助我如何解决这个问题吗?
谢谢,
克什蒂·古普塔
“但我从中进行查找的配置文件最终会在其自己的节点中进行查找。”
让我确保我明白你在说什么:
您的应用程序在配置文件 A 中运行,您的 EJB 部署在配置文件 B 中。
在配置文件 B 中,我们有一些节点,N1,N2,......在进行查找时,应用程序连接到其中一个节点,例如 N2,默认情况下,在 N2 中进行查找时,我们会看到与节点 N2 关联的 JNDI 树,这可能不是 EJB 注册其名称的地方。
那是你的问题吗?
如果是,那么有两种可能的方法。
选项 1:从任何节点都可以看到整个 JNDI 树。请参阅InfoCenter 中的 JNDI 图。然后,您可以通过指定这种样式的路径来导航层次结构
cells/<mycell>/nodes/<ejbNode>/... etc.
从任何地方。
这种方法的问题是应用程序需要了解单元的拓扑结构。如果节点名称(或集群名称)应更改,则查找字符串将更改。这是一个脆弱的解决方案。
选项 2:相反,将 EJB 寄存器放在 JNDI 树中的稳定位置。这就是单元持久分区的用途。您首先修改 EJB(或其 DD)以将名称指定为
cell/persistent/myEjb
然后在查找中使用该字符串。
这几天在客户机器上安装时遇到了这个问题。我花了 4 天的时间苦苦挣扎,为什么它不起作用我不知道你是如何这么快发现这个的,但解决方案非常简单:
如果您在同一主机名上有 2 个 WAS,则客户端 WAS 认为服务器是相同的,因此它将避免通过 CORBA 进行查找,我们解决了将 2 个 WAS 绑定到 2 个不同的主机名和 IP 地址的问题。这可以解决问题。