Java分布式之RMI实例教程 网络通信原理.docx
上传人:qw****27 上传时间:2024-09-12 格式:DOCX 页数:7 大小:17KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

Java分布式之RMI实例教程 网络通信原理.docx

Java分布式之RMI实例教程网络通信原理.docx

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Java分布式之RMI实例教程网络通信原理前言最近的联通项目,下一阶段可能会涉及到和各省间的RMI接口,所以总结一下08年中国移动自动拨测系统用到的RMI技术,以备不时之需。同时也给广大初哥提供一些学习资料,哈哈。前几年,一直忙于项目,没怎么做系统总结。以后计划写一些以前项目用过的Java分布式技术实例教程,如:RMI、Socket、Mina、SNMP、SOAP、WebService、Hessian、JMS等。希望和大家一起交流,分享经验,一起提高。RMI简介RMI,远程方法调用(RemoteMethodInvocation)是EnterpriseJavaBeans的支柱,是建立分布式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.调用RMIClient3.调用RMIServer4.调用业务处理接口5.告警信息入库6.实时显示(Ajax,Gis等技术)技术设计接口函数函数名称:intinteractive(intfunindex,stringparam)参数说明:funindex功能号,整型。1为设备告警param交互参数,字符串型。返回:成功=1,失败=0。说明:param交互参数用键值对组成,每个键值对以“&”分割,如:Tsid=01&devid=002&warnid=102&warntype=01&warnlevel=1。测试点ID(tsid)设备ID(devid)告警ID(warnid)告警类型(warntype)告警级别(warnlevel)代码实现废话少说,上代码,为了演示方便,经过整理,省去了很多get,set之类的东东还有业务的东西以及Spring相关的东西。Java代码RmiMonitorService.javapackagenbpt.ts.manager.message.service;importjava.rmi.Remote;importjava.rmi.RemoteException;/***Description:实时显示RMI服务接口。**RMI接口必须扩展接口java.rmi.Remote**@authorPeterWei*@version1.0Feb25,2009*/publicinterfaceRmiMonitorServiceextendsRemote{/***实时显示对外接口**@paramfunindex*功能号*@paramparam*键名列表,也就是实际传输的内容*@return*@throwsRemoteException*远程接口方法必须抛出java.rmi.RemoteException*/publicintinteractive(intfunindex,Stringparam)throwsRemoteException;}RmiMonitorServiceImpl.javapackagenbpt.ts.manager.message.service.impl;importjava.rmi.RemoteException;importjava.rmi.server.UnicastRemoteObject;//importnbpt.ts.manager.base.util.AppContext;importnbpt.ts.manager.message.service.RmiMonitorService;imp