tuxedo培训教程_第1页
tuxedo培训教程_第2页
tuxedo培训教程_第3页
tuxedo培训教程_第4页
tuxedo培训教程_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、BEA TUXEDO 简易培训教程 编写、整理:文栈良 2003-1-21 第一章认识tuxedo 1.1 TUXEDQ是什么? BEATUXED是在企业、In ternet这样的分布式运算环境中开发 和管理三层结构的客 户/服务器型关键任务应用系统的强有力工具。它 具备分布式事务处理和应用通信功能,并提供完善的各种服务来建立、 运行和管理关键任务应用系统。开发人员能够用它建立跨多个硬件平 台、数据库和操作系统的可互操作的应用系统。BEA TUXED是企业、 In ternet分布式应用中的基础主干平台。它提供了一个开放的环境, 支持各种各样的客 户、数据库、网络、遗留系统和通讯方式。 BEA

2、 TUXEDO使分布式关键任务应用系统具有大型主机的性 能,从而使这些应用系 统能够应付数以千计的用户,大交易吞吐量, 多并行数据库存取和大量数据,同时保持较短的反应时间,较高数据 完整性和安全性,并且确保全年3 6 5天,每周7天,每天2 4小时 的系统可用性。同时,BEA TUXEDO还能让开发人员和系统管理人 员享用分布式运 算环境提供的好处,如技术成本的低增长率,灵活 性提高,快速应用开发和安装以及业务信息存取得以改善。 1.2 BEA TUXEDO的组件软件模型 关键业务应用通常是面向事务的,要求具有准确的数据完整性、 较好的性能和管理需求。这些需求要求对应用的开发、调度和操作给 出

