Java J2EE/EJB+;服务定位器:缓存EJB主查找结果是否安全?

Java J2EE/EJB+;服务定位器:缓存EJB主查找结果是否安全?,java,jakarta-ee,weblogic,service-locator,Java,Jakarta Ee,Weblogic,Service Locator,在J2EE应用程序中,我们在weblogic中使用EJB2 为了避免浪费时间来构建初始上下文和查找EJB主接口,我正在考虑 但是在web上搜索了几次之后,我发现即使经常建议将此模式用于InitialContext缓存,也有一些关于EJB主缓存的负面意见 问题: 缓存EJB主查找结果安全吗 如果一个my cluster节点不再工作,会发生什么情况 如果安装新版本的EJB而不刷新服务定位器的缓存,会发生什么 J2EE中ServiceLocator的目的是缓存EJB主页并减少昂贵的JNDI查找。它

在J2EE应用程序中,我们在weblogic中使用EJB2

为了避免浪费时间来构建初始上下文和查找EJB主接口,我正在考虑

但是在web上搜索了几次之后,我发现即使经常建议将此模式用于InitialContext缓存,也有一些关于EJB主缓存的负面意见

问题:

  • 缓存EJB主查找结果安全吗
  • 如果一个my cluster节点不再工作,会发生什么情况
  • 如果安装新版本的EJB而不刷新服务定位器的缓存,会发生什么
J2EE中ServiceLocator的目的是缓存EJB主页并减少昂贵的JNDI查找。它在Weblogic上是安全的,因为默认情况下EJB主节点在集群中是负载平衡的,这将自动允许故障切换到下一台服务器

此值由weblogic-ejb-jar.xml中的
home is clusterable
值控制,该值已记录在案,默认为
true

What will happen if I install a new version of the EJB without refreshing 
the service locator's cache ?
我自己还没有试过做这样的改变。然而,我猜,作为构建/部署的一部分,您的服务定位器类也会随着对EJB的更改而重新部署,从而进行新的查找

如果您的客户机在EJB更改期间不受影响,那么当您对其调用方法时,缓存的EJBHome将返回一个过时的引用。因此,您必须强制刷新客户端

如果我安装了一个新的 没有刷新的EJB版本 服务定位器的缓存

一旦您的应用程序上线,新安装的频率应大大低于EJBHome请求的频率。
因此,您应该关注频繁的实时操作,而不是瞬态开发操作。
在设计中考虑在必要时使缓存失效的能力

缓存EJB主查找是否安全 结果如何

如果有一个用户访问我的群集,会发生什么 节点不再工作了

如果您的服务器配置为群集/WLM,则请求应自动故障切换到群集中的另一台服务器。路由信息编码在存根IOR中

如果我安装了一个新的 没有刷新的EJB版本 服务定位器的缓存

假设您更新了bean而不是组件或主接口,那么一切都会继续工作。EJBHome实际上是一个无状态会话bean,因此可以继续从相同的服务器(如果可用)访问请求,或者在集群中的不同服务器(如果不可用)上访问请求

注意,EJB3中的@EJB注入有效地鼓励了家庭缓存。(虽然,不可否认,它也允许SFSB缓存,尽管这显然是错误的,所以@EJB可能不是我声明的最好支持:-)

What will happen if I install a new version of the EJB without refreshing 
the service locator's cache ?