RmiProxyFactoryBean + Autowired (обязательно = false) - PullRequest
3 голосов
/ 20 сентября 2011

У меня 5 проектов, 4 из которых выполняются на консоли (скажем, A, B, C и D) с java -jar A.jar и т. Д., И 1 веб-приложение (E). Веб-приложение развернуто на нескольких изолированных серверах, на некоторых из которых также работает комбинация A, B, C и D.

В весеннем конфигурационном файле для веб-приложения у меня есть 4 RmiProxyFactoryBean объявления, по одному для каждого из проектов A, B, C и D, где у каждого из этих проектов есть 1 RmiServiceExporter.

Моя проблема заключается в том, что веб-приложение выдает исключение при запуске, если один из проектов (A-D) не запущен. Я пытался использовать @Autowired(required=false) в контроллерах, использующих эти службы, но безрезультатно. Чтобы заставить его работать, мне нужно отредактировать весенний файл веб-приложения, чтобы закомментировать RmiProxyFactoryBean для проектов, которые не запущены. Есть ли способ сообщить RmiProxyFactoryBean, чтобы он пытался получить бин, и если он потерпит неудачу, не беспокойтесь - во многом аналогично 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>

1 Ответ

3 голосов
/ 09 ноября 2011

В вашем RmiProxyFactoryBean также установите для свойства lookupStubOnStartup значение false.Это должно препятствовать тому, чтобы клиентский прокси генерировал исключение при запуске.

...