3、一个结构化的方案。由像BEATUXEDO样的中间件支持的组件软件 模型为分布式环境处理关键性业务应用提供了一个结构化的解决 方案。BEA TUXED(和基于组件的应用设计从异构的计算资源中创建 了一个虚拟主 机:在分布 式应用系统级提供可管理的相互关联的 资源。 许多组织在进行了一段时间的分布式应用工作后,现在已经认识 到组件软件模型是他们的必然选择。分布式应用的直接动力是主机应 用和集中式中规模的应用系统基础上又逐渐配备有大量的台式系统 和服务器系统,这些分布式系统在标准网络传送协议的支持下,呈松 散耦合的态势,事实上它们构成了网络计算资源的基础。 在开始的时 候,分布式系统主要服务于把集中

4、式系统的前台应用迁移到网络环境 -主要用台式处理器和文件 服务器 实现文档处理和电子邮件通 讯应用系统。接着,两层的客户/服务器数据库应用在部门级被采用, 这类应用把交互式文件共享进化到并发数据元素访问, 在数据级支持 更细粒度的管理。虽然这些客户/服务器应用具体化了真正分布式应 用处理的概念,它们仍留有为某一目标定制的特性, 规模和管理能力 都有限。更重要的,这些应用只停留在较细粒度的数据访问上,使得 整个应用系统宛如磐石,不能有效地利用网络资源。 面对更大规模的关键业务应用,如要进行有效的分布式处理,就 要求从客户/数据库方案转变到三层 客户/应用系统/数据服务器结 构。以后者为核心的组件

5、软件 模型是客户/服务 器计算的拓展,它 支持应用分区,能有效地开发和调度应用业务逻辑, 管理分布式应用 的可靠执行。 BEATUXEDO采用三层结构的组件软件模型。图 1表示BEATUXEDO 的组件软件模型的概要。该结构分为三层: C C C 1 Applicotion TL L Application D D 图1 BEA TUXED O的组件软件模型概要 1.3 TUXEDO的特点 1.3.1.减轻开发人员负担 BEA TUXEDOS三层结构组件软件模型将用户界面的表示部分和业 务逻辑部分按客户 组件服务器组件分开,使开发人员能够按组件的 思想专注入于业务逻辑的开发,用户界面部分可用流

6、行的前端开发工 具来快速完成。而客户和服务器之间、服务器和服务器之间的通讯, 异构平台之间的数据变换,以及服务器和数据库之间的集成和事务控 制都由BEA TUXEDO来完成。当数据库或服务器端的业务逻辑改变 时,客户端则不一定要改变;反 之当客户改变或增加新的客户界面 时,服务器端则不一定要改变,大大增加了应用系统的各部分的可复 用性。BEA TUXED提供的简洁API使用户程序能够物理地点透明地 在客户 和服务器之间、 服务器和服务器之间进行各种方式的通讯, 极大地减轻开发人员的负担。 BEA TUXED提供的通讯方式有同步 RPC调用,异步RPC调用,对 话通信方式,广播 通讯方式,异步存

7、储转发队列通讯,事件通讯方 式等。 132.使系统的安装与升级更容易 在BEA TUXEDO的三层结构组件软件模型下开发的应用程序以 服务器组件和客户组件 为安装、升级的单位,当一个组件需要更新 时,管理人员甚至能够在运行系统不停机的情况下完成系统的升级, 这在客户端为数以千计的关键任务应用中尤为重要。 1.3.3.减轻系统管理人员负担 BEA TUXED系统提供从一个中心点对整个分布式系统进行全局监 控及管理的能力,管理员根据一个整体系统视图(而不仅是单个节 点或单元)提供的信息,可以作出决定和采取动作。BEA TUXEDOS 但提供了一些管理命令,而且提供了一个集成的图形界面管 理工具,

8、集中地 监视和管理应用系统的运行,并且可动态地修改系统配置。 通过Java的applets,还可利用In ternet 的浏览器比如 Netscape 或Microsoft的Explorer来运行该图形界面管 理工具。 此外,BEA TUXEDO供了描述系统中各对象的管理信息数据库 (MIBS和存取 管理这些管理信息数据库的管理 API,用户可利用这 些管理API,编写自己特有的管理工 具。 1.3.4.非常高的性能 一方面,BEATUXED能够使多个客户连接到一个服务器进程,由 这个服务器进程 存取数据库,为客户的请求服务。这样,数据库为 处理连接所需的资源大大减少。另一方面,客户和服务器之

9、间, 服务器和服务器之间的通讯中,网络上流动的只有相对较少的客户 或服务器的请求和服务器处理的结果,而不再是两层结构中客户和 DBMS之间的大量SQL请求和应答。此外,利用 BEA TUXED特有的 一些机制也能极大提高应用系统的性能。比如利用异步RPC机制 实现扇出并行,利用转发机制实现流水线并行,利用多服务器单队列 实现多处理并行等。所有这些因素使 BEA TUXED的应用系统具有极 高的性能。世界上大部分硬件服务器的 TPC性能指标都是在BEA TUXED上完成的 135.更高的可用性 BEA TUXEDO时知道它控制下的资源的情况,并利用这些信息为 应用提供最大可 用性。分布式系统使资

10、源故障的影响复杂化。在一 个分布式系统中,多个节点代表更多的潜在故障点的可能, 但也可以 代表在资源恢复开始时在其他节点上重新分配工作的更大潜力。 BEA TUXEDO这种分布式系统故障恢复上具有优势。 TUXED将重 启应用进程,并且 能在硬件故障情况下在其它结点上重新运行进 程。 1.3.6.分布式环境中更高水平的数据完整性 BEATUXED设计了数据资源的绝对完整性。目前出现的客户 /服务 器应用中,重要 数据资源很可能是广泛的,而且受异构系统的控制。 应用可以设计成用严格的保证数据一致性的两阶段提交,或者用更多 的缓冲存储和转发技术来管理异构的(或者同构的)数据库的更新。 在各种情况下

11、,BEA TUXED能够确保异 构的(或者同构的) 数据 库以 及 它资源管理器之间的完整性。 137、系统的安全性 BEA TUXEDO通过结构化用户界面支持应用服务的验证、授权和 存取控制,允许用 户加入自己的验证服务模块。BEA TUXEDO还提 供信息加密服务,允许对网络上传输的 信息按RSA的RC4算法加 密。目前美国本土内可按128位,本土外可按40位加密。 1.3.8、开放系统中最开放的中间件平台 BEA TUXEDO个非常开放的平台,支持三十多种服务器平台, 包括大多数的UNI刈服务器,WindowsNT服务器,IBM的S/370,S/390, 加上AS/400和 Tan de

12、m公司的No nStop系统。它的客户支持几乎所有 的工作站,包括 UNIX,MS-DOS,Windows3.1/95. Windows NT, OS/2,Macintosh 等。BEA TUXEDO支持X/Oper组织 的分布式 事务 处理模型DTP事务定界标准TX,应用程序事务处理接口标准XA TMI以及和资源管理器(像数据库系统)的接口标准XA并且还 支持事务处理器之间的互操作标准OSI-TP。BEA TUXED的客户端通 过 DLL 可以和 Visual C+、Visual Basic、Power Builder、SQL Windows Delphi、Develop/2000 以及其他

13、 4GI和CASE工具互连。 此外,BEA TUXEDO得到其他第三方开发管理工具厂商的支持。 1.3.9、系统的伸缩性 简单地说,软件可伸缩性就是可以很容易地增加被支持的用户数 和应用的全局吞吐量。 一个可伸缩的软件系统是利用网络分布系统优势的关键。BEA TUXE 供的就是 这样一个系统,它可以利用在一个网络上所能找 到的所有的异构的资源以获得最大的效益。BEA TUXED提供这一点, 而且提供许多可伸缩性选项。 垂直方向的可伸缩性代表的 含义与通 常相同,即将系统转变(升级)为一个更大,更有力的相同或不同结 构的平台。水平方向的可伸缩性多是在分布式系统结构中,它以增加 适当规模的附加系统

14、来增强网络应用。 所增加的附加系统与原有系统 可能是同构的,也可是异构的(那就是不同的处理机或操作系统)。 BEA TUXED支持二维的可伸缩性。二维可伸缩性可在结构上的任 意位置添加异质 资源,而不改变已存在的应用的结构。允许对一个 复杂的混合结构的支持,为联机网络系统提供了广泛的规模选择范 围。任何与数据表示有关的(如不同的处理器表示)可以由BEA TUXED透明地解决。 BEA TUXEDO还可根据系统负荷的变化动态地增加或减少应用服 务器的个数。 1.3.10、广泛的开发工具支持 除了像C, C+和COBO这样的第三代语言编程环境,BEATUXEDO 系统享受最广泛的第三方工具的支持,

15、下面是开发BEA TUXED应用 目前可用工具的一个列表。 表1 TUXEDC允许的开发工具选择 公司 开发工具 客户端 服务器端 Ally Ally 4GL * ? In formix IFORMIX 5.0 (XA) ? ? In formix TP Toolkit * ? ? ITI TP Tools * ? ? Oracle ORACLE 7.0 ? (XA) ? Develop /2000 ? Gupta SQL Win dows ? Novell Visual ? Appbuilder Novell USL WKSH ? Un ify Accell 4GL ? ? Jyacc JA

16、M/JPL* ? ? TI IEF CASE* ? ? Magna Mag na X* ? ? Powersoft PowerBuilder* ? Delphi Delphi ? Microsoft Visual Basic ? ? Visual C+ ? 此外BEA TUXEDO的关联产品 BEA CONNEC允许BEA TUXED(和 IBM 的 CICS IMS、Unisys 的 System2000进行互操作,BEA Jolt 支持从In ternet 浏览器上请求 BEATUXEDO的服务。BEABuilder 和 BEA Manager将BEA TUXED应用的开发与管理更为简化。

17、 1.4 BEA TUXEDO 的组成与功能 BEATUXEDO应用程序既可服务于带有少量客户和服务的单个 服务器系统,又可服务 于由成千客户、成百服务器和众多服务器组 件和服务构成的大规模的分布式环境。 一个这样的应用程序是以业务 逻辑服务、由这些逻辑服务组织成的高层服务器组件和在服务器结点 环境中的组件分布为特征的。支持这种虚拟主机环境的BEA TUXEDO 元素包括配置信 息库和实现运行时应用管理的核心子系统。 1.配置信息库 BEA TUXEDO应用程序由配置文件指定,这些配置文件被转换 成若干紧耦合的运行时共享信息库。这些共享库(在 BEA TUXEDO 中称公告牌,Bulletin

18、 Board)驻留在每个参与 应用的服务器结点上。 BEA TUXEDO子系统访问和操作这些库。 (1)应用程序配置 一个BEA TUXEDO应用程序包括在一个高度分布的环境中运行 该应用所需的资源。开 发人员 编写服务的代码,应用管理员通过构 造定义操作参数和资源分配的配置文件创建应用程序。配置信息驻 留在一个可编程访问的管理信息库 (MIB )中。MIB最少包括下列配 置信息: 系统范围的资源,包括有关全局应用属性(如安全性级别)、是否 进行负载平衡、启动一个应用系统所需的资源定义和故障恢复时 所需的资源定义。 参与应用的每个服务器机器的定义和驻留在这些机器上的BEA TUXEDO文件的规

19、格说明。 单个服务器可与其他组成员共享的资源组,如事务管理;组也定 义了服务器和所操作的资源管理器之间的映射。 服务应用程序所需的映射成进程的服务器,在这些服务器进程中 实现了应用业务逻辑。一个 BEA TUXEDO配置允许一个管理服 务器或者从分布在一台/多台机器的一个/多 个组中配置多个服务 应用服务器进程定义的服务;服务级的属性包括负载因子、服务 处理时间的相对量、该服务相对于服务器中提供的其他服务的优 先级。 头三个配置属性定义了应用的处理元素(如处理结点)、全局属性和 某一主资源的特殊指定。组、服务器和服务集中在 BEA TUXEDO软 件组件模型的分布式应用资源上:BEA TUXE

20、DO应用程序定义 了提供所需服务的服务器组件分组;可配置的服务器实例数量能在 多个机器上调整;而且,BEA TUXEDO能管理广播的单个服务和它 们的相对优先级。 (2)公告牌 BEA TUXEDO应用配置文件被映射到一个运行时数据结构:公告 牌(BB)。BB作为一个从配置文件中派生出来的共享信息库。BB 驻留在每个参与到由配置文件指定的应用程序的BEA TUXEDO的 服务器结点上。BB作为分布式应用的名字服务数据库。 它作为应 用 统计数据的运行时仓库,提供分布式环境下的应用对象的位置信息。 BB由BEA TUXEDO核心例程(对应用开发者透明)访问,由核心 例程读/修改BB库。这个信息库

21、提供 BEA TUXEDO完成动态客户/ 服务器映射所需的信息,同时也提供完成诸如负载平衡、安全性和 事务协调等功能的信息。 2.事务管理器 事务管理器是BEATUXEDO体系结构的中心,它是每个 BEATUXEDO 服务器的核心,提供重要的分布式应用服务、命名、消息路由、负 载平衡、配置管理、事务管理和安 全性。它也包含BB结构,使用维 Bulleiin Board) Server InFc Service Info CEinl lrfo 护和访问BB信息的服务。换句话说,BB内包含有可靠执行和管理大 规模的基于组件的应用程序所需的所有信息, 它将对事务管理器进程 起作用。事务管理器的基本操

22、作见下图的图示。事实上,事务管理器 是负责客户/服务器绑定和支持BEATUXED虚拟主机属性等特色的子 系统。图4来自网上的客户请的客户代理进程,服务器通过注册参 加到该应用中。作为客户方通讯的一部分,事务管理器访问BB,然 后选择服务器,接着,服务器消息队列的地址被返回,客户方的请求 被马上传送到合适的队列等待服务为它进行处理。 1)名字服务/位置透明性 BB作为BEATUXED应用程序的名字服务器,复制到每个参与的结 点上。为了便于快速访问,名字服务器作为在共享内存中的一个结构 存在。事务管理器使用BB名字信息、配置信息和环境统计信息自 动把服务请求平衡到可用的服务器上,并且根据数据内容为

23、客户请 求选择路由,为服务请求选择优先级。编程员把应用程序编成对逻辑 入口项(称有名服务)的函数调用。事务管理器把这些逻辑请求映射 到服务器结点/服务器进程环境内指定的服务实例。 2)数据依赖型路由 数据依赖型路由是根据数据缓冲区中一个指定域的值,把一个服 务请求映射到一个指定的服务器组的机制。因为BEA TUXED服务器 组映射成指定的资源管理 器/数据 库实 例,所以请求被导向到一个 指定服务/资源管理器的组合。例如,一个银行的数据库可把存储在 不同数据库实例中的不同范围的帐号进行水平分区。 用户可用事务管 理器进行路由选择,而不用把特定分区信息编码成访问帐号的应用代 码。事实上,事务管理

