使用POA-tie实现CORBA/JAVA服务器端映射

来源 :网络与信息 | 被引量 : 0次 | 上传用户:zhaihoufu
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:首先介绍了CORBA中POA的组织结构及工作机制,然后具体介绍如何使用POA-tie实现CORBA/JAVA服务器端。
  关键词:POA;POA-Tie;CORBA;IDL
  
  1 POA简介
  (1)POA结构
  每一个POA都要维护一个活动对象映射(Active Object Map),它包含一个个对应于服务的对象ID,活动对象映射是一张将激活对象映射到相应服务的表。对象ID是一个由POA和用户提供的实现使用的一个值,用来标识一个特定的抽象的CORBA对象。对象ID的值可能由POA或实现来赋值和管理, 对象ID的值由引用封装并对客户方隐藏。对象ID没有标准格式,它们被POA作为未解释的8位字节序列来管理。在POA中还需要根据实际应用实现诸如缺省服务、服务激活器、适配器激活器、服务定位器之类的功能。
  (2)POA工作机制
  以对象引用为基础,一个POA必须决定它是否能服务于那个对象。ORB通过一种定位机制去选择一个合适的POA。一旦一个对象被定位,ORB就会异步地将请求传输给POA。一旦对请求的处理结束,POA就会通知ORB并将结果返回。在多个POA组成的树形结构中,客户发出的所有请求由根POA接收,根POA在这之前已经在ORB上进行了注册。请求是从根POA开始向下传递给它的下级的,如果专门处理某个请求的POA不存在,这个请求将发送给该POA的父POA,并调用它的适配器激活器重新建立这个丢失了的POA。POA接收到了请求,然后通过对象的定位,使用对象的实现去处理接收到的请求。
  
  2 CORBA实现IDL的服务器端映射方式
  CORBA支持两种实现IDL接口的服务器端映射:ImplBase inheritance(继承)和Tie delegation(委托)。ImplBase方法用一个实现类实现IDL接口,其中的实现类也扩展编译器生成的xxxImplBaseClass。Tie方法用两种类实现IDL接口:一个IDL生成的Tie类,该类继承自xxxImplBaseClass,但委托所有的调用到一个实现类;一个实现IDL生成的xxxOperations接口的类,它定义了IDL的功能。
  
  3 POA-Tie的服务器端实现
  3.1 定义接口(Hello.idl)
  首先使用IDL创建一个CORBA应用,规定所有的对象和接口。程序Hello.idl定义了一个CORBA对象,其中sayHello()操作返回一个string,shutdown()方法用来关闭ORB。
  module HelloApp
  {
  interface Hello
  {
  string sayHello();
  oneway void shutdown();
  };
  };
  3.2 服务器端实现(HelloServer.java)
  服务器端包括两个类:servant和server。Servant(HelloImpl)实现Hello的IDL 接口,Hello中的每一个实例都由HelloImpl中的一个实例实现。Servant是由Hello.idl通过idlj编译器编译产生的,是HelloPOA的子类,它包含了Hello.idl中定义的两个方法sayHello()和shutdown(),其余的代码是用来处理由skeleton提供的ORB的,这个ORB用来对参数和结果进行编组等。
  HelloServer类包含main()方法,它完成以下操作:
  ·创建并初始化一个ORB实例
  ·得到根POA的引用并激活POAManager
  ·创建servant实例并且通知ORB
  ·创建一个连接使servant成为代理
  ·为连接得到一个CORBA对象应用
  ·得到根的命名上下文
  ·用名字“Hello”在命名上下文中注册一个新的对象
  ·等待客户端对这个新对象的请求
  HelloServer.java 中创建tie的核心代码:
  // create a tie, with servant being the delegate.
  HelloPOATie tie = new HelloPOATie(helloImpl, rootpoa);
  Hello href = tie._this(orb);
  3.3 客户端实现(HelloClient.java)
  客户端完成以下操作:
  ·创建并初始化ORB
  ·获得根命名上下文
  ·在命名上下文中查找“Hello”并接收CORBA对象的引用
  ·调用对象的sayHello()和shutdown()方法,将结果打印出来
  3.4 创建并运行Hello World
  (1)使目录中包含文件Hello.idl
  (2)运行idlj,产生stub和skeleton
  (3)编译*.java 文件: javac*.javaHello
  App/*.java
  (4)启动orbd:start orbd -ORBInitialPort 1050 -ORBInitialHost localhost
  (5)启动Hello server: start java HelloSer
  ver -ORBInitialPort 1050 -ORBInitialHost localhost
  (6)执行客户端应用程序:java HelloClient -ORBInitialPort 1050 -ORBInitialHost localhost
  综上所述,POA-Tie机制利用了java的多接口继承,使用POA-Tie机制可以更灵活地在java中实现CORBA,并能提供附加的、像框架一样的函数提供给服务器端对象。
  
  参考文献
  [1](英)George Coulouris Jean Dollimore Tim Kindberg 著.金培弘 译.分布式系统概念与设计.北京:机械工业出版社,2004.1.
  [2]marko boger 著.曹学军 译.JAVA与分布式系统.北京:机械工业出版社,2003.
  [3](澳)David Reilly,等.沈凤,等 译.JAVA网络编程与分布式计算.北京:机械工业出版社,2003.3.
  [4]Robert Orfali,Dan Harkey.Client/Server Programming with Java and CORBA (Second Edition).
  作者简介:张福勇(1982-),男,山东烟台人,昆明理工大学信息工程与自动化学院计算机应用专业研究生,主要从事网格与分布式系统研究。
其他文献
很多朋友不知道,缺省情况下,Windows XP系统为了安全和稳定,保留了20%的系统带宽。对于一般的个人用户来说,这显然有些保守,白白浪费了宝贵的网络带宽。那么,怎么讨回这部分资源呢?   带宽是通信信号可以使用的最高频率与最低频率之差。我们知道: 一条公路越宽,单位时间内可以通过的交通流量就越大。如果把网络信号的传输速率比喻成交通流量,那带宽就相当于公路的宽度。所以,修改Windows XP系
期刊
许多网友在用QQ聊天时并不重视QQ的安全性,只有当他人盗用自己的QQ密码或IP地址对自己产生伤害时才引起足够的重视。产生的伤害通常有三种情况:   1.向对方的端口不断发送数据包使TCP/IP栈崩溃,从而导致蓝屏系统,不得不重新启动。  2.通过IP地址和QQ的端口号发送无用信息干扰正常聊天。  3.如果机器在局域网中,别人还可以盗用共享文件,如果文件是商业机密,后果不堪设想。  QQ是当前流行的
期刊
故障现象  机器以前可正常上网的,突然出现可认证,不能上网的现象(无法ping通网关),重启机器或在MS-DOS窗口下运行命令ARP -d后,又可恢复上网一段时间。     故障原因  这是ARP病毒欺骗攻击造成的。一般是由传奇外挂携带的ARP木马攻击引起的。当在局域网内使用上述外挂时,外挂携带的病毒会将该机器的MAC地址映射到网关的IP地址上,向局域网内大量发送ARP包,从而致使同一网段地址内的
期刊
“远程破解”与“本地破解”正好相反,是指QQ盗号者通过网络盗窃远端QQ用户的密码。这种QQ破解有很多方法,如在线密码破解、登录窗口破解、邮箱破解、消息诈骗以及形形色色的QQ木马病毒等。下面就让我们一同来看看这些QQ密码的远程破解是怎么实现的。     1.在线密码破解     大家知道QQ可以利用代理服务器登录,这是一种保护措施。它不仅可以隐藏用户的真实IP地址,以避免遭受网络攻击,还可以加快登录
期刊
局域网网络层存在的隐患及其解决方法  文:九歌    不安全的地方   由于局域网中采用广播方式,因此,若在某个广播域中可以侦听到所有的信息包,黑客就可以对信息包进行分析,那么本广播域的信息传递都会暴露在黑客面前。     网络分段   网络分段是保证安全的一项重要措施,同时也是一项基本措施,其指导思想在于将非法用户与网络资源相互隔离,从而达到限制用户非法访问的目的。     网络分段有物理分段和
期刊
DoS是“拒绝服务”(Denial of Service)的缩写,它是指故意攻击网络协议的缺陷或直接通过野蛮手段耗尽受攻击目标的资源,目的是让目标计算机或网络无法提供正常的服务,甚至系统崩溃。早期的DoS攻击都需要相当大的带宽资源来实现,而以个人为单位的“入侵者”往往没有这样的条件。但是后来攻击者发明了分布式的攻击方式,即利用工具软件集合许多的网络带宽来同时对同一个目标发动大量的攻击请求,这就是D
期刊
很多Windows Live Messenger用户都碰到了陌生人要求添加为好友的情况。譬如一个名为“好久没联系了,最近还好吗?我换了新的msn”的人向多人发送了要求添加为好友的信息,收到者以为是自己的老朋友,一般都同意添加。出现对话框后,则出现了一个“这是我的新博客,欢迎你来做客”的链接,点击后发现只是一个广告网站的页面。    怎么会出现这种情况,有哪些可能性?  如果因为某种原因,用户的账号
期刊
众所周知,Windows Vista为了保证用户机密数据,在安全方面有了很大改进。而在Windows Vista Enterprise与Ultimate版中提供的系统级的安全防护BitLocker,则可以提供完整的驱动器加密功能,有效避免Windows Vista用户因 PC 硬件丢失、被盗或不当的淘汰处理而导致由数据失窃或泄漏构成的威胁。即便非法使用者启动另外一个系统,以脱机方式浏览存储在受保护
期刊
不用专业软件就能禁用U盘  文:小优    公司禁用U盘和移动硬盘的原因多种多样,最响亮的原因就是防止员工带走机密资料,在这里提供一种不用专业软件就能禁用U盘的小技巧给大家。     方法一:BIOS设置法(快刀斩乱麻法)   进入BIOS设置,选择“Integrated Peripherals”选项,展开后将“USB 1.1 Controller”和“USB 2.0 Controller”选项的
期刊
目前,随着经济环境的变化,企业越来越注重培养员工的团队精神。“团队精神”是一个企业的灵魂,一个企业能否在激烈的市场竞争中站稳脚跟最重要的是有一个融洽默契的团队。所谓“团队”就是把所有的员工看成一个整体,员工之间不再各自为政,而是进行有条不紊地协作,就是“协同办公”。协同办公看似一件很简单的事情,但是仅仅靠管理者个人的力量难免顾此失彼,微软公司的Microsoft Office SharePoint
期刊