用RMI和CORBA开发JAVA分布式程序

构建分布式酒店预订系统:Java RMI和CORBA的应用 本文还有配套的精品资源,点击获取 简介:分布式通信对于构建大规模、高可用性的IT系统至关重要。本课程项目“Distributed-Communication”通过Java平台上的远程方法调用(RMI)和公共对象请求代理架构(CORBA)技术,实现了一个酒店预订系统。该系统涵盖了一系列组件,如预订服务器、用户界面、数据库、认证与授权以及负载均衡。项目同时探讨了性能优化、容错与... 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> RMI(远程方法调用)和CORBA(通用对象调用代理架构)是两个最重要,并广泛应用的分布对象系统架构。每个架构都有优劣,这两个架构应用到从电子商务到医保系统等不同的领域。 两者中任何一个被应用到项目中都不是很容易的工作。这篇文章大概介绍了RMI和CORBA,并演示了如何开发一个远程下载文件的实例。 。介绍分布式对象系统 。介绍RMI和CORBA 。介绍一个RMI和CORBA的应用 。演示如何用RMI和CORBA从远程主机传输文件 。比较CORBA和RMI C/S模式 客户机/服务器模式是服务器和客户机交换信息进行分布计算的一种模式。在这个模式里,客户机和服务器都用同一种语言—它们都理解的协议进行通信。 C/S模式有不同的开发方式,典型的应用是低层SOCKET开发。用SOCKET开发意味着我们必须设计一套协议,C/S双方能相互通信的一系列命令集。一个例子就是HTTP协议,提供了一个GET方法,为了得到传输的文档,C/S都必须实现。 分布式模式 基于系统的分布式对象是通过定义好的接口来隔离客户端请求和服务器端服务的对象集。 数据请求和执行是分开的,这是C/S模式与分布式模式的主要区别。 在一个分布式模型里,客户端发送消息给一个对象,这个对象判断消息决定哪种服务执行。 服务或者方法,SELECTION被对象或者代理来执行。RMI和CORBA就是这个模型的例子。 RMI RMI是能使你很容易地开发分布市对象的系统。RMI比SOCKETS开发容易地多,不需要定义协议。用RMI,开发者会认为调用本地类的本地方法,实际上是从远程传输,翻译,并把结果传递到本地。 RMI应用起步 开发RMI,包括以下几个步骤: 1 定义一个远程接口 2 应用远程接口 3 服务器端开发 4 客户端开发 5 生成骨干代码,启动RMI注册,服务器,客户端 下面我们讲述每一步的具体实现。 例子:文件传输应用 允许传输任何类型的文件到远程主机。第一步定义描述方法的远程接口。 定义远程接口 代码一是下载文件的远程接口。接口FileInterface 提供了一个下载文件的方法,返回文件的字节集。 Code Sample 1: FileInterface.java import java.rmi.Remote; import java.rmi.RemoteException; public interface FileInterface extends Remote { public byte[] downloadFile(String fileName) throws RemoteException; } 注意: 为了客户端能装载包含远程接口的远程对象,接口必须定义为Public 必须扩展Remote接口,为了实现远程对象 接口里的每个方法必须抛出RemoteException异常 应用远程接口 下一步是实现接口FileInterface,一个简单的应用在代码二。 注意为了实现接口FileInterface,类FileImpl必须扩展UnicastRemoteObject。 这说明类FileImpl创建一个单一,不能复制的通过TCP传输的RMI对象, Code Sample 2: FileImpl.java import java.io.*; import java.rmi.*; import java.rmi.server.UnicastRemoteObject; public class FileImpl extends UnicastRemoteObject implements FileInterface { private String name; public FileImpl(String s) throws RemoteException{ super(); name = s; } public byte[] downloadFile(String fileName){ try { File file = new File(fileName); byte buffer[] = new byte[(int)file.length()]; BufferedInputStream input = new BufferedInputStream(new FileInputStream(fileName)); input.read(buffer,0,buffer.length); input.close(); return(buffer); } catch(Exception e){ System.out.println("FileImpl: " e.getMessage()); e.printStackTrace(); return(null); } } } 服务器端开发 第三步是开发服务器端,有三个步骤: 1 创建RMISecurityManager实例并安装它 2 创建一个远程对象的实例 3 用RMI注册对象。 Code Sample 3: FileServer.java import java.io.*; import java.rmi.*; public class FileServer { public static void main(String argv[]) { if(System.getSecurityManager() == null) { System.setSecurityManager(new RMISecurityManager()); } try { FileInterface fi = new FileImpl("FileServer"); Naming.rebind("//127.0.0.1/FileServer", fi); } catch(Exception e) { System.out.println("FileServer: " e.getMessage()); e.printStackTrace(); } } } 这句 Naming.rebind("//127.0.0.1/FileServer", fi) 说明RMI 注册是运行在缺省端口1099。如果RMI注册是在其它端口,此句应改为: Naming.rebind("//127.0.0.1:4500/FileServer", fi) 客户端开发 下一步就是开发客户端。客户端远程调用远程接口定义的任何方法。为了实现,客户端必须先获得RMI注册的远程对象的实例。一旦获得,下载文件方法就别调用。如代码4。这个应用中,客户端接收两个命令行参数。 Code Sample 4: FileClient.java import java.io.*; import java.rmi.*; public class FileClient{ public static void main(String argv[]) { if(argv.length != 2) { System.out.println("Usage: java FileClient fileName machineName"); System.exit(0); } try { String name = "//" argv[1] "/FileServer"; FileInterface fi = (FileInterface) Naming.lookup(name); byte[] filedata = fi.downloadFile(argv[0]); File file = new File(argv[0]); BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(file.getName())); output.write(filedata,0,filedata.length); output.flush(); output.close(); } catch(Exception e) { System.err.println("FileServer exception: " e.getMessage()); e.printStackTrace(); } } } 运行这个应用 为了运行这个应用,我们必须先生成骨干码,然后编译服务器端,客户端代码,RMI注册,最后开始应用。 为了生成骨干码,我们用RMIC命令: 命令行: rmic FileImpl 将生成两个文件: FileImpl_Stub.class 和 FileImpl_Skel.class. 客户端代理和服务端骨干。 下一步,编译SERVER,CLIENT代码 最后,开始RMI注册,运行。 命令行> rmiregistry portNumber 注册完成后,就可以开始服务器端应用。如果应用了RMI安全管理,你需要一个安全策略来处理。下面就是一个简单的security policy: grant { permission java.security.AllPermission "", ""; }; 注意:这只是一个简单的安全策略,如果比较重要的应用,你需要用更严格的安全策略。 拷贝所有的类除了客户端类。确认安全策略在policy.txt后,用下面命令开始服务器端应用。 命令行> java -Djava.security.policy=policy.txt FileServer 为了在不同的机器开始客户端应用,你需要拷贝 (FileInterface.class) 和(FileImpl_Stub.class). 命令行> java FileClient fileName machineName 翻译不当之处,请大家批评指正,谢谢! My mail:lisong@anyi.com.cn
基于Java RMI与CORBA的分布式军舰游戏实战项目 在军舰游戏的分布式实现中,服务端需要对外暴露一组标准化的操作接口,供多个客户端并发访问。这些接口不仅要满足基本的游戏逻辑需求,还需兼顾扩展性、安全性与性能表现。借助Java RMI的能力,我们可以将这些操作封装为远程方法,实现跨JVM调用。在分布式系统尤其是CORBA(Common Object Request Broker Architecture)架构中,接口定义语言(Interface Definition Language, IDL)是实现跨平台、跨语言通信的核心工具。 阅读详情

