инжекция пружинной зависимости с использованием RMI - PullRequest
1 голос
/ 07 июля 2011

предположим, что у нас есть 2 проекта ProjectA (внешний интерфейс) и ProjectB (внутренний конец) и 2 класса ClassA в ProjectA и ClassB в ProjectB. Теперь мне нужно получить экземпляр ClassB в ClassA. Вопрос в том, как организовать внедрение ClassB в ClassA с помощью Spring и RMI? Что добавить в spring.xml? Я новичок в Java, поэтому, если вы можете предоставить ответ с примерами, пожалуйста. Заранее спасибо !!

public void initializeManager() {
  InitialContext context = null;
  if (manager == null) {
    try {
      Properties props = TaxFormsConfiguration.getInstance().getProperties();
      context = new InitialContext(props);
      manager = (EFormsManager) context.lookup("taxsystem/EFormsManagerFacade/remote");
      if (manager == null) {
        throw new RuntimeException("EFormsManager is null.");
      }
    } catch (Exception e) {
      logger.error("error in EFormsActionManager.initializeManager: " + e.getMessage());
    }
  }
}

1 Ответ

2 голосов
/ 07 июля 2011

Проверка Ссылка на пружину для удаленного взаимодействия .Yuu может найти пример там (глава 19.2 Представление сервисов с использованием RMI)

Вместо поиска по контексту вы объявите ваши bean-компоненты в XML и получите их через контекст приложения Spring, например:

ApplicationContext context = new ClassPathXmlApplicationContext(yourxmlname);
EFormsManager eFormsManager= (EFormsManager)context.getBean("eFormsManager");

XML на стороне RMI-сервера:

<bean id="eFormsManager" class="example.EFormsManagerImpl">
    <!-- any additional properties, maybe a DAO? -->
</bean>

<bean class="org.springframework.remoting.rmi.RmiServiceExporter">
    <!-- does not necessarily have to be the same name as the bean to be exported -->
    <property name="serviceName" value="EFormsManagerService"/>
    <property name="service" ref="eFormsManager"/>
    <property name="serviceInterface" value="example.EFormsManager"/>
    <!-- defaults to 1099 -->
    <property name="registryPort" value="1199"/>
</bean>

XML на стороне клиента RMI:

<bean id="eFormsManager" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
    <property name="serviceUrl" value="rmi://HOST:1199/EFormsManagerService"/>
    <property name="serviceInterface" value="example.EFormsManager"/>
</bean>
...