我有 5 个项目 - 其中 4 个在控制台(比如 A、B、C 和 D)上运行,带有java -jar A.jar
etc 和 1 个 Web 应用程序(E)。Web 应用程序部署在许多隔离的服务器上,其中一些服务器还运行着 A、B、C 和 D 的组合。
在 web 应用程序的 spring 配置文件中,我有 4 个RmiProxyFactoryBean
声明,每个项目 A、B、C 和 D 各有一个声明,其中每个项目都有 1 RmiServiceExporter
。
我的问题是,如果其中一个项目 (AD) 未运行,则 Web 应用程序在启动时会引发异常。我尝试@Autowired(required=false)
在使用这些服务的控制器中使用无济于事。为了让它工作,我不得不去编辑 web 应用程序 spring 文件来注释掉RmiProxyFactoryBean
那些没有运行的项目。有没有办法告诉 anRmiProxyFactoryBean
尝试检索 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>