[计算机软件及应用]chapter2_中间件.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机软件及应用]chapter2_中间件

一个服务可以充当BEA Tuxedo客户程序,去调用其它BEA Tuxedo服务,换句话说,你请求的服务需要调用其它服务才能处理请求。BEA Tuxedo客户程序调用了服务X,等待它的响应,服务X调用服务Y后也处于等待状态,当服务X得到响应后,再给客户程序一个响应,这种机制的特点是效率高。 在嵌套服务中,最里层嵌套服务可以直接给客户程序一个响应,没有必要按照调用栈逐级返回,这就使其它嵌套服务可以处理其它请求,当第一个服务是一个分发代理时,这种模式是非常有用的。在嵌套调用中,被客户调用的服务X使用tpforward(…)函数把请求传给服务Y,服务X没有tpreturn(…)函数。客户程序不用管请求是由谁来完成的,因此,转发调用对客户程序是透明的。 会话通信适合于有多个缓冲区需要以有状态的方式在BEA Tuxedo客户程序和服务之间传递的场合。恰当地使用BEA Tuxedo的会话,因为参与会话的服务器在会话结束之前是不可用的。要完成会话通信,你的代码需要遵循如下步骤: ⑴.客户程序使用tpconnect()启动会话; ⑵.客户程序和服务使用tpsend()和tprecv()函数进行数据交换,一个特殊的标记指示着当前由哪一方来控制着会话; (3). 当服务程序调用tpreturn()或tpdiscon()函数时,会话正常终止 要处理服务器的消息通知,客户程序必须使用tpsetunsol()函数来创建一个主动消息处理器,要发送主动消息,BEA Tuxedo客户程序或服务程序可以调用tpnotify()来把消息传递给单个客户程序,也可以通过tpbroadcast()函数来把消息同时广播给多个客户程序。当客户程序收到主动消息后,BEA Tuxedo系统调用客户程序的主动消息处理器来处理。 在一个基于信号系统中,客户程序没有必要处理所有的主动消息,然而,在一个非信号系统中,客户程序必须使用tpchkunsol()函数来检查主动消息。当客户程序调用一个服务请求时,tpchkunsol()被隐含地调用。在调用tpnotify()时,如果你设置了tpack标记位,你将会收到一个请求通知。 在基于事件的通信中,事件可以被发送到应用程序队列、LOG文件和系统命令。当BEA Tuxedo服务或客户程序调用tppost()函数时,任何一个Tuxedo客户程序都可以使用tpsubscribe()函数订阅用户自定义事件;当一个服务器死了,.SysServerDied事件就会被发布,它由Tuxedo系统自动完成,不需要应用服务器干预。 两个ATMI函数:tpenqueue()把消息放入队列空间,tpdequeue()把消息从队列空间中取走。 图中演示了点对点异步消息机制。客户程序使用tpenqueue()函数将消息传给服务,响应队列和失败队列的名字可以作为参数包含在tpenqueue()调用中,由于在队列中的数据是持续的,因此,所有和排队消息相关的响应消息和失败消息都可以从相应的响应队列和失败队列中取得。 客户程序可以使用缺省的排队规则,即先进先出;也可以改变排队规则,如把一个消息放在队列开始,或放到另一个队列前面。在消息出队时,要出队消息的事务必须成功地提交。 要使用事务,应用程序开发者需要使用如下ATMI函数: ⑴.tpbegin(),开始一个事务; ⑵.tpcommit(),开始一个二阶段提交处理; ⑶.tpabort(),立即终止事务。 客户程序一般执行如下任务: ⑴.调用tpchkauth()决定加入一个应用程序所需的安全级别。可能出现的响应包括:没有安全级别,应用程序口令,应用程序授权,访问控制列表,连接级加密,公钥加密,审计。这些可以根据你的需求进行选择; ⑵.调用tpinit()来连接到一个BEA Tuxedo应用程序,所需的安全信息作为tpinit()的参数传给了应用程序; ⑶. 执行服务请求; ⑷. 调用tpterm()来断开和BEA Tuxedo应用程序的连接。 在Tuxedo系统中,客户程序对数据库的访问只能通过服务调用来完成,服务对数据库的操作由System/T进行管理和监控。System/T对数据库的操作以事务为单位,在图中,客户程序为了达到将一条通讯录从JQDB1移动到JQDB2的目的,依次调用了GET、DEL、ADD三个服务,这三个服务调用构成了一个事务。只有所有操作都执行成功,事务才能提交,否则必须回滚。 客户程序执行tpinit()调用加入System/T,执行tpbegin()调用通知System/T开始一个事务。若三个服务调用都成功,客户程序执行tpcommit()调用通知System/T可以

文档评论(0)

jiupshaieuk12 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档