CORBA客户端-服务端的处理流程Java示例教学文稿.doc

上传人:1595****071 文档编号:51497660 上传时间:2022-10-18 格式:DOC 页数:10 大小:123.50KB
返回 下载 相关 举报
CORBA客户端-服务端的处理流程Java示例教学文稿.doc_第1页
第1页 / 共10页
CORBA客户端-服务端的处理流程Java示例教学文稿.doc_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《CORBA客户端-服务端的处理流程Java示例教学文稿.doc》由会员分享,可在线阅读,更多相关《CORBA客户端-服务端的处理流程Java示例教学文稿.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Good is good, but better carries it.精益求精,善益求善。CORBA客户端-服务端的处理流程Java示例-CORBA客户端/服务端的处理流程(Java示例)一、客户端的处理流程ORB的初始化-分布式对象引用的获取-分布式对象的引用|1、ORB(ObjectRequestBroker,对象请求代理)是基于CORBA的分布式对象系统的核心,在代理对象(Stub)和分布式对象实现的背后,由ORB提供了实现分布式对象系统所需要的各种服务。由ORB提供的服务包括如下四种:1)ORB接口。主要包括ORB的初始化(获取ORB)、获取CORBA服务对象、动态调用请求的生成、分

2、布式对象引用的变换等。2)DII(动态启动接口)。将客户端生成的对象调用请求传送给ORB时需要利用DII。3)DSI(动态骨架接口)。DSI是与DII对应的服务器端的接口,分布式对象实现利用该接口从ORB中获取来自客户端的请求。4)OA(对象适配器)。它是用于在服务器进程中管理分布式对象而提供的接口。OA提供的主要的功能包括分布式对象引用的生成,以及将分布式对象实现登录到ORB中等。在客户端中,ORB的初始化有以下两个目的1)为分布式对象初始化环境2)为了利用ORB接口而获取其对象的引用2、分布式对象引用的获取一般来说,CORBA系统不同,获取分布式对象引用的方法也不同,目前大概有如下几种方法

3、:1)利用文件的方法获取对象。过程是:服务器将所生成的分布式对象引用进行字符串化处理后保存在文件中,并以某种方式将其发送到客户端能够获取的设备上。客户端从该文件中获取字符串的分布式对象引用,并将其恢复原状。分布式对象引用的字符串化:ORBorb=ORB.init();Stringorbstr=orb.object_to_string(Object)con_ref);/将orbstr以文件形式发送给客户端字符串化引用的复原:BankControlank_ref;ank_ref=Bank.ControlHelper.narrow(orb.string_to_object(orbstr);.2)利用

4、Binding服务的方法获取对象引用。Binging服务,包括:定位(locating)、连接(binding)。定位服务通常利用服务器端的IP地址和端口进行定位。为了对连接进行管理以及进行调用请求的传递,在这一出理过程的最后阶段要生成与此接口对应的Stub类的对象,即代理对象。这一处理过程一般是利用IDL接口定义经映射之后所生成的Helper类中的narrow()方法完成。3)利用命名服务的方法获取对象引用。现在的ORB产品供应商都提供CORBA命名服务。如果从可移植性和互操作性等反面考虑,CORBA命名都是最优秀的。4)利用factory对象的方法获取对象引用。3、分布式对象的引用。COR

5、BA客户利用代理对象来调用分布式对象中的方法。在Java环境下,代理对象是作为Java类来实现的,即Stub类。在客户端与分布式对象进行连接操作时,是通过利用所生成的Stub类的对象来进行的。由于这一对像起到代理作用,固称之为代理对象。示例代码:/创建一个ORB实例,并初始ORBORBorb=ORB.init(args,null);/获取根名称上下文org.omg.CORBA.ObjectobjRef=orb.resolve_initial_references(NameService);NamingContextExtncRef=NamingContextExtHelper.narrow(o

6、bjRef);/从命名上下文中获取接口实现对象Stringname=Hello;helloImpl=HelloHelper.narrow(ncRef.resolve_str(name);/调用接口对象的方法System.out.println(helloImpl.sayHello();/关闭分布式对象helloImpl.shutdown();二、服务器端的处理流程ORB的初始化-BOA/POA的初始化-分布式对象的生成-分布式对象的登录-接收请求开始|1、ORB功能中的服务器所需要的功能都组织到OA(对象适配器)中来。OA所提供的功能仅在服务器端使用,这些功能包括:1)分布式对象引用的生成2)

7、分布式对象的登录与删除3)服务器进程的登录与删除4)分布式对象的激活5)服务器进程的激活6)方法调用请求的发送(dispatch)7)方法启动请求的认证信息的抽取2、BOA(BasicObjectAdapter,基本对象适配器),提供了由对象适配器所必须提供的最基本的功能。在CORBA2.2版本中,BOA被删除掉,取而代之的是POA(PortableObjectAdapter,可移植的对象适配器)。3、分布式对象实现是指实现分布式对象功能的代码,对Java映射来说,一般用一个类来实现。分布式对象实现中必须实现的功能:1)由IDL接口所定义的方法。2)由org.omg.CORBA.Object接

8、口所定义的分布式对象的语义。这就跟Java中的普通对象要实现java.lang.Object一样。3)保存分布式对象的ID以及连接管理等信息的方法。4)将来自客户端的请求发送给相应的分布式方法的功能。分布式对象的实现方法有两种:一种是利用Skeleton类,即静态实现方法;另一种是利用DSI,即动态实现方法。4、分布式对象的登录。分布式对象生成后并不能直接执行任务,因为对于ORB来说,它还不认识这个对象。为了是ORB能管理分布式对象,就需要将“已经生成新对象并处于接受请求的状态”这一信息通知ORB,这一通知的处理过程就叫分布式对象的登录。5、接收请求示例代码:/创建一个ORB实例,并初始化OR

9、bORBorb=ORB.init(args,null);/得到一个RootPOA的引用,并激活POAManagerPOArootpoa=POAHelper.narrow(orb.resolve_initial_references(RootPOA);rootpoa.the_POAManager().activate();/创建一个HelloImpl分布式对象,并注册到ORB上HelloImplhelloImpl=newHelloImpl();helloImpl.setORB(orb);/分布式对象的登录org.omg.CORBA.Objectref=rootpoa.servant_to_ref

10、erence(helloImpl);Hellohref=HelloHelper.narrow(ref);/得到一个根名称的上下文org.omg.CORBA.ObjectobjRef=orb.resolve_initial_references(NameService);NamingContextExtncRef=NamingContextExtHelper.narrow(objRef);/在命名上下文中绑定这个对象Stringname=Hello;NameComponentpath=ncRef.to_name(name);ncRef.rebind(path,href);System.out.println(HelloServerreadyandwaiting.);/启动线程服务,等待客户端的调用orb.run();-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