我有5个项目-其中的4个在平台上运行(例如A,B,C和D),带有java -jar A.jar等和1个Web应用程序(E)。该Web应用程序部署在许多隔离的服务器上,其中一些服务器还同时运行A,B,C和D。

在Web应用程序的spring config文件中,我有4个RmiProxyFactoryBean声明,每个项目A,B,C和D都有一个声明,其中每个项目都有1个RmiServiceExporter

我的问题是,如果其中一个项目(A-D)未运行,则Web应用程序在启动时会引发异常。我已经尝试在使用这些服务的控制器中使用@Autowired(required=false)无效。为了使其正常工作,我必须去编辑Web应用程序的spring文件,以注释掉未运行项目的RmiProxyFactoryBean。有没有一种方法可以告诉RmiProxyFactoryBean尝试检索bean,如果失败了,就不用担心-与自动接线的required=false非常相似?

我的配置当前看起来像这样:

<bean class="org.springframework.remoting.rmi.RmiServiceExporter">
    <property name="service"          ref="diagramAssociationService" />
    <property name="serviceName"      value="diagramAssociationService"/>
    <property name="serviceInterface" value="com.act.xv.service.IDiagramAssociationService"/>
</bean>


<bean id="diagramAssociationService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
    <property name="serviceUrl" value="rmi://${xv.deploy.location}/diagramAssociationService"/>
    <property name="serviceInterface" value="com.act.xv.service.IDiagramAssociationService"/>
    <property name="refreshStubOnConnectFailure" value="true" />
</bean>

最佳答案

在您的RmiProxyFactoryBean中,还将lookupStubOnStartup属性设置为“false”。这应防止客户端代理在启动时引发异常。

10-06 07:03