24、器查看指定的数据值,参考存储在BB中的路 由信息,然后把请求发送到能在正确数据分区上操作的服务。如果用 户需要改变数据库分区(把一个分区移到一个新服务器上, 或在已有 分区实例上改变帐号分布),那么,他只需改变事务管理器的路由信 息,应用程序的代码不受影响。 图5数据依赖 型路由:帐号操 作的请求与数据 分区是独立的,事 务管理器访问 BB 路由表信息,把请 求映射到访问相 应分区的服务器 组,然后返回该组 指定服务的绑定。 ROUTING TABLES: Accouisrrjc:. X: COUNrjL CUEZ: rpcall rWHI-IDKAW fL w/ACCOUNfJD ioooa

25、j; fpodJl rOPEN*, FML w/BEANCHJID 5; tpeaH riNQUIRY FML w/ACcaiiNrjD pooot; acct 1: HR 4l I OPfM CLOSE WITHORAW DEPO5I1 INQUIRY GROUP bANK El 加钊iJia.IIXlOO纬站* BrMd-讪丨胡I ACCT i: OPEN CLOSE WITHDRAW PCPQ5IT IMOIIHV OROUP EANK B2 ABvnt idWOQr 77? Qranchjd; i-T GROUP EANK E3 _L 6: WITHQFL 収 W DE PC 11 I

