博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring RMI
阅读量:6637 次
发布时间:2019-06-25

本文共 2324 字,大约阅读时间需要 7 分钟。

RMI,为远程方法调用,我们要用spring来实现调用:

步骤1:

编写远程接口和远程接口的实现类

接口:

package com.rmi;

public interface ISomeService {

 public String doSomeService(String some);

 public int doOtherService(int other);
}

实现类:

package com.rmi;

public class SomeService implements ISomeService {

 public int doOtherService(int other) {

  // TODO Auto-generated method stub
  return ++other;
 }

 public String doSomeService(String some) {

  // TODO Auto-generated method stub
  return some+" is proceeed";
 }

}

服务端的配置文件:

<?xml version="1.0" encoding="UTF-8"?>

<beans
 xmlns=""
 xmlns:xsi=""
 xsi:schemaLocation="">
 
 <bean id="someService" class="com.rmi.SomeService"></bean>
 <bean id="serviceExporter" class="org.springframework.remoting.rmi.RmiServiceExporter">
  <property name="service" ref="someService"></property>
  <property name="serviceName" value="SomeService"></property>
  <property name="serviceInterface" value="com.rmi.ISomeService"></property>
 </bean>
 </beans>

服务端启动代码:

public class RMIServer {

 /**

  * @param args
  * @throws IOException 
  */
 public static void main(String[] args) throws IOException {
  ApplicationContext ctx = new ClassPathXmlApplicationContext("rmi.xml");
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  while(true)
  {
   if(br.readLine().equals("exit"))
   {
    break;
   }
   
  }
  RmiServiceExporter rse = (RmiServiceExporter)ctx.getBean("serviceExporter");
  rse.destroy();

 }

}

步骤2:

编写客户端

客户端配置文件:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="" xmlns:xsi="" xsi:schemaLocation="">
 <bean id="someServiceProxy" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
  <property name="serviceUrl" value="rmi://127.0.0.1/SomeService"/>
  <property name="serviceInterface" value="com.rmi.ISomeService"/>
 </bean>
</beans>
客户端调用服务端的代码:

package com.rmi;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class RmiClient {

 /**

  * @param args
  */
 public static void main(String[] args) {
  ApplicationContext ctx = new ClassPathXmlApplicationContext("rmi-client.xml");
  ISomeService service = (ISomeService) ctx.getBean("someServiceProxy");
  System.out.println(service.doSomeService("some request"));

 }

}

注意:客户端必须要有服务端ISomeService.class的文件,这样客户端才可以有关于该服务端接口的引用,这个是和一般的webservice的调用方法是一样的

本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/682008,如需转载请自行联系原作者

你可能感兴趣的文章
01:xlua的迁入与hotfix的环境配置
查看>>
07:AssetBundle框架整体设计
查看>>
01:RectTransform
查看>>
02:Anchor
查看>>
03:轴心点参数及获取UI宽高
查看>>
04:canvas的三种渲染模式
查看>>
SVN
查看>>
人生真正需要的是“逆向思维”
查看>>
【老鸟分享】Linux命令行终端提示符多种实用技巧!
查看>>
创业第一个月总结
查看>>
临时表删除
查看>>
Hadoop运维记录系列(一)
查看>>
你理解这些Cisco NAT分类和原理吗
查看>>
门户网站CDN实战优化教学案例分享
查看>>
发现和使用OneNote的计算器功能
查看>>
SAP R3 采购申请相关简单操作 :附Oracle后台数据库对应表明细。
查看>>
倾听是谈话中最基本的技巧
查看>>
KVM虚拟化技术之网卡流量聚合
查看>>
CentOS查看内核版本、系统版本、系统位数
查看>>
11G Oracle RAC添加新表空间时数据文件误放置到本地文件系统的修正
查看>>