java - 使用 RMI 进行 Spring 依赖注入(inject)

标签 java spring dependencies rmi code-injection

假设我们有 2 个项目 ProjectA(前端)和 ProjectB(后端),以及 ProjectA 中的 2 个类 ClassA 和 ProjectB 中的 ClassB。 现在我需要获取ClassA中ClassB的实例。 问题是如何使用Spring和RMI组织ClassB到ClassA的注入(inject)? 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());
    }
  }
}

最佳答案

检查Spring reference for remoting 。 Yuu 可以在那里找到一个示例(第 19.2 章使用 RMI 公开服务)

您将在 XML 中声明您的 bean 并通过 Spring 应用程序上下文获取它们,而不是上下文查找,例如:

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

RMI 服务器端的 XML:

<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>

RMI 客户端上的 XML:

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

关于java - 使用 RMI 进行 Spring 依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6610241/

相关文章:

objective-c - 在 XCode 4 中添加依赖项目

java - 两个模块和一项服务。如何处理?

python - 创建独立的隔离Python

java - Spring Integration Java Config/DSL 中没有方法的服务激活器

java - 在spring ioc中定义一个bean之外的集合

java - Spring Integration - Java 配置 - 事务感知流程

java - Spring DataSourceTransactionManager 未提交

java - spring httpsession 和 tomcat session 的区别

java - Xcode 中的 "Add unimplemented methods"类似于 Eclipse

java - 是否可以使用 jmx 监控 gc 压缩?