相关推荐

ContextCapture导入点云进行重建

ContextCapture导入点云进行重建

天桥飞熊的博客 1万+

RMI与CORBA在Java中的应用

  本篇用实例来说明采用Java进行RMI远程方法调用及CORBA服务调用的实现方法,并分析它们的异同,从而为分布应用软件的开发者提供参考和帮助。   Internet/Intranet的飞速发展使得Web应用日益广泛而复杂,Web早已不仅仅是超媒体信息的浏览工具,它正逐步发展成为分布异构环境中企业应用的通用前端和事务处理的展现窗口。在分布式环境异构中,各种机器所采用的操作系统、网络通信协议和应用

Stone的专栏 3334

不止是打字机效果:手把手教你用SpannableStringBuilder打造Android富文本AI对话界面

本文详细介绍了如何使用SpannableStringBuilder在Android平台上构建专业级AI对话界面,涵盖流式文本处理、富文本解析、交互优化等核心技术。通过实战代码示例,帮助开发者实现类似DeepSeek的AI产品交互效果,提升用户体验和应用专业度。

weixin_28358083的博客 199

Package javax.rmi.CORBA

Contains portability APIs for RMI-IIOP. See: Description Interface Summary Interface Description PortableRemoteObjectDelegate Supports delegation for method implementations in PortableRemoteObject...