26、NQUIRY Ac con nt刖 自 ranHS-IC 3)负载平衡 为了确保应用流量最大,事务管理器自动地在系统中完成负载平 衡和调度。通过使用每个服务的负载因子,事务管理器把请求发送给 能最快处理该请求的服务器。事务管理器通过为当前排队的请求总计 负载因子来决定给定服务器上的负载。下图给出了事物管理器负载平 衡能力如何帮助优化应用流量的一个例子。 图6负载平衡: 服务A,B,C由不 同的服务器提供,每 个服务器有一个基 于当前排队请求的 负载值。事务管理器 决定哪一个服务器提供服务,哪一个服务是负载最小。事务管理器将 在一个给定结点内或在提供服务的若干结点上,进行负载平衡 4)优先权 请

27、求优先权是事务管理器提供的另一个核心能力。某一服务请求 经常需要比其他服务更高的优先权。 例如,航空公司取消订座的优先 级要比订座的优先级高:对大多数航空公司来说,要尽可能地再次买 出被取消的座位。优先权在服务队列级有用,参见下图的图示。 Order of Dequaueing 2 5 1 4 3 C A C d Server 1 J 70 50 70 50 5 432 1 图7优先权:右例中, 服务器1提供服务A, B, Co A, B服务的优先级是 50,C的优先级是70。在 上一个请求完成时,服务 器在队列中选择下一个请 求。下一个请求是由优先级决定的,而不是根据请求在队列中的位置 为了

