我有5个项目 - 其中4个在控制台上运行(例如A,B,C和D),java -jar A.jar
等和1个Web应用程序(E)。 Web应用程序部署在多个隔离的服务器上,其中一些服务器还运行A,B,C和D的组合。
在Web应用程序的spring配置文件中,我有4个RmiProxyFactoryBean
声明,每个项目A,B,C和D一个,其中每个项目都有1 RmiServiceExporter
。
我的问题是,如果其中一个项目(A-D)没有运行,Web应用程序会在启动时抛出异常。我尝试使用这些服务在控制器中使用@Autowired(required=false)
无济于事。为了使其工作,我必须编辑Web应用程序弹簧文件以注释掉RmiProxyFactoryBean
未运行的项目。有没有办法告诉RmiProxyFactoryBean
尝试检索bean,如果失败则不要担心 - 与required=false
使用autowire的方式类似?
我的配置目前看起来像这样:
<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>
答案 0 :(得分:3)
在RmiProxyFactoryBean中还将lookupStubOnStartup属性设置为“false”。这应该可以防止客户端代理在启动时抛出异常。