gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:01:19 25 4
gpt4 key购买 nike

假设我们有 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com