如果一个集群成员出现故障,Spring 如何知道刷新它是初始上下文



我正在使用 spring portlet mvc 作为我的前端,并连接到在 WAS 上运行的一些远程 EJB。现在,在我指定远程 EJB 查找 URL 的 Portlet 的配置文件中,由于 EJB 部署在集群 WAS 中,因此已将这些 url 指定为集群。所以网址看起来像:iiop://server1:port,iiop://server2:port .

现在为了节省资源,Spring mvc 缓存了初始上下文。现在我注意到,只要其中一台服务器启动,Spring 总是能够连接到远程 ejb。

这让我感到困惑,因为在查找初始上下文时解析了集群(因为缺乏更好的词),之后如果集群成员出现故障,应该会出现连接异常。那么,春天如何知道什么时候应该自动刷新其初始上下文,因为旧的上下文已经过时了?

我发现在applicationContext.xml文件中,有这样的声明:

<jee:remote-slsb id="remoteService" jndi-name="com.business.ejb.ServiceSLRemote" business-interface="com.business.ejb.ServiceSLRemote" cache-home="true" lookup-home-on-startup="false" resource-ref="false" refresh-home-on-connect-failure="true">
<jee:environment>
java.naming.factory.initial=${JAVA.NAMING.FACTORY.INITIAL}
java.naming.provider.url=${JAVA.NAMING.PROVIDER.URL}
</jee:environment>
</jee:remote-slsb>

refresh-home-on-connect-failure="true"告诉 spring 容器,如果初始上下文已过时,则它应该刷新连接。这就是只要一个集群成员处于活动状态,它就可以工作的方式。

最新更新