我有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”。这应防止客户端代理在启动时引发异常。