发表于: 2020-09-07 00:03:06

1 1482


今日完成:

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的简单使用。


返回列表 返回列表
评论

    分享到