Java分布式之RMI实例教程 (java分布式事务解决方案)

教程大全 2025-07-19 10:39:41 浏览

Java分布式之RMI实例教程

2010-08-25 17:08:18最近的联通项目,下一阶段可能会涉及到和各省间的RMI接口,所以总结一下08年中国移动自动拨测系统用到的RMI技术,以备不时之需。

Java分布式之RMI实例教程,RMI的基础是接口,RMI构架基于一个重要的原理:定义接口和定义接口的具体实现是分开的。

编辑特别推荐:

关于Java性能监控不知道的五件事

Java运行时环境初始化时出现错误

SQLServe数据库到DB2连接 服务器 的实现过程全解

前言

最近的联通项目,下一阶段可能会涉及到和各省间的RMI接口,所以总结一下08年中国移动自动拨测系统用到的RMI技术,以备不时之需。同时也给广大初哥提供一些学习资料,哈哈。前几年,一直忙于项目,没怎么做系统总结。以后计划写一些以前项目用过的Java分布式技术实例教程,如:RMI、Socket、Mina、SNMP、SOAP、Web Service、Hessian、JMS等。希望和大家一起交流,分享经验,一起提高。

RMI简介

RMI,远程方法调用(Remote Method 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. 运行实例#p#

业务场景

在移动拨测系统管理端中要融合实时显示。简单点说就是设备出现告警时,要采用不同方式实时展示。如Web界面(Ajax)、GIS等。

主要业务流程设计:

1. 设备告警

2. 调用RMI Client

3. 调用RMI Server

4. 调用业务处理接口

java分布式事务解决方案

5. 告警信息入库

6. 实时显示(Ajax,Gis等技术)

技术设计

接口函数函数名称: int interactive( int funindex, string param )

参数说明:

funindex 功能号,整型。1为设备告警

param 交互参数,字符串型。

返回:

成功=1,失败=0。

说明:

param交互参数用键值对组成,每个键值对以“&”分割,如:Tsid=01&devid=002&warnid=102&warntype=01&warnlevel=1 。

测试点ID(tsid)

设备ID(devid)

告警ID(warnid)

告警类型(warntype)

告警级别(warnlevel)

代码实现#p#

废话少说,上代码,为了演示方便,经过整理,省去了很多get,set之类的东东还有业务的东西以及Spring相关的东西。

告警#p#

实际应用是从Spring应用中获取告警Service,如上代码

网络告警的业务操作

实际应用中是在Spring初始化并启动#p#

在RMI服务注册表中查找名称为RmiMonitorService的对象,并调用其上的方法#p#

* 处理告警:告警来时的业务操作,实际操作是解析消息存库,然后界面Ajax定时刷新数据,获取实时告警展示#p#

告警处理方法


JAVA程序错在哪?

HuffmanTree []HT=new HuffmanTree [8]; for(m=0;m<;m++){ HT[m+1].w=a[m];HT[m+1].p=0;HT[m+1].l=0;HT[m+1].r=0; } 在我截下的代码中,你申明了一个对象数组,但是这个对象数组中的每一个成员都是null,没有初始化。 因此在接下来的for循环中你对数组中的成员对象直接引用它的成员变量,肯定就出错了,是空指针异常。 因为HuffmanTree是input的一个内部类,因此在new HuffmanTree()之前必须要先new一个input类。 具体语法是:input obj = new input();HuffmanTree temp = HuffmanTree();否则会出现编译错误。

java 1到100累加 要定义类来写代码。。

public class Main { public static void main(String[] args) { int a=0; int i=0; int sum=0; do { sum=sum+a; a=a+1; i=i+1;}while(i<=100); (sum); } }我在机子上运行成功了,都,对你应该有帮助吧?

java登录小程序

class Test{public boolean say(String name, String mima){if((admin)&&(admin111)){return true;}else {return false;}}}class Test1{private String[] s;public Test1(String s[]){this.s = s;}public String sa(){Test t = new Test();();String name = s[0];String mima = s[1];String w = null;if((name,mima)){w = 欢迎+name+光临;}else{w = 用户密码错误;}return w ;}public void print(){if( != 2){(格式错误,程序退出);(格式为:java Add 用户名 密码);(1);}}}public class Add{public static void main(String []args){Test1 t = new Test1(args);(());}}编译、执行主类。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