千家信息网

JavaIDL的分布式程序设计方法是什么

发表于:2024-11-28 作者:千家信息网编辑
千家信息网最后更新 2024年11月28日,本篇内容介绍了"JavaIDL的分布式程序设计方法是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成
千家信息网最后更新 2024年11月28日JavaIDL的分布式程序设计方法是什么

本篇内容介绍了"JavaIDL的分布式程序设计方法是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

JavaIDL介绍

JavaIDL是Java 2开发平台中的CORBA功能扩展。在Java 2中引入JavaIDL,使得利用OMG IDL能够定义服务对象的基本功能,并且将IDL根据CORBA规范的要求,映射到Java语言,并以此开发出标准的具有互操作性和可连接性的分布式应用。JavaIDL使分布式、支持Web的Java应用可以基于IIOP协议透明地调用远程服务。

JavaIDL运行期(Runtime)组件包括一个全兼容的对象请求代理??Java ORB,用于基于IIOP协议实现分布式对象之间的通信。该ORB支持瞬态CORBA对象和瞬态名字服务器,并且ORB生存期受运行ORB进程生存期的限制。

在程序设计中,首先对要实现的服务对象功能进行系统分析,并创建IDL接口描述文件对功能进行描述。然后利用JavaIDL提供的IDL到Java语言的映射工具将IDL文件映射为客户端桩(Stub)文件和服务器骨架(Skeleton)文件。

在实现的客户端应用程序中,包括对远程对象的引用、服务功能请求的发送以及服务对象返回结果的解析处理等功能。通常,客户端应用程序利用命名服务实现对远程对象的绑定,并通过客户端ORB将客户端与服务对象联系起来,实现方法的远程调用。

在服务器端,ORB利用服务对象骨架将调用请求和参数的数据格式进行转换,把远程调用转换为对本地对象中方法的调用。当方法返回时,骨架对计算结果进行转换和封装,通过ORB把结果返回给客户机。

建立CORBA应用程序的过程

分布式应用程序设计的主要问题是确定建立在对象级上的客户与服务对象的关系,从其最根本的功能来讲,服务对象提供远程接口,客户对象调用远程接口,客户对象不需要了解远程CORBA对象的位置以及实现细节,也不需要了解哪个ORB 用于对象之间的交互。

按照实现的基本过程,CORBA对象服务的实现方式分为两种: 对象的命名引用方式和字符串化对象引用方式。CORBA创建分布式应用程序的过程大体如下:

◆ 进行系统分析,确定服务对象需要实现的功能;

◆ 根据系统分析结果,编写IDL接口说明文件;

◆ 编译接口说明文件,产生服务对象的骨架与客户对象的桩(可选);

◆ 基于客户对象的桩,编写客户对象程序;

◆ 基于服务对象的骨架或者动态请求实现,编写服务对象程序;

◆ 分别编译客户对象和服务对象程序;

◆ 启动服务对象程序;

◆ 启动客户对象程序。

分布式应用程序示例  

以下用一个例程说明建立分布式应用程序的过程:

1. 对象功能描述和系统简要设计

在服务对象端将一个字符串对象赋值,客户端通过调用服务对象方法获取该字符串的值。根据对象功能的说明,用UML描述出服务对象需要实现的功能:

getIt() :String[]

2. 服务对象接口定义

根据系统分析结果,用IDL编写出服务对象方法描述程序

getMessage.idl:

module getMessage { interface getIt { string returnObject();};};

3. 编译getMessage.idl

idltojava -fno-cpp getMessage.idl

4. 编写客户端程序

//引入相关类库import org.omg.CosNaming.*;import org.omg.CORBA.*;//客户端对象方法public class client{ public static void main(String args[]) { // 创建和初始化ORB ORB orb = ORB.init(args, null); // 获取根命名服务上下文对象org.omg.CORBA.Object naming =orb.resolve_initial_references("NameService");   NamingContext namingContext = NamingContextHelper.narrow(naming); //解析命名中的对象引用 NameComponent nc = new NameComponent("getMessage", ""); NameComponent path[] = {nc}; getMessage.getIt method =getMessage-Helper.narrow(namingContext.resolve(path)); // 调用服务对象方法 String result=method.returnObject(); }}

5. 编写服务对象程序

// 引入相关类库import org.omg.CosNaming.*;import org.omg.CosNaming.NamingContextPackage.*;import org.omg.CORBA.*;//服务方法class returnMethod extends _getMessage-ImplBase{ public String getIt(){ String result ="How about it";return result;}}//服务器端方法public class server{ public static void main(String args[])  { // 创建和初始化ORB ORB orb = ORB.init(args, null);// 创建服务对象并将其向ORB注册returnMethod obj=new returnMethod();orb.connect(returnMethod);// 获取根命名上下文org.omg.CORBA.Object objRef =orb.resolve_initial_references("NameService");NamingContext ncRef = NamingContextHelper.narrow(objRef);// 绑定命名中的对象引用NameComponent nc = new NameComponent("getMessage", "");NameComponent path[] = {nc};ncRef.rebind(path, objRef);// 等待来自客户机的调用java.lang.Object sync=new java.lang.Object();synchronized (sync){ sync.wait();  }  }}

6.分别编译服务器端和客户端程序

a.编译服务器端程序:

javac getMessage\server.java

b.编译客户端程序:

javac getMessage\client.java

7.运行

a.打开一个仿真终端窗口,启动命名服务,其中3388为通信端口号:

tnameserv -ORBInitialPort 3388

b.在另一个窗口中输入以下命令,运行服务端程序:

java server -ORBInitialPort 3388

c.在另一个窗口中输入以下命令,运行客户端程序:

java client -ORBInitialPort 3388

"JavaIDL的分布式程序设计方法是什么"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

对象 服务 程序 客户 方法 功能 客户端 分布式 应用 应用程序 接口 文件 服务器 编译 设计 系统 结果 过程 骨架 分析 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 收看网络安全教育片总结 工业软件开发算制造业吗 联想think服务器 枣庄网络安全和信息化委员会 远离网络安全上网发言稿 网络安全健康上网的书签 数据库服务器专人管理 罗布乐思12月8日停止服务器 啥时候上架 服务器如何从优盘启动 数据库加密与安全配置 软件开发公司 人员结构 中国 根服务器 网站手工导入数据库 网络安全专项检查活动小结 北京 app软件开发 rust服务器管理员怎么解除封 中国服务器的商品是正品吗 软件开发绩效自我描述 开源软件开发包 geo数据库直接获取的表达矩阵 数据库1406错误啥意思 手机服务器是否被挖矿了 一台服务器多少淘宝用户 如何找到数据库相同的地址 网络安全法内容简单 网络安全公司靠什么挣钱 国防参考网络安全 先科点歌机服务器同步不了怎么办 北京志成网络技术有限公司 IBM对日软件开发工程师
0