【问题标题】:RmiProxyFactoryBean + Autowired(required=false)RmiProxyFactoryBean + Autowired(必需=假)
【发布时间】:2011-09-20 11:23:17
【问题描述】:

我有 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 应用程序 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>

【问题讨论】:

    标签: java spring rmi dependency-management spring-remoting


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-29
      相关资源
      最近更新 更多