[Blog][Domain] programb.blog.youkuaiyun.com 945

如何用SoulChat2.0快速克隆你的心理咨询师?手把手教你搭建AI数字孪生体

本文详细介绍了如何利用SoulChat2.0框架快速构建心理咨询师的AI数字孪生体。通过其核心PsyDT技术,仅需少量真实案例即可合成风格数据并微调大模型,从而低成本地创建能高度模仿特定咨询师语言风格和专业技术的AI分身,适用于预约访谈、心理教育等辅助场景,实现高效的人机协作。

julia4scientist的博客 979

BetaFlight代码解析(5)— PID控制器

Betaflight的PID控制器是保持飞行器稳定的核心算法,通过比例、积分、微分三组件实时校正姿态误差。该系统还包含前馈、动态D项限制、反重力等高级功能,通过多PID配置文件实现灵活调参,并提供多种调试模式分析性能。这些优化使控制器在保证稳定性的同时提高响应速度,是飞行调优的关键部分。

rainercool的专栏 1497

corba stub 作用

使用openfusion,例子是grid,IDL编译后产生7个java文件。其中_MyServerStub.java类的作用如下: 在helper类的narrow()方法实现中, 返回的是一个_stub类的实例,也就是说,客户端所有的方法调用,实际调用的是_stub类的方法。 public static demo.grid.MyServer narrow(final org.omg....

gaofen100 230

COMSOL两相流(相场法)

COMSOL是一款功能非常强大的多物理场仿真软件,拥有可视化和后处理工具,可方便有效的展示您的仿真效果,具有灵活、高效、友好的特点,软件能够为用户提供各类工程问题的解决方案,从而帮助广大研究和工程人员能够在科研上取得新突破。 COMSOL可以实现声学、传热、流体力学、结构力学等方面的模拟仿真,具体模块如下图所示。 COMSOL软件设置流程 定义需要求解的问题类型:针对一个需要仿真的问题,需要先对问题进行分析;分析该问题用到哪些物理场,什么样的几何模型,以及如何设置研究等。该步骤可以使用COMSOL中的

weixin_47139559的博客 1万+

用RMI和CORBA开发JAVA分布式程序(二)

CORBA CORBA是OMG组织针对企业应用上的分布式程序开发标准。重要的一点是CORBA仅仅是个规范。CORBA应用以ORB而知名。市场上已经出现了几个CORBA产品如VISIBROKE,ORBIX等。JAVAIDL是在JDK1。3及以上版本核心包的另一个应用。CORBA设计的与平台和语言无关(注:与WEB SERVICE类似),因此CORBA能运行在任何平台上,能应用在任何网络里

gunandrose的专栏 1536

AI人工智能代理工作流 AI Agent WorkFlow:在股票市场预测中的应用

AI人工智能代理工作流 AI Agent WorkFlow:在股票市场预测中的应用 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 关键词: AI Agent, W

AI天才研究院 859

【推荐100个unity插件】Animator 的替代品?—— Animancer Pro插件的使用介绍

Animancer与Unity Animator对比及使用指南 摘要: 本文对比了Animancer与Unity官方Animator的核心差异,分析了Animancer的优势特点。Animancer采用代码驱动模式,相比Animator的状态机系统更灵活高效,支持实时调试、动态混合和深度逻辑集成。文章详细介绍了Animancer的快速使用方法,包括动画播放、切换和触发机制,并区分了免费版与专业版的功能差异。适合需要高效动画开发、复杂交互逻辑的中小项目,为开发者提供了一种现代化的动画解决方案。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2435

使用RMI和CORBA进行分布式java程序设计

RMI和corba是两种最重要和使用最广泛的分布式对象系统。 每种都有它的长处和短处。这两种系统都在从电子商务到卫生保健等不同的行业成功的使用。在项目中使用这两种分布机制中的任何一种都是一项很困难的任务。本文介绍了RMI和corba的机理和最主要的是显示了如何开发一个有用的程序(一个从远程站点下载文件的程序)。于是有以下内容: 一个分布式系统的简介 一个RMI和corba的简介 让你体验开发一个R

波波熊的专栏 1143

71、聚二甲基硅氧烷(PDMS)材料模型验证研究

本研究通过实验与数值模拟相结合的方法,系统探究了聚二甲基硅氧烷(PDMS)的力学性能与粘附行为。重点验证了多种超弹性材料模型在不同剥离速率下的适用性,结果表明Ogden N2模型在预测界面韧性和平均剥离力方面误差最小,表现最优。研究涵盖了PDMS的合成、单轴拉伸试验、剥离测试及有限元分析,为PDMS在机械与摩擦学领域的应用提供了可靠的建模依据,并建议在后续模拟中优先采用Ogden模型。

wine的专栏 1062

CORBA与RMI的比较 及 实例

Java远程方法调用(RMI)机制和公用对象请求代理体系(CORBA)是最重要和使用最广泛的两种分布式对象系统。每个系统都有其特点和短处。它们在行业中被用于从电子交易到保健医疗的各个领域。一个项目如果要从这两种分布式机制中选用一个,往往难以抉择。本文概括地介绍了RMI和CORBA,更重要的是,它将介绍如何开发一个有用的应用程序,用于从远程主机下载文件。然后它将: 简要介绍分布式对象系统 ...

iteye_5095的博客 479

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Java远程方法调用(RMI)机制

Java远程方法调用(RMI)机制和公用对象请求代理体系(CORBA)是最重要 和使用最广泛的两种分布式对象系统。每个系统都有其特点和短处。它们在行 业中被用于从电子交易到保健医疗的各个领域。一个项目如果要从这两种分布式 机制中选用一个,往往难以抉择。本文概括地介绍了RMI和CORBA,更重要的是, 它将介绍如何开发一个有用的应用程序,用于从远程主机下载文件。然后它将:   简要介绍分布式对

yuyin86的专栏 1313

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

CORBA 与Java 的 结 合 使 用

摘 要: 若 想 实 现Web 上 分 布 式 客 户 机/ 服 务 器 模 式 的 应 用 程 序,可 以 选 择 多 种 不 同 的 技 术。 但 是, 对 于 必 须 服 务 于 大 量 用 户 的应 用, 我 们 认 为 应 该 首 选CORBA, 因 为 它 具 有 可 扩 展 性 和 业 界 广泛 的 支 持。 由于CORBA 的 强 健 性 可 以 提 高Java 编 程 语 言 的

wxyxl的专栏 1151

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

RMI(EJB)

RMI是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。简单地说,这样使原先的程序在同一操作系统的方法调用,变成了不同操作系统之间程序的方法调用,由于J2EE是分布式程序平台,它一RMI机制实现程序组件在不同操作系统之间的通信。比如,一个EJB可以通过RM

mcy478643968的专栏 1639

Java 分布式通信的几种方式及其特点

相关阅读: 1. Java 分布式通信的几种方式及其特点 2.Java WebService异构系统通信的原理及特点:SOAP与WSDL 3.Java EJB、CORBA、Webservices分布式通信基本原理及特点 4. Java 远程调用与分布式通信的区别 假设有两个服务器,本地的服务器采用的是Java开发的,远程的是一个采用C#开发的天气预报的服务器,二者可以通过以...

weixin_30394251的博客 231

Java RMI 介绍和例子以及Spring对RMI支持的实际应用实例

RMI 相关知识 RMI全称是Remote Method Invocation-远程方法调用,Java RMI在JDK1.1中实现的,其威力就体现在它强大的开发分布式网络应用的能力上,是纯Java的网络分布式应用系统的核心解决方案之一。其实它可以被看作是RPC的Java版本。但是传统RPC并不能很好地应用于分布式对象系统。而Java RMI 则支持存储于不同地址空间的程序级对象之间彼此进行通信,...

weixin_34380948的博客 125

JAVA RMI

参考文章:《Java RMI 简介、原理、实例 (远程接口|分布式部署)》               http://hi.baidu.com/wqlearner/blog/item/f3fbf78128f7589df703a690.html               《RMI原理及实现》               http://java.chinaitlab.com/rcj/1850....

xx510long的博客 201
上一篇: 用RMI和CORBA开发JAVA分布式程序(二)
下一篇: 初学j2ee的人都会遇到这样的问题,您是如何解决的呢?
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值