在Spring环境下使用RMI

开发 后端
RMI是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。

在Spring环境使用RMI时,可以省略以下几点:

1、接口类不需要继承Remote,方法不需要抛出RemoteException异常对象。

2、实现类不需要继承UnicastRemoteObject。

3、RMI服务自动注册。

下面通过具体的例子来说明其用法。

一、导出RMI服务

1、bean的配置

Xml代码

  1. <beans>    
  2.     <bean id="syncServiceImpl" class="com.cjm.service.rmi.SyncServiceImpl" />    
  3.          
  4.     <bean id="syncServiceProxy" class="com.cjm.service.rmi.SyncServiceRMIExporter">    
  5.         <property name="service">    
  6.             <ref bean="syncServiceImpl" />     
  7.         property>    
  8.         <property name="serviceName">    
  9.             <value>hawkeyeServicevalue>     
  10.         property>    
  11.         <property name="serviceInterface">    
  12.             <value>com.cjm.service.rmi.SyncServicevalue>     
  13.         property>    
  14.         <property name="servicePort">    
  15.             <value>1099value>    
  16.         property>    
  17.         <property name="registryPort">    
  18.             <value>1099value>     
  19.         property>    
  20.     bean>    
  21. beans>    

 

 

 

 

2、类源码

Java代码

  1. public class SyncServiceRMIExporter extends RmiServiceExporter{     
  2.     public SyncServiceRMIExporter() {     
  3.         //通过系统属性设置RMI的hostname     
  4.         System.setProperty("java.rmi.server.hostname""localhost");      
  5.     }     

Java代码

  1. //RMI服务接口类     
  2. public interface SyncService{     
  3.     public boolean updateMonicaSiInfos(String oldInfo, String newInfo);     

Java代码

  1. public class SyncServiceImpl implements SyncService {     
  2.     @Override    
  3.     public boolean updateMonicaSiInfos(String oldInfo, String newInfo) {     
  4.         oldInfo = StringUtils.trimToEmpty(oldInfo);     
  5.         newInfo = StringUtils.trimToEmpty(newInfo);     
  6.     
  7.         if (StringUtils.isEmpty(newInfo)) {     
  8.             return false;     
  9.         }     
  10.              
  11.         ......     
  12.              
  13.         logger.warn("成功: oldInfo=" + oldInfo + ", newInfo=" + newInfo);     
  14.         return true;     
  15.     }     
  16. }    

二、调用RMI服务

1、bean的配置

Xml代码

  1. <beans>        
  2.     <bean id="serviceImpl" class="RMIServiceImpl">    
  3.         <property name="syncService" ref="hawkeyeService"/>    
  4.     bean>    
  5.          
  6.     <bean id="hawkeyeService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">             
  7.         <property name="serviceUrl">                 
  8.             <value>rmi://localhost:1099/hawkeyeServicevalue>              
  9.         property>             
  10.         <property name="serviceInterface">                 
  11.             <value>com.cjm.service.rmi.SyncServicevalue>               
  12.         property>         
  13.     bean>    
  14. beans>    

 

 

 

 

2、类源码

Java代码

  1. public class RMIServiceImpl {     
  2.     private SyncService syncService;     
  3.     
  4.     public SyncService getSyncService() {     
  5.         return syncService;     
  6.     }     
  7.     
  8.     public void setSyncService(SyncService syncService) {     
  9.         this.syncService = syncService;     
  10.     }     
  11.          
  12.     public void doAction(String oldValue, String newValue)throws Exception{     
  13.         boolean b = syncService.updateMonicaSiInfos(oldValue, newValue);     
  14.         if(b){     
  15.             System.out.println("RMI调用成功");     
  16.         }else{     
  17.             System.out.println("RMI调用失败");     
  18.         }     
  19.     }     
  20. }    
责任编辑:金贺 来源: JavaEye博客
相关推荐

2009-01-03 14:39:04

ibmdwDojoMVC

2015-06-01 12:10:57

dockerhexo

2010-04-19 15:11:25

Unix操作系统

2024-02-23 10:11:00

虚拟化技术

2021-05-11 00:08:00

JavaRMI 分布式

2009-11-06 10:05:18

Linux系统环境GFS

2009-12-10 09:42:07

2011-09-01 19:06:57

UbuntuLua安装环境

2011-01-14 11:27:02

Linux制作网页

2009-07-26 20:22:03

SuSE 10.2JDK下载JDK环境

2013-01-24 09:29:16

2018-02-28 14:04:08

RMIJDBC存储

2020-05-22 08:52:08

LinuxPython工具

2009-06-12 17:50:45

Linux下JDK+J

2010-06-02 11:02:01

SVN开发环境

2009-07-17 17:39:35

在NetBeans环境

2011-10-31 15:59:56

SQLiteiPhoneiOS

2010-09-25 09:31:27

EclipseAndroid

2010-09-17 11:01:05

Java运行环境

2009-11-27 14:08:18

点赞
收藏

51CTO技术栈公众号