《pro Spring》学习笔记之Spring集成RMI实例

原创 2007年09月20日 15:52:00

有关rmi的相关知识,本文并不涉及,只关心Spring如何简化RMI的开发

Spring利用代理,完成RMI服务端和客户端的开发,可以使任意POJO的方法进行暴露

服务接口:

 

package ch16.SimpleRMI;

public interface HelloWorld ...{
   
public String getMessage();
}

 

服务实现:

 

package ch16.SimpleRMI;

public class HelloWorldImpl implements HelloWorld ...{

    
public String getMessage() ...{
        
        
return "hello world";
    }


}

 

服务端配置文件:applicationContext.xml

 

<?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="helloWorldService" class="org.springframework.remoting.rmi.RmiServiceExporter">
  
<property name="serviceName">
    
<value>HelloWorld</value>
  
</property>
  
<property name="service">
    
<bean class="ch16.SimpleRMI.HelloWorldImpl"/>
  
</property>
  
<property name="serviceInterface">
    
<value>ch16.SimpleRMI.HelloWorld</value>
  
</property>
  
<property name="registryPort">
    
<value>9000</value>
  
</property>
  
<property name="servicePort">
    
<value>9001</value>
  
</property>
  
</bean>
</beans>

 

客户端配置文件:applicationContext-client.xml

 

<?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="helloworldService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
 
<property name="serviceUrl">
   
<value>rmi://localhost:9000/HelloWorld</value>
 
</property>
 
<property name="serviceInterface">
    
<bean class="ch16.SimpleRMI.HelloWorld"></bean>
  
</property>
</bean>

<bean id="helloworldClient" class="ch16.SimpleRMI.HelloWorldClient">
  
<property name="helloworldService">
    
<ref local="helloworldService"/>
  
</property>
</bean>
</beans>

 

服务端测试代码:

运行后并没有立即退出,因为远程服务是运行在后台的,一直等待客户端的链接

 

package ch16.SimpleRMI;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test ...{

    
/** *//**
     * 
@param args
     
*/

    
public static void main(String[] args) ...{
        ApplicationContext context 
= new ClassPathXmlApplicationContext("ch16/SimpleRMI/applicationContext.xml");
        System.out.println(
"host stated...");
    }


}

 

客户端:

 

package ch16.SimpleRMI;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class HelloWorldClient ...{

    
private HelloWorld helloworldService;
    
public HelloWorld getHelloworldService() ...{
        
return helloworldService;
    }

    
public void setHelloworldService(HelloWorld helloworldService) ...{
        
this.helloworldService = helloworldService;
    }

    
public static void main(String[] args) ...{
        ApplicationContext context 
= new ClassPathXmlApplicationContext("ch6/SimpleRMI/applicationContext-client.xml");
        HelloWorldClient helloWorldClient
=(HelloWorldClient)context.getBean("helloworldClient");
        helloWorldClient.run();
    }

    
public void run()...{
        System.out.println(helloworldService.getMessage());
    }


}

 

运行后,可以看到后台打印出了,服务端输出的Hello World

RMI简单实例与Spring集成RMI

rmi远程方法调用,用于服务器端和kehuduan
  • undergrowth
  • undergrowth
  • 2014年05月03日 13:18
  • 2324

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

如何在Spring框架中使用RMI技术
  • wangshuxuncom
  • wangshuxuncom
  • 2015年01月25日 05:50
  • 2593

Spring RMI 超时(Timeout) 和 自动重连

Spring RMI 超时(Timeout) 和 自动重连 其实Spring RMI 提供自动重连,这样的话,如果服务端的程序重启,就不会影响到客户端. 而且大家应该知道,Spring 在容器启动...
  • dsamsofter
  • dsamsofter
  • 2014年08月09日 17:38
  • 576

Spring整合Rmi总结

在Spring整合Rmi中: 服务端使用了org.springframework.remoting.rmi.RmiServiceExporter RmiServiceExporter把任何Spring...
  • cuiran
  • cuiran
  • 2012年08月08日 11:54
  • 7371

spring RMI 解析

1.Spring除了使用基于HTTP协议的远程调用方案,还为开发者提供了基于RMI机制的远程调用方法,RMI远程调用网络通信实现是基于TCP/IP协议完成的,而不是通过HTTP协议。 在Spring...
  • sivyer123
  • sivyer123
  • 2014年03月05日 18:35
  • 2917

使用Spring RMI调用远程方法

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

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

最近应用到了Java RMI技术,所以总结一下RMI的使用,另外EJB的实现也是以Java RMI为基础核心的。RMI远程方法调用,可以跨机器通过网络调用,不过Java RMI只支持两边都是Java程...
  • zmx729618
  • zmx729618
  • 2016年08月05日 16:53
  • 7164

Spring RMI配置多个服务

在使用Spring RMI时可能会遇到发布多个服务的需求,假设一个服务要操作文件,另一个服务要往屏幕上打印“hello world”。难道要把这两个风马牛不相及的服务写在一个接口里吗!如果真这样那结构...
  • u013614451
  • u013614451
  • 2014年09月18日 23:40
  • 2115

spring的rmi整合以及客户端和服务端搭建1.0

最近接手了个项目,领导让用spring的rmi来实现,并且需要高并发的(这个放到后面研究吧) 由于之前的通讯一直使用的是简单的http+json或者http+xml来实现的;这次接到这个任务后,首先...
  • XinTeng2012
  • XinTeng2012
  • 2014年01月15日 16:51
  • 1250

spring整合rmi 如何使用安全策略

spring整合rmi 后,想要使用安全策略,之后是自己写一个rmi.policy文件,里面写着授权哪些IP有哪些权限,但是我要怎么导入到spring中呢? 这个问题真的木有人会吗? 我要限制连接R...
  • WANTAWAY314
  • WANTAWAY314
  • 2016年12月30日 10:01
  • 18371
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《pro Spring》学习笔记之Spring集成RMI实例
举报原因:
原因补充:

(最多只允许输入30个字)