缓存初始上下文时,远程查找 ejb 失败



我遇到这样一种情况:在我的 Web 层中,我执行远程 EJB 查找并缓存初始上下文。现在,远程 EJB 部署在 WAS 集群中。因此,如果远程 EJB 部署在服务器 1、服务器 2 和服务器 3 上,让我们说第一次,那么指向服务器 1 的初始上下文将被缓存。

在此服务器 1 关闭后,其他服务器仍处于运行状态。但是,由于缓存了初始上下文,因此 ejb 调用将失败。

现在,简单的解决方案是删除缓存并每次都进行新的查找。但这会降低性能。有没有办法在这里两全其美...可靠性和性能?

仅在构造InitialContext时使用corbaloc:提供程序 URL 中的引导服务器列表。在构造上下文期间,客户端将获得可以应答该上下文查找的服务器列表,之后仅使用该列表。如果提供程序 URL 中的引导服务器是集群成员,那么只要至少有一个集群成员正在运行,InitialContext将继续工作。因此,可以安全地缓存InitialContext

请注意,如果提供程序 URL 中的引导服务器不是集群成员,而是节点代理,则情况会有所不同。在这种情况下,InitialContext引用特定于单个节点代理的上下文,当该节点代理关闭时,查找将失败。即使在提供程序 URL 中指定了多个节点代理,情况也是如此:在构建InitialContext期间选择其中一个节点代理,之后选择不会更改。

相关内容

最新更新