JacORB1.4 编程指南.ppt
《JacORB1.4 编程指南.ppt》由会员分享,可在线阅读,更多相关《JacORB1.4 编程指南.ppt(48页珍藏版)》请在三一办公上搜索。
1、,JacORB1.4 编程指南,中文翻译:hlstudio(),cocia()(第 7 章),校稿:allen(),fat1(),2002.08,目录,12345678,前言.4安装 JacORB.52.1 获取 JacORB.52.2 安装 JacORB.52.2.1 Ant 和 build.xml.52.2.2 配置.5编程起步.93.1 JacORB 开发步骤.93.2 IDL 接口定义.93.3 生成 Java 类.103.4 实现接口.103.5 编写服务器.113.6 编写客户端.123.7 桥接方式.13JacORB 命名服务.154.1 运行命名服务.154.2 访问命名服务.
2、164.3 构造层次命名空间.164.4 命名管理器.16服务端:POA 及线程.185.1 POA.185.2 线程.18实现仓库.196.1 概述.196.2 使用 JacORB 的实现仓库.196.3 服务迁移.206.4 安全考虑.21Any Value 的动态管理.227.1 概述.227.2 接口.227.3 用法限制.227.4 创建一个 DynAny 对象.237.5 访问 DynAny 对象的值.247.6 传送 DynAny 对象的值.247.7 构造类型.257.7.1 DynEnum.257.7.2 DynStruct.257.7.3 DynUnion.257.7.4
3、DynSequence.257.7.5 DynArray.257.8 Any 和 DnyAny 对象之间的转换.267.9 更多例子.26接口仓库.278.1 接口仓库中的类型信息.272,8.2 接口仓库设计.278.3 使用接口仓库.28,910111213141516,JacORB 的小程序代理.309.1 使用小程序代理.309.1.1 使用步骤.309.1.2 程序属性.309.1.3 小程序代理和 Netscpe/IE,AppletViewer.319.1.4 示例.319.2 通过防火墙使用 JacORB.319.2.1 小程序代理.319.2.2 HTTP 隧道.329.2.3
4、 小程序代理和 HTTP 隧道.329.2.4 总结.32基于 SSL 的 IIOP.3310.1 重编译 JacORB 安全库.3310.2 配置 IAIK.3310.2.1 设置 IAIK 证书库.3310.2.2 一步一步生成证书.3510.3 配置 SSL 的属性.3510.3.1 客户端配置.3610.3.2 服务器端配置.36双向 GIOP.3711.1 设置双向 GIOP.3711.1.1 设置 ORB 初始属性.3711.1.2 创建双向策略.3711.2 验证双向 GIOP 已经使用.3711.3 TAO 协同性.38可移植拦截器-PI.39JacORB 实用程序.4013.
5、1 IDL.4013.2 ns.4013.3 nmg.4113.4 lsns.4113.5 dior.4113.6 pingo.4113.7 ir.4113.8 qir.4213.9 ks.42配置清单.4314.1 ORB 的配置.4314.2 POA 的配置.4414.3 实现仓库的配置.4514.4 安全的配置.45缺陷和反馈.47附录.483,4,1 前言,本文主要介绍 JacORB 的分布式应用开发。JacORB 是免费的 Java 对象请求代理系统,附带全部源代码,包含大部分 CORBA 对象服务的实现,以及大量的代码实例。本文不是CORBA 的一般性介绍,如果要看 CORBA 方
6、面的介绍,请查阅附录的参考书目BVD01及HV99。本文所描述的 JacORB 版本为 1.4Beta1,同时介绍一些安装和使用 JacORB 的技巧。,5,2 安装 JacORB,本章的主要内容是获取和安装 JacORB,以及相关包的主要内容。,2.1 获取 JacORB,JacORB 可以在 JacORB 的主页 http:/www.jacorb.org 下载,也可以通过匿名方式访问 FTP 服务器 ftp.inf.fu-berlin.de 目录 pub/jacorb 来下载。,下载的文件是压缩包,unix 为 tar 格式,windows 下为 zip 格式。要安装 JacORB,先解压
7、缩,会生成一个新的目录 JacORB1_4_beta1。然后将,JacORB1_4_beta1/lib/jacorb.jar加入入入入入(classpath)入入入入入入入入入入JacORB,JacORB1_4_beta1/class 加入类路径,并且将JacORB1_4_beta1/bin 加到 Path,在 JacORB1_4_beta1/bin 下有一些实用程序。,2.2 安装 JacORB,2.2.1 Ant 和 build.xml,JacORB 可以在所有的 Java 虚拟机上运行。重新编译 JacORB(以及 JacORB 附带的例子)需要安装 Ant,Ant 是基于 XML 的制
8、作管理工具。你可以到,http:/jakarta.apache.org/ant下下下入下下下Ant入下下下build.xml下下下下下下下下下入,入入入入JacORB,入新新新新新新新(JacORB1_4_beta1)入新入ant新新新新入新新新ant新新新前,新前新新ant clean前前前前前入入产生的中间文件。,最好使用 JDK1.2 以上的版本的虚拟机来运行 JacORB,因为图形工具如使命名管理器(NameManger)、实现仓库管理器(ImRManger)、接口仓库浏览器(IRBrowser),以及 SSL 的支持都需要 JDK1.2 以下版本的虚拟机。在使用 SSL 时,你还需要
9、第三方的 SSL 协议实现,JacORB 目前支持以下的实现:,1.IAIKs下的的,的的新IAIKJCE 2.5或或或下下入,前或SSL下或iSaSiLk3.0入。的的入新前。下。入,2.Sun 的 JSSE 参考实现,包含在 JDK1.4 中;也可单独从 JDC 中下载。,2.2.2 配置,JacORB 有很多可以设为 Java 属性的配置项。在解释这些基本配置项之前,先让我们看看配置方法。其他一些具体的配置项,如和实现仓库及交易服务相关的选项,在相关的章节讲述。,总体说来,有三种方式可以配置 JacORB。,第一种方式是文件方式。JacORB 寻找和加载名为.jacorb_propert
10、ies 或 jacorb.properties 文件,系统将在下列位置搜索配置文件:1.类路径中。,2.运行 JacORB 用户的用户主目录,通过运行 System.getProerty(user.home)获得。如果需要知道用户主目录在哪,可以写一小段 Java 程序去测试一下。3.当前目录中。,4.JDK 安装的 lib 目录。JDK 的主目录通过运行 System.getProperty(java.home)获得。,系统也按上述顺序搜索,一旦找到一个配置文件,系统将停止搜索,并加载该配置文件。第二种方式是对象方式。对于和应用相关的配置项,可以在应用初始化时给 ORB.init 传递一个
11、java.util.Property 对象。这种方式会覆盖使用文件方式设置的配置项。下面的代码片段演示了如何向 ORB.init 传递一个 Property 对象(程序中 args 是命令行参数变量):java.util.Properties props=new java.util.Properties();props.setProperty(jacorb.implname,StandardNS);/use put()under Java 1.1org.omg.CORBA.ORB orb=org.omg.CORBA.ORB.init(args,props);第三种方式是参数方式。可以通过设置
12、Java 虚拟机的系统属性来设置配置项,这些属性必须在调用 ORB.init()之前设置,并且此方式会覆盖前两种方式设置的配置项。系统属性可用System.setProperty,也可以用命令行参数方式-D=,这是 Java 程序的命令行参数,也可用于 jaco 脚本。需要注意的是这些参数必须放在类名参数之前,放在类名参数之后的都将被 Java 虚拟机解释为该类的参数,并只被传递到该类的 main 方法中。如果你想通过命令行设置多个参数,你可以用一个特定的属性 custom.props,此属性值为配置文件。在配置文件中你可以加上任意多的配置项。这里的配置项也会覆盖第一种和第二种方式设置的配置项
13、。例如:通常使用标准的 TCP/IP 连接,但可能有时候想使用 SSL。如果只使用一个配置文件,那么要变更连接方式时就得修改配置文件。如果不想每次都修改配置文件,也可以将不同的参数通过命令行参数传递,但这会导致很长的命令。但如果使用特定的属性去指定文件,就可以把所有其他的配置项都放在该文件中,而只使用一个命令行参数,如:$jaco-Dcustom.props=ssl_props_MyServer我们现在看一看最基本的配置项,下面是一个示例的配置文件:#JacORB 配置项#,#初始化的参考配置,#,#IORs存储的URL(在orb.resolve_initial_service()中使用)#O
14、RBInitRef在ORB启动时创建.In the#cases of the services themselves,this may lead to exceptions being#displayed(because the services arent up yet).These exceptions#are handled properly and cause no harm!#ORBInitRef.NameService=corbaloc:160.45.110.41:38693/StandardNS/NameServer POA/_root#ORBInitRef.NameServic
15、e=file:/c:/NS_RefORBInitRef.NameService=http:/www.x.y.z/user/NS_Ref#ORBInitRef.TradingService=http:/www.x.y.z/user/TraderRef#JacORB-specific URLsjacorb.ImplementationRepositoryURL=http:/www.x.y.z/user/ImR_Refjacorb.ProxyServerURL=http:/www.x.y.z/user/Appligator_Ref#6,#调试模式,#,#use(java)jacorb.util.CA
16、D to generate an appropriate#verbosity level#0=off#1=important messages and exceptions#2=informational messages and exceptions#=3=debug-level output(may confuse the unaware user:-)jacorb.verbosity=1#where does output go?Terminal is default#jacorb.logfile=LOGFILEPATH#WARNING:The following properties
17、should#only be edited by the expert user.They#can be left untouched for most cases!#,#基本ORB配置,#,#number of retries if connection cannot directly be establishedjacorb.retries=5#how many msecs.do we wait between retriesjacorb.retry_interval=500#size of network buffers for outgoing messagesjacorb.outbu
18、f_size=2048#client-side timeout,set no non-zero to stop blocking#after so many msecs.#jacorb.connection.client_timeout=0#max time a server keeps a connection open if nothing happens#jacorb.connection.server_timeout=10000#jacorb.reference_caching=off.#,#POA配置,#,#displays a GUI monitoring tool for ser
19、versjacorb.poa.monitoring=off#thread pool configuration for request processingjacorb.poa.thread_pool_max=20jacorb.poa.thread_pool_min=5#if set,request processing threads in thePOA#will run at this priority.If not set or invalid,#MAX_PRIORITY will be used.#jacorb.poa.thread_priority=#size of the requ
20、est queue,clients will receive Corba.TRANSIENT#exceptions if load exceeds this limitjacorb.poa.queue_max=100.配置项包括网络缓冲区的大小、JacORB 在不能建立连接时的重试次数、在重试前等待的时间间隔。ORBInitRef.NameService 的值是 JacORB 命名服务的 URL。这个 URL 被 ORB 用来定位存储服务对象引用的文件(请参见第 4 章)。verbosity 配置项指定 JacORB 在运行时可以忽略多少诊断输出。除非将 logfile 配置7,8,项设定为一
21、个文件,否则系统将向终端输出日志。将 verbosity 置为 0 意味着不输出任何诊断信息,2 为详细诊断信息输出。1 则忽略某些信息,例如忽略连接打开、接受和关闭的信息。如果想可选的输出一些诊断信息,可以使用 jacorb.util.CAD 工具生成一个自定义的输出级别。,配置项 jacorb.poa.monitoring 指明 POA 是否打开一个图形界面显示自身的动态信息,例如有多长的请求队列,有多大的线程池。同时,这个工具也可以用来修改 POA 的状态,从活动到保持,详细说明可以参见第 5 章。,现在就可以在 demo 目录下任一子目录来测试安装。在此目录下有很多 JacORB 的例
22、子。,9,3 编程起步,在开始讲述例子之前,我们先看一下在 JacORB 中开发 CORBA 应用的基本步骤。我们也按照这个基本步骤来讲述例子。例子请参见 demo/grid 目录,在此目录有一个 build.xml,用以使用 ant 来制作,这样不用每回都手工运行每一开发步骤,当然还是应该搞清楚开发的原理。,本文只是 JacORB 编程的简短介绍,不会涉及 CORBA IDL 的所有细节,建议看看 demo 下的其他例子,这些例子是按照 CORBA IDL 的方式进行组织的。,3.1 JacORB 开发步骤,JacORB 的应用开发一般分为以下五步:1.写 IDL 接口定义,2.编译 IDL
23、 接口定义生成 Java 类3.实现步骤 2 中生成的接口,4.写服务器启动类,并注册到 ORB5.写客户端去获取服务对象引用,3.2 IDL 接口定义,本例实现了一个简单的服务,其接口在 server.idl 中定义。本例所有的源代码都可以在jacORB1_4_beta1/demo/grid 目录下找到。下面是 server.idl 文件的内容:,/server.idl,/二维网格的接口定义:,module demo,module grid,interface MyServer,typedef fixed fixedT;,readonly attribute short height;/网络
24、的高度readonly attribute short width;/网络的宽度/设置n*m的网络,void set(in short n,in short m,in fixedT value);,/返回n*m的网络元素,fixedT get(in short n,in short m);exception MyException,string why;,;,short opWithException()raises(MyException);,;,10,3.3 生成 Java 类,使用如下命令编译此接口文件:,$idl-d./.server.idl,此命令将生成多个 Java 源文件,Jav
25、a 源文件的生成依照 OMG 标准的 IDL-Java 语言映射定义。如果你对语言映射定义感兴趣,例如 IDL 的语言结构如何映射为 Java 的语言结构,可以到 www.omg.org 上查找相关文档。JacORB 的 IDL 编译使用 CORBA2.3 定义的语言映射,详细说明可参考附录的参考书目BVD01。如何使用 idl 接口定义,可参考 demo 目录下的例子。,IDL 编译器产生 Java 接口 MyServer、MyServerOptions,及桩和骨架文件_MyServerStub、MyServerPOA、MyServerPOATie。我们将在后面详细这几个类。,注意 IDL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JacORB1.4 编程指南 JacORB1 编程 指南

链接地址:https://www.31ppt.com/p-2876430.html