0

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

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

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

4

1 回答 1

1

我发现在 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容器如果初始上下文已经过时,那么它应该刷新连接。只要一个集群成员处于活动状态,这就是它可以工作的方式。

于 2012-08-13T16:00:36.120 回答