28、防止低优先级请求总是得不到服务,每隔十个请求,就按FIFO 次序进行一次请求选择。 5)稳固的运行环境 事务管理器包括许多支持应用可用性的特征,如进程可用性检查、 超时检查、自动服务器重启和恢复过程、用户可定义的恢复过程。事 务管理器不仅仅控制应用程序的活动流而且能确保其流畅有效的操 作。 6)安全性 事务管理器通过一个结构化的安全性接口提供应用服务的验证、 授权和访问控制。该接口概括了 Kerberos安全模型,允许Kerberos 或类似的最终用户验证机制与应用集成。用户能用访问控制列表保护 服务、队列或事件免遭未授权的访问。 7)分布式事务处理 分布式事务处理(DTP能力能保证跨几个场地

29、访问的数据和由 不同数据库产品管理的数据的完整性。事务管理器协调分布式事务使 之完成网络环境下针对异构数据库的多场地修改。 事务管理器用全局 事务跟踪事务参与者,管理两阶段提交协议。这样就可确保每个场地 都能正确处理事务的提交和回退。事务管理器还在出现场地故障、网 络故障或全局资源死锁时协调全局事务的恢复。事务管理器使用开放 小组的X/Open XA接口,进行不同 资源管理器之间的通讯。该接口 已被X/Open接纳为分布式事务控制的标准接口 因为高性能和事务流量对 OLTF系统产品是关键因素,所以事务 管理器DTP软件使用了最小化磁盘写的算法。 在其他属性中,事务管 理器DTP开发了一些众所周

30、知的技术如协调者迁移、 只读和一阶段提 交优化。 事务管理器由几个关键子系统支持,这些子系统扩展了BEA TUXEDO客户/服务器功能和与异构应用系统的互操作性。下面的几 个段落将描述这些关键子系统: 管理 BEA TUXEDOt分布式应用管理的关键性问题给出了一个结构化的 解决方案。BEA TUXEDO勺管理接口包括一个综合性的命令行/脚 本接口,一个编程接口和一个管理信息库(MIB),它们把BEATUXEDO 实现成一个更大管理环境中的受控应用程序。一个易用的基于 GUI的管理应用程序可利用这些管理接口,在 BEATUXED环境上 提供了高层控制。BEATUXED资源,从 高层的域属性向下

31、贯穿 一 个单服务器进程的特 性,支 持图形化表示和拖放功能。 集中式的应用定义 事务管理器使得应用管理员可在一个文件中定义组成BEA TUXEDO 应用程序的硬件、软件和网络资源。应用设计者能叙述在何处运 行服务器和服务以及在处理器出故障时服务应该迁移到何处。他 们可把各种不同的特性,包括调度信息、进程恢复标准和超时时 间段等,赋给应用服务器。事务管理器为动态启动、停止或管理 一个分布式应用程序提供中央配置管理和工具。 动态重配置 用户可动态启动或停止服务;用户可选择可用的服务。用户可在 一个配置中增加新的机器、组、服务器和服务。另外,事务管理 器可用不同的参数如超时故障等,使得一个无法使用

32、的处理器上 的服务器和服务在不中断运行程序的条件下移向另一个处理器 上。 第二章开发与应用 2.1 开发BEA Tuxedo应用程序 在开发BEATuxedo应用程序之前,你需要先搞清楚一系列和 设计开发相关的概念,如识别什么是客户机,有哪些方法可以从外界 收集数据并提交服务器进行业务处理; 识别什么是服务器,哪些程序 包容了可以处理客户机输入的商业逻辑;识别什么是类型缓冲区,客 户程序在向其这程序发送数据前如何分配内存区域;什么是BEA Tuxedo的消息范例等。最后你还要弄明白客户程序是通过调用ATMI 库来访问BEA Tuxedo系统的。 创建BEA Tuxedo的客户程序与在 C和C+

33、编程语言中创建其它 应用程序一样,BEA Tuxedo提供了一个其于C语言的编程接口,即 应用程序事务监控接口 ATMI,这套接口很容易使用,以便用于开发 客户程序和服务程序。除了 C语言接口外,BEATuxedo还提供了 COBOL 接口。 2. 1. 1创建服务程序 2.1.1.1 概述 尽管开发者使用ATM编程接口来创建BEA Tuxedo客户程序和服务 程序,但服务程序不全部由开发者来编写, 开发者只需写一些称为服 务的商业函数,封装业务逻辑,然后和 BEATuxedo的一些二进制程序 联编成一个可执行的服务程序。BEATuxedo服务程序启动后,它总是 保持运行状态,只到接收到一个s

34、hutdown消息为止。一个典型的BEA Tuxedo服务程序在shutdown或reboot之前都在执行着数千个服务。 2.1.1.2服务的运行流程 为了更好的了解服务端的所有任务以编写服务端应用,有必要重新 认识服务端在C/S模式中扮演的角色。 首先,服务是系统资源的联系点。例如,一个数据库服务联系实际 数据库并对其进行查询和修改。为有效进行,应建立一个数据库连接。 其次,服务必须发布系统内可以访问的交易,保证客户端可以知道 把请求发往何处。 以上两步结束后,服务进入一个循环接收请求、处理请求并返 回结果。接收请求包括进入消息队列,得到交易请求。处理请求包括检 查请求数据缓冲,运行商业规则

35、和逻辑,可能还包括访问数据库和返回 结果数据缓冲。 当系统管理员需要关闭系统,可以通过系统管理工具将关闭系统的 消息发给服务。服务完成所有交易,取消交易发布,关闭资源连接然后 结束。 2.1.1.3 服务程序的任务 (1) 在BEA Tuxedo服务程序启动时,执行tpsvrinit()函数,可以 在里面打开一些如数据库之类的资源供以后使用; 在BEA Tuxedo服务程序关闭时,执行tpsvrdown()函数,可 以在里面关闭tpsvrinit()中打开的资料; BEA Tuxedo服务程序以服务的形式来响应客户程序的请求, 客户程序不是通过名字来调用服务程序的,而是调用服务,客 户程序不知

36、道处理它请求的服务程序的位置; (4) 服务程序调用tpreturn()函数来结束服务请求,并返回一个缓 冲区,必要时,将它传给客户程序; 注:如果是在tpsvrinit()中连接数据库,为了保证数据库的 正常连接,在执行服务的时候,最好能够判断数据库是否断开连接, 如果断开连接,则重新连接数据库。这样可以从根本上保证系统能够 持续稳定的长期运行,基本上不需要人工干预。也就不再会出现“数 据库重启了,中间件必须重启”的情况。 击huts down 2.1.1.4 返回控制 在一般的C程序中,函数通过调用return()将控制返回,函数调用 堆栈清空,控制返回调用点。TUXEDO系统的交易函数必

37、须结束于将 回应返回给客户端或前转到另一交易。函数tpreturn()用来结束交易将 回应数据缓冲发给客户端。函数tpforward()将交易前转给另一个交易, 由其负责回应原来的客户端。下图是tpreturn()的示意图。 服务端过程 tpreturn(TPSUCCESS,O,t-data,O,O); tpreturn()设计来代替常规的return(),结束绝大多数函数。它将回应 数据缓冲返回请求的客户端,控制权返回给服务程序的标准main()(由 TUXEDO提供)。tpreturn()使用下列参数: 第一个值表示交易是否成功,有3种可能: TPSUCCESS交易完全成功,如果是一个会话

38、, TPEV_SVCSUCC 被生成 TPFAIL 交易失败,tperrno将被设成TPESVCFAIL。如果 是事务模式,事务被标志成abort-only,如果是会话, TPEV_SVCFAIL 被生成。 TPEXIT 与TPFAIL类似,但服务会中断,如果服务设成可 以重启动,则可以由TUXEDO系统将其重启动 第二个值是应用定义返回码,此处使交易可以发送一个整形代码到客户 端,给出交易处理结果的详细信息。该值与/T系统无关,通过全程变量 tpurcode送到客户端程序。 第三个值是回应数据缓冲的的指针 第四个值是回应数据缓冲的长度(仅缓冲类型为CARRY时需要) 第五个值是标志位,通常不

39、用 2.1.1.5 初始化和结束服务 tpsvrinit() 和tpsvrdone()分别用来启动和关闭服务。如果应用不 提供这两个函数,可以使用替代函数。tpsvrinit() 用tpopen()缺省打 开 RM连接。tpsvrdone()用 tpclose()关闭 RM连接。 tpsrvinit() 象标准C语言的main () 样使用参数argc,argv 。服 务的命令行参数可以传入该函数,被getopt()解析。该部分的用法参见 应用配置部分。本函数出错时返回-1,成功返回0。 tpsvrdone()无参数,无返回值。 2.1.1.6创建(编译)服务 当C语言的交易程序编码完后,需要

40、连接正确的库并编译。使用 buildserver可以使该过程容易一点。该命令引用了 C语言编译器并按 正确的次序连接TUXED系统的库,连接TUXED生成的ma in ()等。 buildserver还用-s参数产生合适的交易名/函数名映射表。要使用 buildserver ,必须先正确设定环境变量 TUXDIR PATH LD_LIBRARY_PAT命令语法如下: buildserver -v o executable -s service2,service3:f unc -f source/object -1 object/library file 例: buildserver - s D

41、EPOSIT - o TLR - f TLR.o - f appinit.o 参数解释如下: -o生成的可执行文件名 -f需要在连接TUXED库之前传给编译器的文件名。如有多于一个的文 件名,名字应用空格分隔并用引号引起。也可以使用多个-f参数。 -l需要在连接TUXED库之前传给编译器的文件名。语法同上。 -v编译过程显示。 -b指定SHM MP模式。如无此项,两种模式都包括;使用此项可以使 生成的可执行文件小一点 -r连接此处指出的RM库。该RM勺名字必须含在$TUXDIR/udataobj/RM 文件中。 2.1.1.7 调试和错误处理 对于服务程序的调试,确实是一件非常令人头痛的事.在

42、Unix环境 下,目前还找不到很好的方法,一般经常使用的方法 是”print,Userlog ”跟踪法,但是这种方法太累了 .因此,有人想出了 在windows环境下跟踪调试,发现没有任何错误后再放到 UNIX环境进 行编译,并正式使用.目前,我们公司采用的就是这种调试方法,在 windows环境下(C+ Builder)编写一个tuxedo模拟测试服务程序,使 其能正确的识别客户端调用的服务,并正确的调用相应的服务. 2.1.1.8 程序范例 (1) 源代码 文件名:simpserv.c #i nclude #i nclude #i nclude /* TUXEDO Header File

43、*/ #i nclude /* TUXEDO Header File */ /*当服务器启动时,在处理请求之前,tpsvrinit被执行,这 个不是必须的,对应的函数是 shutdow n*/ #if defined(_STDC_) | defined(_cplusplus) tpsvrinit(int argc, char *argv) #else tpsvrinit(argc, argv) int argc; char *argv; #en dif /*当argc, argv没有被使用时,一些系统会发了警告*/ argc = argc; argv = argv; /* userlog用于将

44、TUXEDO消息写到日志文件中*/ userlog(Welcome to the simple server); return(O); /* TOUPPER真正处理客户请求,它接收的参数是一个缓冲 区指针*/ #ifdef _cplusplus extern C #en dif void #if defined(_STDC_) | defined(_cplusplus) TOUPPER(TPSVCINFO *询厂 #else TOUPPER(rqst) TPSVCINFO *rqst; #en dif int i; for(i = 0; i len-1; i+) rqst-datai = to

45、upper(rqst-datai); /*返回转换后的类型缓冲区 */ tpreturn(TPSUCCESS, 0, rqst-data, 0L, 0); L 程序说明 语句 说明 whole file 整个服务程序不提供 main函数,在build时,由 BEA Tuxedo系统提供。 tpsvri nit() 在服务器初始化即处理请求之前被调用。若没有提 供该函数,BEA Tuxedo系统会提供一个缺省的, 它向USERLOG中写一条消息,说明服务器已经 被启动。userlog(3c)是系统提供的一个与日志的方 法。 TOUPPER() simpserv 提供的唯一一个服务,它接收一个 T

46、PSVCINFO结构,它包含了要被转换成大写的字 符串。 for loop BEA Tuxedo系统的循环,用于逐一转换。 tpreturn() 程序编译: $buildserver - o simpserv - f simpserv.c - s TOUPPER (-s TOUPPER!明了在服务器启动时需要提供的服务) 2. 1.2创建客户程序 2.121 概述 创建BEA Tuxedo的客户程序与在 C和C+编程语言中创建其它 应用程序一样,BEA Tuxedo提供了一个其于C语言的编程接口,即 应用程序事务监控接口 ATMI,这套接口很容易使用,以便用于开发 客户程序和服务程序。除了 C

47、语言接口外,BEATuxedo还提供了 COBOL 接口。 2.122客户端在C/S模式中的作用 为了更好的了解客户端的所有任务以编写客户端应用,有必要重新 认识客户端在C/S模式中扮演的角色。 首先,客户端是用户界面。意思是当用户在系统上用程序进行一次 操作的整个过程就是一个客户端过程。前端过程是对客户端的另一个描 述。客户端的首要任务就是获得执行操作应该得到的数据。一旦客户端 得到了应有的信息,应该将数据按服务能够识别并适合传输的格式打 包。 然后,向服务端发送请求并等待回应。收到回应数据后,将其按一 定格式返回给终端用户。 2.1.2.3 客户端开发过程 客户端程序的设计和实现可以被分成

48、 2部分考虑:用户处理过程 和TUXED功能部分。下文的客户端程序只描述了 TUXED功能部分。 利用TUXED的ATMI API调用可以做到: 基本的 TUXED调试技巧(tperrno,tpstrerror,userlog ) TUXEC进程管理(tpinit,tpterm) 基本数据缓冲管理(tpalloc,tprealloc,tpfree) 基本通讯(tpcall,tpacall,tpgetrply) 客户程序一般执行如下任务: (1)用tpchkauth()决定加入一个应用程序所需的安全级别。可 能出现的响应包括:没有安全级别,应用程序口令,应用程 序授权,访问控制列表,连接级加密,

49、公钥加密,审计。这 些可以根据你的需求进行选择;在实际的应用中很多的软件 开发商通常对这一步都不做处理。 (2) 调用tpinit() 来连接到一个BEA Tuxedo应用程序,所需的 安全信息作为tpinit()的参数传给了应用程序; (3) 执行服务请求; (4) 调用tpterm()来断开和BEA Tuxedo应用程序的连接 mai n() =系统级管理 v 数据缓冲管理 发送请求、等待响应_ 通讯 tpin it();连接应用 p=tpalloc();分配数据缓冲 tpcall(TOUPPER,p,0, tpfree(p);释放数据缓冲 tpterm(); 切断连接 return 2.

50、1.2.4 调试和错误处理 当调用ATMI出错时,返回值为-1,全程变量tperrno被设值,该 变量提供系统定义的出错原因。函数tpstrerror() 以此变量为参数,返 回错误的字符说明信息。 完整的错误号和文本错误信息存在于文件 $TUXDIR/i nclude/atmi.h 。函数 userlog() 重定向输出文件为 ULOG.mmddyy使用方法同printf()。该函数每次输出都写硬盘,这样 在系统失败时也能保留调试信息。 代码范例 ret = tpterm(); if ( ret = -1 ) printf( “ Error in exit ing applicatio n)

51、; usrlog( “ATMI error logged %d %s ” ,tperrno,tpstrerror(tperrno); 2.125 进程管理 tuxedo接到一个tpinit的请求后,就启动一个服务进程,接收到 tpterm()后,就会中止该服务进程.在实际应用中,tpi nit()和 tpterm()必须成对出现,而且要相互对应.如果只在程序中调用了 tpinit() 而没有调用tpterm(),则tuxedo系统会认为该进程一直处于 活动状态,这样的话可能会因为服务进程达到系统允许的上限而导致 系统的崩溃. int tpinit(TPINIT *tpinfo) 客户端通过调用

52、tpinit()与应用连接,进行交互,有以下事件发生: 调用安全接口检查客户端是否需要认证 连接BB,使进一步的ATMI函数得到信息 使BBL 了解BB中已经存在请求 建立客户端消息队列使服务可以发回返回信息,系统可以送出广播通知 等错误时返回-1,可能由以下原因引起: TPEINVAL参数错误 TPENOENT BB 无空间 TPEPERM无连接权限 TPEPROTO协议错误-被服务调用 int tpterm() 客户端调用tpterm()切断与应用的连接,结束了客户端的TUXEDO进 程,该过程发生以下事件: BB入口删除,使BBL知道客户端已经离开 客户端离开BB,客户端的信号量被移除

53、客户端消息队列被移除 错误时返回-1,可能由以下原因引起: TPEPROTO 协议错误-被服务调用 TPES YSTEM /T系统下错误 TPEOS操作系统错 根据tpinit()和tpterm()在客户程序中不同位置的调用,可以把 tuxedo的进程连接分为长连接和短连接两种.长连接是指在程序开始 的时候调用tpinit()建立服务连接,在程序中止的时候调用tpterm() 中止服务连接.这样做的好处是,当用户频繁的进行业务操作时,不用 频繁的进行进程连接,大大的缩短了操作时间,提高了程序的执行效 率.但是,这也一个缺点,那就是,只有用户不从客户程序中退出来,不 管做不做业务,都会在系统中占

54、用一个进程连接,从而会影响其他用 户的连接.短连接指的是用户每做一次业务,都需要调用tpinit(), 业 务完成后调用tpterm().这样做的好处是,1000个终端用户和10000个 终端用户同时操作,对系统来说,基本上是一个概念.但是这样做会浪 费大量的时间在进程连接上,从而影响了业务的处理效率.为了协调 长连接和短连接之间的矛盾,我曾经给出了一个很好的解决方案,那 就是在长连接的基础上进行优化处理,当客户程序5分钟(这个值可以 自定义)没有向服务程序发送任何服务请求,则调用tpterm()断开服 务连接.仅仅这样还是不行的,我们还必须在客户程序向服务程序发 送业务请求之前,首先判断进程

55、连接是否断开,如果断开,则重新连 接. 2.126数据缓冲管理 在Bea Tuxedo系统中的所有通信过程都是通过类型缓冲区来 完成的,Bea Tuxedo系统提供了大量的类型缓冲区来供开发者使用。 所有类型缓冲区都必须通过Bea Tuxedo的tpalloc(), tprealloc(), tpfree()这些ATMI来分配回收,它们都有特定的头部。 以下是TUXEDO基本的数据缓冲类型: STRING 以空值结尾的单域字符数据。 CARRAY有长度定义的单域二进制数据,不进行编、解码。 VIEW类C结构或COBOL记录的多域组织。 FML无固定结构的自定义缓冲。 tpalloc(),tpr

56、ealloc()在出错时返回空值,可能由以下原因引起: TPEOS 操作系统 TPEINVAL 非法或不正确的类型 TPESYSTEM TUXEDO之下的错误 统一定义的类型缓冲区可以使它们在跨越不同网络、不同协议、 不同CPU勾架以及不同操作系统之间得到统一的处理, 这就使得开发 者在分布式计算环境中有效地避开了异构网络和异构计算机系统带 来的差异,把精力集中在商业逻辑的开发上。 XML 2.127程序范例 (1) 源代码 文件名:simpcl.c #i nclude #include atmi.h/* TUXEDO 的头文件 */ #if defined(_STDC_) | defined

57、(_cplusplus) main (i nt argc, char *argv) #else main( argc, argv) int argc; char *argv; #en dif char *se ndbuf, *rcvbuf; long sen dle n, rcvle n; in t ret; if(argc != 2) (void) fprin tf(stderr, Usage: simpcl stri ngn); exit(1); /*作为一个客户过程连接到 System/T */ if (tpinit(TPINIT *) NULL) = -1) (void) fprin

58、tf(stderr, Tp in it failedn); exit(1); sen dle n 二 strle n(argv1); /*分配一个供请求响应使用的 STRING缓冲区*/ if(se ndbuf= (char *) tpalloc(STRING, NULL, sen dle n+1) = NULL) (void) fpri ntf(stderr,Errorallocati ng send buffern); tpterm(); exit(1); if(rcvbuf = (char *) tpalloc(STRING, NULL, sen dle n+1) = NULL) (vo

59、id)fpri ntf(stderr,Errorallocat ingreceive buffern); tpfree(se ndbuf); tpterm(); exit(1); (void) strcpy(se ndbuf, argv1); /* Request the service TOUPPER, wait ing for a reply */ ret = tpcall(TOUPPER, (char *)sendbuf, 0, (char *) if(ret = -1) (void) fprintf(stderr,Cant send request to service TOUPPER

60、 n); (void) fprin tf(stderr, Tperr no 二 %dn, tperr no); tpfree(se ndbuf); tpfree(rcvbuf); tpterm(); exit(1); (void) fprintf(stdout, Returned string is: %sn, rcvbuf); /* Free Buffers tpfree(rcvbuf); tpterm(); return(O); 程序说明: 语句 说明 atmi.h 调用ATMI函数必须的头文件 tpi ni t() 客户程序调用它来加入应用程序 tpalloc() 用于分配类型缓冲区的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论