关闭

Spring RMI学习

279人阅读 评论(0) 收藏 举报
分类:

传统的RMI发布服务需要经过很麻烦的步骤,但是在Spring中提供了RmiServiceExporter能够很简单的提供这种RMI服务。
RmiServiceExporter 将Bean包装在一个适配器类中,然后适配器类被绑定到RMI注册表中,并且将请求代理给服务类


RmiProxyFactoryBean生成一个代理对象,该对象代表客户端来负责与远程单RMI服务进行通信。


具体的流程,这里展示一个简单版本的
1,建立服务的接口类
2,实现接口类的具体服务类
3,服务端xml文件配置
4,主函数启动服务端

5,客户端xml配置
6,客户端主函数调用


1,建立服务端接口
<span style="font-size:18px;">/**
 * 服务接口
 * @author hl174
 * @version 2016年6月1日 下午2:47:53
 *
 */
public interface IHelloService {

   String sayHello(String name);
}
</span>



2,服务端接口实现类
public class IHelloServiceImpl implements IHelloService{

      @Override
      public String sayHello(String name) {
           System. out .println("Hello " + name );
              return "Hello " + name ;
     }

}


3,服务端文件配置
<? xml version= "1.0" encoding = "UTF-8"?>
< beans xmlns ="http://www.springframework.org/schema/beans"
  xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
  xmlns:p= "http://www.springframework.org/schema/p"
  xsi:schemaLocation ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" >

< bean id= "helloService" class = "day0601.IHelloServiceImpl"  />

< bean class ="org.springframework.remoting.rmi.RmiServiceExporter"
      p:service-ref ="helloService"
      p:serviceName ="HelloService"
      p:serviceInterface ="day0601.IHelloService" /> <!-- 引用上面的Bean表明要发布一个RMI服务 -->    <!-- 给RMI服务命名 --> <!-- 服务实现的接口 -->
</ beans>

如果要改变注册服务端口号和主机
p:registerPort=""
p:registerHost=""

4,服务端启动
/**
 * RMI服务端
 * @author hl174
 * @version 2016年6月1日 下午2:50:38
 *
 */
public class RMIServer {
public static void main(String[] args) {
      new ClassPathXmlApplicationContext("/day0601/remote-server-context.xml" );
}
}


5,客户端配置
<? xml version= "1.0" encoding = "UTF-8"?>
< beans xmlns ="http://www.springframework.org/schema/beans"
  xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
  xmlns:p= "http://www.springframework.org/schema/p"
  xsi:schemaLocation ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" >

  <bean id= "ClientHelloService" class ="org.springframework.remoting.rmi.RmiProxyFactoryBean"
     p:serviceUrl ="rmi://localhost/HelloService"
     p:serviceInterface ="day0601.IHelloService" />   <!-- 服务提供的接口 -->
</ beans>

6,启动客户端
/**
 * RMI客户端
 * @author hl174
 * @version 2016年6月1日 下午3:14:30
 *
 */
public class RMIClient {
public static void main(String[] args) {
     ApplicationContext ctx = new ClassPathXmlApplicationContext(
            "/day0601/remote-client-context.xml" );
    IHelloService helloService = (IHelloService) ctx
            .getBean( "ClientHelloService" );
    String result = helloService.sayHello( "雷爷" );
    System. out.println( "客户端:" +result );
}
}
则服务端的控制台如下:



客户端的控制台如下:


这样的话获取到HelloService的Bean后,可以调用其接口中的所有公共方法
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

如何在Spring框架中使用RMI技术

如何在Spring框架中使用RMI技术
  • wangshuxuncom
  • wangshuxuncom
  • 2015-01-25 05:50
  • 2501

Java RMI实现以及Spring封装RMI实现小结

最近应用到了Java RMI技术,所以总结一下RMI的使用,另外EJB的实现也是以Java RMI为基础核心的。RMI远程方法调用,可以跨机器通过网络调用,不过Java RMI只支持两边都是Java程序,如果要实现完全两边异构,那么就要用到传说中的Web Service了。为了看好效果,都要建立两个...
  • zmx729618
  • zmx729618
  • 2016-08-05 16:53
  • 6910

使用Spring RMI调用远程方法

Spring有多种调用远程的方式,今天学习了一下远程方法调用(RMI)。 RMI需要服务端和客户端 我们先从服务器开始 我的代码结构 package rmi; public interface ServerRmiI { public String say...
  • junshuaizhang
  • junshuaizhang
  • 2014-05-28 19:01
  • 4874

RMI简单实例与Spring集成RMI

rmi远程方法调用,用于服务器端和kehuduan
  • undergrowth
  • undergrowth
  • 2014-05-03 13:18
  • 2288

Spring RMI配置多个服务

在使用Spring RMI时可能会遇到发布多个服务的需求,假设一个服务要操作文件,另一个服务要往屏幕上打印“hello world”。难道要把这两个风马牛不相及的服务写在一个接口里吗!如果真这样那结构也太差了。 网上有人问这个问题:“http://topic.csdn.net/u/200907...
  • u013614451
  • u013614451
  • 2014-09-18 23:40
  • 2085

使用SpringBoot进行远程RMI调用

SpringBoot的开发确实及其快速,但是其中也不免有一些需要注意的地方,此次使用SpringBoot进行RMI调用完全是相适应当下的Spring发展趋势,网上搜了很多关于Spring原始的在XMl中配置RMI服务端和客户端的文章,其中有一篇还是很好的,经验证没问题,博客地址是:http://my...
  • jokeHello
  • jokeHello
  • 2015-12-22 11:37
  • 6369

Spring RMI客户端读超时设置

点击打开链接 点击打开链接 标准Java的RMI设置我所知道的有三种方式,其中第1、2种不区分框架均适用,但影响整个JVM级别的RMI服务 1. 启动时设置sun.rmi.transport.tcp.responseTimeout,单位是毫秒 ...
  • XinTeng2012
  • XinTeng2012
  • 2014-01-15 17:08
  • 1962

Java之——Spring与RMI集成实现远程访问(插曲)

使用Spring对RMI的支持,可以非常容易地构建你的分布式应用。在服务端,可以通过Spring的org.springframework.remoting.rmi.RmiServiceExporter可以暴露你的服务;在客户端,通过org.springframework.remoting.rmi.R...
  • l1028386804
  • l1028386804
  • 2015-05-25 17:41
  • 1116

Spring RMI实现远程调用及源码

1.RMI简单介绍 Spring除了使用基于HTTP协议的远程调用方案,还为开发者提供了基于RMI机制的远程调用方法,RMI远程调用网络通信实现是基于TCP/IP协议完成的,而不是通过HTTP协议。 在Spring RMI实现中,集成了标准的RMI-JRIM解决方案,该方案是java虚拟机实现的...
  • clypm
  • clypm
  • 2015-03-10 10:16
  • 628

Spring RMI注意问题

转载自: http://yangwencan2002.iteye.com/blog/284249 RMI问题1: 用 ./shutdown.sh 关闭 rmi 服务器的 tomcat ,然后 ./startup.sh 启动,客户端连接总是会导致如下错误: org.springframewo...
  • zero__007
  • zero__007
  • 2015-11-17 15:29
  • 874
    个人资料
    • 访问:110742次
    • 积分:2291
    • 等级:
    • 排名:第18954名
    • 原创:98篇
    • 转载:17篇
    • 译文:5篇
    • 评论:20条
    博客专栏