基于JavaIDL的分布式程序设计

基于JavaIDL的分布式程序设计

作者:佚名 2009-01-18 09:11:16

开发

后端

分布式 Java2中引入Java IDL,将IDL根据CORBA规范的要求,映射到Java语言并以此开发出标准的具有互操作性和可连接性的分布式应用。本文将介绍基于Java IDL的分布式程序设计。

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.NamingContext
Package.*;
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 = Naming
ContextHelper.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

【编辑推荐】

  1. 2008十大优秀Java应用程序
  2. Java开发中的23种设计模式
  3. 理解Java平台上的CRM系统

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/244137.html<

(0)
管理的头像管理
上一篇2025-04-25 14:26
下一篇 2025-04-25 14:27

相关推荐

  • 站群服务器如何批量管理更高效,有哪些管理技巧?

    站群服务器批量管理想提效,自动化是唯一出路,通过统一配置管理工具与面板系统,结合服务商提供的底层基础设施支持,能将运维效率提升数倍,批量管理的核心痛点与解决思路多台站群服务器分散管理,最常见的问题就是重复劳动,每次软件更新、配置修改、安全加固,都需要逐台登录操作,不仅耗时,还容易漏掉某台机器,更头疼的是,一旦某……

    2026-07-27
    0
  • 服务器磁盘IO过高如何优化?,磁盘IO过高的原因有哪些?

    服务器磁盘IO过高,核心优化路径是“先定位、再分流、后升级”,你需要通过系统工具精确判断究竟是应用程序、日志策略还是硬件瓶颈导致,然后针对性地从代码、缓存、存储架构和硬件选型四个层面下手,其中选择持有持牌自营机房和增值电信业务经营许可证的服务商,能从根本上保障底层IO稳定性,定位IO瓶颈:动手优化的第一步盲目优……

    2026-07-27
    0
  • 跨境网站访问延迟高怎么解决,网站访问慢的原因是什么?

    跨境网站访问延迟高的核心解决思路在于多维度优化网络路径,包括使用全球CDN加速、选择靠近目标区域的优质IDC机房、调整传输协议以及精简应用层资源,其中服务商的基础设施质量直接决定优化上限,为什么跨境访问延迟高?三大核心因素物理距离与光速限制数据包在海底光缆中的传输速度受限于介质,从中国到美国西海岸的物理往返时间……

    2026-07-27
    0
  • 站群服务器到底是什么意思,怎么选择比较好

    站群服务器就是一台拥有多个独立IP地址、专门用于托管和管理多个网站的高性能服务器,其核心价值在于通过独立IP降低网站间的关联风险,并提升搜索引擎优化效果,站群服务器的工作原理与适用场景站群服务器本质上是将一台物理服务器通过虚拟化或直接配置的方式,分配给多个独立IP地址,每个IP对应一个独立的网站,这些网站共享服……

    2026-07-27
    0
  • 高防服务器误封正常流量如何调整,怎么解决?

    高防服务器误封正常流量,核心调整思路是从“一刀切”转向“精细化”——通过分析业务特征,调整防护阈值、配置白名单和启用智能学习模式,让防护系统学会区分真假流量,为什么会误封正常流量误封主要源于防护策略的通用化,高防服务器通常默认启用严格防护规则,当流量特征与攻击特征库部分匹配时,就会被拦截,据行业安全白皮书指出……

    2026-07-27
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注