java分布式之rmi实例教程_java分布式之rmi实例教程网络通信原理

41528d3028836879cd698677c3999917.gifjava分布式之rmi实例教程网络通信原理

Java分布式之RMI实例教程 网络通信原理 前言 最近的联通项目,下一阶段可能会涉及到和各省间的 RMI 接口,所以总结一下 08 年中国 移动自动拨测系统用到的 RMI 技术,以备不时之需。同时也给广大初哥 提供一些学习资 料,哈哈。前几年,一直忙于项目,没怎么做系统总结。以后计划写一些以前项目用过的 Java 分布式技术实例教程,如:RMI、 Socket、Mina、SNMP、SOAP、Web Service、Hessian、JMS 等。希望和大家一起交流,分享经验,一起提高。 RMI 简介 RMI,远程方法调用(Remote Invocation)是 Enterprise JavaBeans 的支柱,是建立 分布式 Java 应用程序的方便途径。RMI 是非常容易使用的,但是它非常的强大。 RMI 的基础是接口,RMI 构架基于一个重要的原理:定义接口和定义接口的具体实现是分 开的。看看 jboss-remoting: 基本原理 要实现网络机器间的通讯,首先得来看看计算机系统网络通信的基本原理,在底层层面去 看,网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于 传输协议和网 络 IO 来实现,其中传输协议比较出名的有 http、tcp、udp 等等,http、tcp、udp 都是在基 于 Socket 概念上为某类应用场 景而扩展出的传输协议,网络 IO,主要有 bio、nio、aio 三 种方式,所有的分布式应用通讯都基于这个原理而实现,只是为了应用的易用,各种语言 通常 都会提供一些更为贴近应用易用的应用层协议。 主要步骤 分为以下几个步骤: 1. 创建远程接口及声明远程方法(RmiMonitorService.java) 2. 实现远程接口及远程方法(继承 UnicastRemoteObject) (RmiMonitorServiceImpl.java) 3. 启动 RMI 注册服务,并注册远程对象(RmiServer.java) 4. 客户端查找远程对象,并调用远程方法(MonitorClient.java) 5. 运行实例 业务场景 在移动拨测系统管理端中要融合实时显示。简单点说就是设备出现告警时,要采用不同方 式实时展示。如 Web 界面(Ajax) 、GIS 等。 主要业务流程设计: 1. 设备告警 2. 调用 RMI Client 3. 调用 RMI Server 4. 调用业务处理接口 5. 告警信息入库 6. 实时显示(Ajax,Gis 等技术) 技术设计 接口函数函数名称: int interactive( int funindex, string param ) 参数说明: funindex 功能号,整型。1 为设备告警 param 交互参数,字符串型。 返回:成功=1,失败=0。 说明: param 交互参数用键值对组成,每个键值对以“ import java.rmi.Remote; import java.rmi.RemoteException; /** * Description: 实时显示 RMI 服务接口。 * * RMI 接口必须扩展接口 java.rmi.Remote * * @author Peter Wei * @version 1.0 Feb 25, 2009 */ public interface RmiMonitorService extends Remote { /** * 实时显示对外接口 * * @param funindex * 功能号 * @param param * 键名列表,也就是实际传输的内容 * @return * @throws RemoteException * 远程接口方法必须抛出 java.rmi.RemoteException */ public int interactive(int funindex, String param) throws RemoteException; } RmiMonitorServiceImpl.java package nbpt.ts.manager.message.service.impl; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; // import nbpt.ts.manager.base.util.AppContext;import nbpt.ts.manager.message.service.RmiMonitorService; import nbpt.ts.manager.message.service.WarnService; /** * Description: 实时显示 RMI 接口实现。 * * 实现 RMI 接口及远程方法(继承 UnicastRemoteObject) * * @author Peter Wei * @version 1.0 Feb 25, 2009 */ public class RmiMonitorServiceImpl extends UnicastRemoteObject implements RmiMonitorService { private static final long serialVersionUID = -3771656108378649574L; public static final int SUCCSS = 1; public static final int FAIL = 0; public WarnService warnService; /** * 必须定义构造方法,因为要抛出 RemoteException 异常 * * @throws RemoteException */ public RmiMonitorServiceImpl() throws RemoteException { super(); } public int interactive(int funindex, String param) throws RemoteException { int result = FAIL; switch (funindex) { // 告警 case (1): { // warnService = (WarnService) AppContext.getAppContext().getBean( // “warn.warnService”); // 实际应用是从 Spring 应用中获取告警 Service,如上代码 warnService = new WarnServiceImpl(); // 网络告警的业务操作 warnService.dealWarn(param); result = SUCCSS; } break; case (2): // do other biz break; } // 。。 return result;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值