发表于: 2020-09-07 00:03:06
1 1484
今日完成:
spring rmi Demo.
RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务。
RMI(远程调用)是一种RPC模型之一,适用于在不考虑网络限制时(例如防火墙),访问/发布基于java的服务的场景。
项目目录
服务端:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 1.用RMI发布的接口实现类 -->
<bean id="personImpl" class="service.impl.PersonImpl" />
<!-- 2.利用Spring类发布这个RMI服务 -->
<bean id="service" class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="service">
<!-- 2.1指定服务的实现 -->
<ref bean="personImpl" />
</property>
<property name="serviceName">
<!-- 2.2指定服务的名字 -->
<value>person</value>
</property>
<property name="serviceInterface">
<!-- 2.3指定服务的接口 -->
<value>service.IPerson</value>
</property>
<property name="registryPort">
<!-- 2.4指定服务的端口 -->
<value>5923</value>
</property>
</bean>
</beans>
客户端
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="person" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceInterface">
<value>service.IPerson</value>
</property>
<property name="serviceUrl">
<value>rmi://localhost:5923/person</value>
</property>
</bean>
</beans>
发布服务:
public class RmiBootstrap {
public static void main(String[] args) throws InterruptedException {
new ClassPathXmlApplicationContext("server-rmi.xml");
Thread.sleep(1000 * 60 * 60 );
}
}
客户端使用服务
public class RmiInvoke {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("client-rmi.xml");
IPerson p = (IPerson) context.getBean("person");
System.out.println(p.getName());
System.out.println(p.getEmail());
}
}
测试结果
明天的计划:
拆分项目中的service来执行远程调用。
遇到的问题:
收获:
spring RMI的简单使用。
评论