06软件构建 课件.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
6编写服务端程序 3 使用 POA 管理器 创建新POA 时必须为它指定一个POA 管理器,该POA 管理器将用于控制新POA 的状态。在大多数应用中,服务程序的所有POA 均使用同一POA 管理器,例如上例中根POA的POA 管理器用于控制新创建的子POA 的状态。如果将null 作为第二个参数传递给create_POA 操作,系统会自动创建一个新的POA 管理器与新建的POA 相关联。POA 管理器的撤销也是隐式地,当POA 管理器相关联的所有POA 都被destroy 操作撤销时,该POA管理器也被自动撤销。 一个 POA 管理器创建后可以有4 种状态:持有状态(holding)、活动状态(active)、非活动状态(inactive)以及丢弃状态(discarding),这些状态也就是POA 管理器所控制的POA的工作状态。调用POA 管理器的get_state 操作可返回POA 管理器的当前状态。 POA 管理器的状态以及引起状态转换的操作如图的状态转换图所示 1. 活动状态 当 POA 管理器处于活动状态时,由它控制的所有POA 将接收并开始处理请求。调用POA 管理器的activate 操作可将POA 管理器从持有或丢弃状态改为活动状态。 注意即使在活动状态下,由于ORB 实现或系统资源限制等原因,POA 也可能需要将来不及处理的请求排队。每一个ORB 产品都会限制请求队列的最大长度,超过该限制时POA会返回一个TRANSIENT 异常给客户程序。 2. 持有状态 POA 管理器被创建后即处于持有状态,在该状态下所有接入的请求被引导到一个队列中等候处理,POA 并没有对请求作任何处理。为分派这些请求,必须将POA 管理器转换为活动状态,即利用POA 管理器的activate 操作激活该POA 管理器。例如代码 rootPOA.the_POAManager().activate(); 将根 POA 的POA 管理器激活为活动状态。 调用 POA 管理器的hold_requests 操作可将POA 管理器由活动或丢弃状态改为持有状态,如果参数为false 表示改为持有状态后立即返回,否则仅当在状态改变前已开始处理的所有请求已结束,或POA 管理器被改为除持有状态之外的其他状态时,该操作才返回。所有排队等候且未开始处理的请求将在持有状态期间继续排队等候。 当POA管理器处于持有状态时,不会调用它所控制的所有POA上注册的适配器激活器,所有需要适配器激活器的请求也将排队等候处理。 3. 丢弃状态 当 POA 管理器处于丢弃状态时,由它控制的所有POA 丢弃任何未开始处理的请求,此外不会调用注册到这些POA 的任何适配器激活器。引入丢弃状态为服务程序提供了一种流 量控制手段,例如为避免服务程序被突如期来的大量请求淹没,可利用该状态拒绝接入请求,这时ORB 会返回TRANSIENT 异常通知客户程序它们的请求已被丢弃,由客户程序决定是否重新发送请求。没有什么固定的方法判断是否以及何时POA 收到了太多请求,通常这需要由开发人员自己负责建立线程监控程序。 调用 POA 管理器的discard_requests 操作可将POA 管理器从持有或活动状态改为丢弃状态,实际参数为false 表示改为丢弃状态后立即返回,否则仅当状态改变前启动的所有请 求均已结束,或POA 管理器被改为除丢弃状态之外的其他状态时,该操作才返回。 * 编写服务程序 */40 * 编写服务程序 */40 编写服务程序 通常程序员都会编写一个名为Server.java 的服务程序,典型的服务程序通常执行以下步骤: (1) 初始化对象请求代理(ORB)。 (2) 用所需策略创建一个可移植对象适配器(POA)。程序中的BankPOA 是我们为POA起的名字,客户程序必须使用相同的POA 名字。 (3) 创建一个提供服务的伺服对象。伺服对象是服务端的本地对象,当伺服对象通过对象适配器注册到ORB 后,就成为一个可供远程调用的CORBA 对象。 (4) 激活新创建的伺服对象,即利用POA 将伺服对象以一个字符串表示的标识注册到ORB 上。 (5) 激活POA 管理器。 (6) 等待客户程序发来请求。 程序 3-11 服务程序Server.java // 服务端的主程序 import org.omg.PortableServer.*; public class Server {public static void main(String[] args) {try { // 初始化ORB org.omg.CORBA.ORB orb = org.

文档评论(0)

maxianhui + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档