我的情况是,在我的Web层中,我进行远程EJB查找并缓存初始上下文。现在,远程EJB部署在WAS集群中。因此,如果远程ejb跨server1,server2和server3部署并让我们第一次说,则缓存指向server1的初始上下文。
此服务器1关闭后,其他服务器仍在运行。但由于初始上下文被缓存,ejb调用失败。
现在简单的解决方案是删除缓存并每次都进行新的查找。但这会降低性能。有没有办法在这里拥有两全其美......可靠性和性能?
答案 0 :(得分:0)
corbaloc:
提供程序URL中的引导程序服务器列表仅在构造InitialContext
时使用。在构建上下文期间,客户端获取可以回答该上下文查找的服务器列表,之后仅使用该列表。如果提供程序URL中的引导程序服务器是群集成员,则只要至少有一个群集成员正在运行,InitialContext
将继续工作。因此,InitialContext
可以安全地缓存。
请注意,如果提供程序URL中的引导程序服务器不是群集成员,而是节点代理程序,则情况会有所不同。在这种情况下,InitialContext
引用特定于单个节点代理的上下文,并且当该节点代理关闭时查找将失败。即使在提供者URL中指定了多个节点代理,情况也是如此:在构造InitialContext
期间选择了一个节点代理,之后选择不会改变。