• / 88
  • 下载费用:20 金币  

tuxedo教学教育培训教育资料.doc

关 键 词:
tuxedo 教学 教育 培训 资料
资源描述:
\\BEA TUXEDO简易培训教程 编写、整理 :文栈良2003-1-21 第一章 认识tuxedo1.1 TUXEDO是什么?BEA TUXEDO是在企业、Internet 这样的分布式运算环境中开发和管理三层结构的客 户/服务器型关键任务应用系统的强有力工具。它具备分布式事务处理和应用通信功能,并提供完善的各种服务来建立、运行和管理关键任务应用系统。开发人员能够用它建立跨多个硬件平台、数据库和操作系统的可互操作的应用系统。BEA TUXEDO是企业、 Internet 分布式应用中的基础主干平台。它提供了一个开放的环境,支持各种各样的客 户、数据库、网络、遗留系统和通讯方式。BEA TUXEDO使分布式关键任务应用系统具有大型主机的性能,从而使这些应用系 统能够应付数以千计的用户,大交易吞吐量,多并行数据库存取和大量数据,同时保持较短的反应时间,较高数据完整性和安全性,并且确保全年365天,每周7天,每天24小时的系统可用性。同时,BEA TUXEDO还能让开发人员和系统管理人员享用分布式运 算环境提供的好处,如技术成本的低增长率,灵活性提高,快速应用开发和安装以及业务信息存 取得以改善。1.2 BEA TUXEDO的组件软件模型关键业务应用通常是面向事务的,要求具有准确的数据完整性、较好的性能和管理需求。这些需求要求对应用的开发、调度和操作给出一个结构化的方案。由像BEATUXEDO这样的中间件支持的组件软件模型为分布式环境处理关键性业务应用提供了一 个结构化的 解决方案。BEA TUXEDO和基于组件的应用设计从异构的计算资源中创建了一个虚拟主 机: 在分布 式应用系统级提供可管理的相互关联的资源。许多组织在进行了一段时间的分布式应用工作后,现在已经认识到组件软件模型是他们的必然选择。分布式应用的直接动力是主机应用和集中式中规模的应用系统基础上又逐渐配备有大量的台式系统和服务器系统,这些分布式系统在标准网络传送协议的支持下,呈松散耦合的态势,事实上它们构成了网络计算资源的基础。在开始的时候,分布式系统主要服务于把集中式系统的前台应用迁移到网络环境----主要用台式处理器和文件 服务器 实现文档处理和电子邮件通讯应用系统。接着,两层的客户/服务器数据库应用在部门级被采用,这类应用把交互式文件共享进化到并发数据元素访问,在数据级支持更细粒度的管理。虽然这些客户/服务器应用具体化了真正分布式应用处理的概念,它们仍留有为某一目标定制的特性,规模和管理能力都有限。更重要的,这些应用只停留在较细粒度的数据访问上,使得整个应用系统宛如磐石,不能有效地利用网络资源。面对更大规模的关键业务应用,如要进行有效的分布式处理,就要求从客户/数据库方案转变到三层 客户/应用系统/数据服务器结构。以后者为核心的组件软件 模型是客户/服务 器计算的拓展,它支持应用分区,能有效地开发和调度应用业务逻辑,管理分布式应用的可靠执行。BEA TUXEDO 采用三层结构的组件软件模型。图1 表示BEA TUXEDO 的组件软件模型的概要。该结构分为三层: 图1 BEA TUXEDO 的组件软件模型概要1.3 TUXEDO 的特点1.3.1.减轻开发人员负担BEA TUXEDO的三层结构组件软件模型将用户界面的表示部分和业务逻辑部分按客户 组件服务器组件分开,使开发人员能够按组件的思想专注入于业务逻辑的开发,用户界面部分可用流行的前端开发工具来快速完成。而客户和服务器之间、服务器和服务器之间的通讯,异构平台之间的数据变换,以及服务器和数据库之间的集成和事务控制都由BEA TUXEDO 来完成。当数据库或服务器端的业务逻辑改变时,客户端则不一定要改变;反 之当客户改变或增加新的客户界面时,服务器端则不一定要改变,大大增加了应用系统的各部分的可复用性。BEA TUXEDO提供的简洁API 使用户程序能够物理地点透明地在客户 和服务器之间、 服务器和服务器之间进行各种方式的通讯,极大地减轻开发人员的负担。BEA TUXEDO提供的通讯方式有同步RPC调用,异步RPC调用,对话通信方式,广播 通讯方式,异步存储转发队列通讯,事件通讯方式等。1.3.2.使系统的安装与升级更容易在BEA TUXEDO 的三层结构组件软件模型下开发的应用程序以服务器组件和客户组件 为安装、升级的单位,当一个组件需要更新时,管理人员甚至能够在运行系统不停机的情况下完成系统的升级,这在客户端为数以千计的关键任务应用中尤为重要。1.3.3.减轻系统管理人员负担BEA TUXEDO系统提供从一个中心点对整个分布式系统进行全局监控及管理的能力, 管理员根据一个整体系统视图(而不仅是单个节点或单元)提供的信息,可以作出决定和采取动作。BEA TUXEDO不但提供了一些管理命令,而且提供了一个集成的图形界面管 理工具,集中地 监视和管理应用系统的运行,并且可动态地修改系统配置。通过Java的 applets,还可利用 Internet的浏览器比如Netscape或Microsoft的Explorer来运行该图形界面管 理工具。此外,BEA TUXEDO还提供了描述系统中各对象的管理信息数据库(MIBS)和存取 管理这些管理信息数据库的管理API,用户可利用这些管理API,编写自己特有的管理工 具。 1.3.4.非常高的性能一方面,BEA TUXEDO能够使多个客户连接到一个服务器进程, 由这个服务器进程 存取数据库,为客户的请求服务。这样, 数据库为处理连接所需的资源大大减少。 另一 方面, 客户和服务器之间,服务器和服务器之间的通讯中,网络上流动的只有相对较少 的客户或服务器的请求和服务器处理的结果,而不再是两层结构中客户和 DBMS 之间的大 量SQL请求和应答。此外,利用BEA TUXEDO特有的一 些机制也能极大提 高应用系统的 性能。比如利用异步RPC机制实现扇出并行,利用转发机制实现流水线并行,利用多服务器单队列实现多处理并行等。所有这些因素使BEA TUXEDO的应用系统具有极高的性能 。世界上大部分硬件服务器的TPC 性能指标都是在BEA TUXEDO上完成的。1.3.5.更高的可用性BEA TUXEDO随时知道它控制下的资源的情况,并利用这些信息为应用提供最大可 用性。分布式系统使资源故障的影响复杂化。在一个分布式系统中,多个节点代表更多的潜在故障点的可能,但也可以代表在资源恢复开始时在其他节点上重新分配工作的更大潜力。BEA TUXEDO在这种分布式系统故障恢复上具有优势。TUXEDO将重启应用进程, 并且 能在硬件故障情况下在其它结点上重新运行进程。1.3.6.分布式环境中更高水平的数据完整性BEA TUXEDO设计了数据资源的绝对完整性。目前出现的客户/服务器应用中,重要 数据资源很可能是广泛的,而且受异构系统的控制。应用可以设计成用严格的保证数据一致性的两阶段提交,或者用更多的缓冲存储和转发技术来管理异构的(或者同构的)数据库的更新。在各种情况下,BEA TUXEDO能够确保异 构的 (或者同构的) 数据库以 及 它资源管理器之间的完整性。1.3.7、系统的安全性BEA TUXEDO通过结构化用户界面支持应用服务的验证、授权和存取控制,允许用 户加入自己的验证服务模块。BEA TUXEDO还提供信息加密服务,允许对网络上传输的 信息按RSA 的RC4算法加密。目前美国本土内可按128位,本土外可按40位加密。1.3.8、开放系统中最开放的中间件平台BEA TUXEDO是一个非常开放的平台,支持三十多种服务器平台,包括大多数的 UNIX服务器 ,WindowsNT 服务器,IBM的S/370,S/390, 加上AS/400和 Tandem公司的 NonStop系统。它的客户支持几乎所有的工作站,包括 UNIX,MS-DOS,Windows3.1/95, Windows NT, OS/2,Macintosh等。 BEA TUXEDO支持X/Open组织 的分布式 事务 处 理 模型DTP,事务定界标准TX, 应用程序事务处理接口标准XA TMI以及 和资源 管理 器 (像数据库系统)的接口标准XA,并且还支持事务处理器之间的互操作标准OSI-TP。 BEA TUXEDO的客户端通过DLL 可以和Visual C++、Visual Basic、 Power Builder、 SQL Windows、Delphi、Develop/2000 以及其他4GL和CASE 工具互连。此外,BEA TUXEDO还得到其他第三方开发管理工具厂商的支持。 1.3.9、系统的伸缩性简单地说,软件可伸缩性就是可以很容易地增加被支持的用户数和应用的全局吞吐量。 一个可伸缩的软件系统是利用网络分布系统优势的关键。BEA TUXEDO提供的就是 这样一个系统,它可以利用在一个网络上所能找到的所有的异构的资源以获得最大的效益。 BEA TUXEDO提供这一点,而且提供许多可伸缩性选项。 垂直方向的可伸缩性代表的 含义与通常相同,即将系统转变(升级)为一个更大,更有力的相同或不同结构的平台。水平方向的可伸缩性多是在分布式系统结构中,它以增加适当规模的附加系统来增强网络应用。所增加的附加系统与原有系统可能是同构的,也可是异构的(那就是不同的处理机或操作系统)。BEA TUXEDO支持二维的可伸缩性。二维可伸缩性可在结构上的任意位置添加异质 资源,而不改变已存在的应用的结构。允许对一个复杂的混合结构的支持,为联机网络系统提供了广泛的规模选择范围。任何与数据表示有关的(如不同的处理器表示)可以由 BEA TUXEDO透明地解决。BEA TUXEDO 还可根据系统负荷的变化动态地增加或减少应用服务器的个数。1.3.10、广泛的开发工具支持除了像C,C++和COBOL这样的第三代语言编程环境,BEA TUXEDO系统享受最广泛的第三方工具的支持,下面是开发BEA TUXEDO应用目前可用工具的一个列表。 表1 TUXEDO允许的开发工具选择 公司 开发工具 客户端 服务器端 Ally Ally 4GL* ü Informix IFORMIX 5.0 (XA) ü ü Informix TP Toolkit* ü ü ITI TP Tools* ü ü OracleORACLE 7.0 (XA)Develop /2000 ü ü ü GuptaSQL Windows ü Novell Visual Appbuilder ü Novell USL WKSH ü Unify Accell 4GL* ü ü Jyacc JAM/JPL* ü ü TI IEF CASE* ü ü Magna Magna X* ü ü PowersoftPowerBuilder* ü Delphi Delphi ü Microsoft Visual Basic Visual C++ ü ü ü此外 BEA TUXEDO 的关联产品BEA CONNECT 允许BEA TUXEDO 和IBM的CICS、 IMS、 Unisys的System2000进行互操作,BEA Jolt支持从Internet 浏览器上请求BEA TUXEDO 的服务。BEA Builder 和BEA Manager将BEA TUXEDO应用的开发与管理更为 简化。1.4 BEA TUXEDO 的组成与功能 BEA TUXEDO 应用程序既可服务于带有少量客户和服务的单个服务器系统,又可服务 于由成千客户、成百服务器和众多服务器组件和服务构成的大规模的分布式环境。一个这样的应用程序是以业务逻辑服务、由这些逻辑服务组织成的高层服务器组件和在服务器结点环境中的组件分布为特征的。支持这种虚拟主机环境的BEA TUXEDO 元素包括配置信 息库和实现运行时应用管理的核心子系统。1.配置信息库BEA TUXEDO 应用程序由配置文件指定,这些配置文件被转换成若干紧耦合的运行时共享信息库。这些共享库(在BEA TUXEDO中称公告牌,Bulletin Board)驻留在每个参与 应用的服务器结点上。BEA TUXEDO子系统访问和操作这些库。(1) 应用程序配置一个BEA TUXEDO应用程序包括在一个高度分布的环境中运行该应用所需的资源。开 发人员 编写服务的代码,应用管理员通过构造定义操作参数和资源分配的配置文件创建 应用程序。配置信息驻留在一个可编程访问的管理信息库(MIB)中。MIB最少包括下列配置信息:l 系统范围的资源,包括有关全局应用属性(如安全性级别)、是否进行负载平衡、启动一个应用系统所需的资源定义和故障恢复时所需的资源定义。l 参与应用的每个服务器机器的定义和驻留在这些机器上的BEA TUXEDO文件的规格说明。l 单个服务器可与其他组成员共享的资源组,如事务管理;组也定义了服务器和所操作的资源管理器之间的映射。l 服务应用程序所需的映射成进程的服务器,在这些服务器进程中实现了应用业务逻辑。一个BEA TUXEDO配置允许一个管理服务器或者从分布在一台/多台机器的一个/多 个组中配置多个服务器。l 应用服务器进程定义的服务;服务级的属性包括负载因子、服务处理时间的相对量、该服务相对于服务器中提供的其他服务的优先级。头三个配置属性定义了应用的处理元素(如处理结点)、全局属性和某一主资源的特殊指定。组、服务器和服务集中在BEA TUXEDO软件组 件模型的分 布式应用 资源上: BEA TUXEDO应用程序定义了提供所需服务的服务器组件分组;可配置的服务器实例数 量能在多个机器上调整;而且,BEA TUXEDO能管理广播的单个服务和它们的相对优先级。(2) 公告牌BEA TUXEDO 应用配置文件被映射到一个运行时数据结构:公告牌(BB)。BB 作为 一个从配置文件中派生出来的共享信息库。BB驻留在每个参与到由配置文件指定的应用程序的BEA TUXEDO 的服务器结点上。BB作为分布式应用的名字服务数据库。它作为应 用统计数 据的运行时仓库,提供分布式环境下的应用对象的位置信息。BB由BEA TUXEDO核心例程(对应用开发者透明)访问,由核心例程读/修改BB库。这个信息库提供BEA TUXEDO完成动态客户/服务器映射所需的信息,同时也提供完成诸如负载平衡、 安全性和事务协调等功能的信息。2.事务管理器事务管理器是BEA TUXEDO 体系结构的中心,它是每个BEA TUXEDO服务器的核心 ,提供重要的分布式应用服务、命名、 消息路由、 负载平衡、配置管理、事务管理和安 全性。它也包含BB结构,使用维护和访问BB信息的服务。换句话说,BB内包含有可靠执行和管理大规模的基于组件的应用程序所需的所有信息,它将对事务管理器进程起作用。事务管理器的基本操作见下图的图示。事实上,事务管理器是负责客户/服务器绑定和支持BEA TUXEDO虚拟主机属性等特色的子系统。图4 来自网上的客户请的客户代理进程,服务器通过注册参加到该应用中。作为客户方通讯的一部分,事务管理器访问BB,然后选择服务器,接着,服务器消息队列的地址被返回,客户方的请求被马上传送到合适的队列等待服务为它进行处理。1)名字服务/位置透明性BB作为BEA TUXEDO应用程序的名字服务器,复制到每个参与的结点上。为了便于快速访问,名字服务器作为在共享内存中的一个结构存在。事务管理器使用BB名字信息 、 配置信息和环境统计信息自动把服务请求平衡到可用的服务器上,并且根据数据内容为 客户请求选择路由,为服务请求选择优先级。编程员把应用程序编成对逻辑入口项(称有名服务)的函数调用。事务管理器把这些逻辑请求映射到服务器结点/服务器进程环境内指定的服务实例。2)数据依赖型路由数据依赖型路由是根据数据缓冲区中一个指定域的值,把一个服务请求映射到一个指定的服务器组的机制。因为BEA TUXEDO服务器组映射成指定的资源管理 器/数据 库实 例,所以请求被导向到一个指定服务/资源管理器的组合。例如,一个银行的数据库可把存储在不同数据库实例中的不同范围的帐号进行水平分区。用户可用事务管理器进行路由选择,而不用把特定分区信息编码成访问帐号的应用代码。事实上,事务管理器查看指定的数据值,参考存储在BB中的路由信息,然后把请求发送到能在正确数据分区上操作的服务。如果用户需要改变数据库分区(把一个分区移到一个新服务器上,或在已有分区实例上改变帐号分布),那么,他只需改变事务管理器的路由信息,应用程序的代码不受影响。图5 数据依赖 型路 由:帐号操作的请求与数据分区是独立的,事务管理器访问BB路由表信息,把请求映射到访问相应分区的服务器组,然后返回该组指定服务的绑定。3)负载平衡为了确保应用流量最大,事务管理器自动地在系统中完成负载平衡和调度。通过使用每个服务的负载因子,事务管理器把请求发送给能最快处理该请求的服务器。事务管理器通过为当前排队的请求总计负载因子来决定给定服务器上的负载。下图给出了事物管理器负载平衡能力如何帮助优化应用流量的一个例子。图6 负载平衡: 服务 A,B,C由不同的服务器提供,每个服务器有一个基于当前排队请求的负载值。事务管理器决定哪一个服务器提供服务,哪一个服务是负载最小。事务管理器将在一个给定结点内或在提供服务的若干结点上,进行负载平衡。4)优先权请求优先权是事务管理器提供的另一个核心能力。某一服务请求经常需要比其他服务更高的优先权。例如,航空公司取消订座的优先级要比订座的优先级高:对大多数航空公司来说,要尽可能地再次买出被取消的座位。优先权在服务队列级有用,参见下图的图示。图7 优先权:右例 中,服务 器1提供服务A,B,C。A,B服务的优先级是50,C的优先级是70。在上一个请求完成时,服务器在队列中选择下一个请求。下一个请求是由优先级决定的,而不是根据请求在队列中的位置。为了防止低优先级请求总是得不到服务,每隔十个请求,就按FIFO次序进行一次请求选择。5)稳固的运行环境事务管理器包括许多支持应用可用性的特征,如进程可用性检查、超时检查、自动服务器重启和恢复过程、用户可定义的恢复过程。事务管理器不仅仅控制应用程序的活动流而且能确保其流畅有效的操作。6)安全性事务管理器通过一个结构化的安全性接口提供应用服务的验证、授权和访问控制。该接口概括了Kerberos安全模型,允许Kerberos或类似的最终用户验证机制与应用集成。用户能用访问控制列表保护服务、队列或事件免遭未授权的访问。7)分布式事务处理分布式事务处理(DTP)能力能保证跨几个场地访问的数据和由不同数据库产品管理的数据的完整性。事务管理器协调分布式事务使之完成网络环境下针对异构数据库的多场地修改。事务管理器用全局事务跟踪事务参与者,管理两阶段提交协议。这样就可确保每个场地都能正确处理事务的提交和回退。事务管理器还在出现场地故障、网络故障或全局资源死锁时协调全局事务的恢复。事务管理器使用开放小组的X/Open XA接口,进行不同 资源管理器之间的通讯。该接口已被X/Open接纳为分布式事务控制的标准接口。因为高性能和事务流量对OLTP系统产品是关键因素,所以事务管理器DTP软件使用了最小化磁盘写的算法。在其他属性中,事务管理器DTP开发了一些众所周知的技术如协调者迁移、只读和一阶段提交优化。事务管理器由几个关键子系统支持,这些子系统扩展了BEA TUXEDO客户/服务器功 能和与异构应用系统的互操作性。下面的几个段落将描述这些关键子系统:◎管理BEA TUXEDO对分布式应用管理的关键性问题给出了一个结构化的解决方案。BEA TUXEDO的管理接口包括一个综合性的命令行/脚本接口,一个编程接口和一个管理信息库(MIB),它们把BEA TUXEDO实现成一个更大管理环境中的受控应用程序。一 个易用的基于GUI 的管理应用程序可利用这些管理接口,在BEA TUXEDO环境上提供 了高层控制。BEA TUXEDO资源,从 高层的域属性向下贯穿 一个单服务器进程的特 性,支 持图形化表示和拖放功能。◎集中式的应用定义事务管理器使得应用管理员可在一个文件中定义组成BEA TUXEDO应用程序的硬件、 软件和网络资源。应用设计者能叙述在何处运行服务器和服务以及在处理器出故障时服务应该迁移到何处。他们可把各种不同的特性,包括调度信息、进程恢复标准和超时时间段等,赋给应用服务器。事务管理器为动态启动、停止或管理一个分布式应用程序提供中央配置管理和工具。◎动态重配置用户可动态启动或停止服务;用户可选择可用的服务。用户可在一个配置中增加新的机器、组、服务器和服务。另外,事务管理器可用不同的参数如超时故障等,使得一个无法使用的处理器上的服务器和服务在不中断运行程序的条件下移向另一个处理器上。第二章 开发与应用2.1 开发BEA Tuxedo应用程序 在开发BEA Tuxedo应用程序之前,你需要先搞清楚一系列和设计开发相关的概念,如识别什么是客户机,有哪些方法可以从外界收集数据并提交服务器进行业务处理;识别什么是服务器,哪些程序包容了可以处理客户机输入的商业逻辑;识别什么是类型缓冲区,客户程序在向其这程序发送数据前如何分配内存区域;什么是BEA Tuxedo的消息范例等。最后你还要弄明白客户程序是通过调用ATMI库来访问BEA Tuxedo系统的。创建BEA Tuxedo的客户程序与在C和C++编程语言中创建其它应用程序一样,BEA Tuxedo提供了一个其于C语言的编程接口,即应用程序事务监控接口ATMI,这套接口很容易使用,以便用于开发客户程序和服务程序。除了C语言接口外,BEA Tuxedo还提供了COBOL接口。2.1.1 创建服务程序2.1.1.1 概述 尽管开发者使用ATMI编程接口来创建BEA Tuxedo客户程序和服务程序,但服务程序不全部由开发者来编写,开发者只需写一些称为服务的商业函数,封装业务逻辑,然后和BEA Tuxedo的一些二进制程序联编成一个可执行的服务程序。BEA Tuxedo服务程序启动后,它总是保持运行状态,只到接收到一个shutdown消息为止。一个典型的BEA Tuxedo服务程序在shutdown或reboot之前都在执行着数千个服务。2.1.1.2 服务的运行流程为了更好的了解服务端的所有任务以编写服务端应用,有必要重新认识服务端在C/S模式中扮演的角色。首先,服务是系统资源的联系点。例如,一个数据库服务联系实际数据库并对其进行查询和修改。为有效进行,应建立一个数据库连接。 其次,服务必须发布系统内可以访问的交易,保证客户端可以知道把请求发往何处。 以上两步结束后,服务进入一个循环——接收请求、处理请求并返回结果。接收请求包括进入消息队列,得到交易请求。处理请求包括检查请求数据缓冲,运行商业规则和逻辑,可能还包括访问数据库和返回结果数据缓冲。当系统管理员需要关闭系统,可以通过系统管理工具将关闭系统的消息发给服务。服务完成所有交易,取消交易发布,关闭资源连接然后结束。2.1.1.3 服务程序的任务(1) 在BEA Tuxedo服务程序启动时,执行tpsvrinit()函数,可以在里面打开一些如数据库之类的资源供以后使用;(2) 在BEA Tuxedo服务程序关闭时,执行tpsvrdown()函数,可以在里面关闭tpsvrinit()中打开的资料;(3) BEA Tuxedo服务程序以服务的形式来响应客户程序的请求,客户程序不是通过名字来调用服务程序的,而是调用服务,客户程序不知道处理它请求的服务程序的位置;(4) 服务程序调用tpreturn()函数来结束服务请求,并返回一个缓冲区,必要时,将它传给客户程序; 注:如果是在tpsvrinit()中连接数据库,为了保证数据库的正常连接,在执行服务的时候,最好能够判断数据库是否断开连接,如果断开连接,则重新连接数据库。这样可以从根本上保证系统能够持续稳定的长期运行,基本上不需要人工干预。也就不再会出现“数据库重启了,中间件必须重启”的情况。2.1.1.4 返回控制在一般的C程序中,函数通过调用return()将控制返回,函数调用堆栈清空,控制返回调用点。TUXEDO系统的交易函数必须结束于将回应返回给客户端或前转到另一交易。函数tpreturn()用来结束交易将回应数据缓冲发给客户端。函数tpforward()将交易前转给另一个交易,由其负责回应原来的客户端。下图是tpreturn()的示意图。tpreturn()设计来代替常规的return(),结束绝大多数函数。它将回应数据缓冲返回请求的客户端,控制权返回给服务程序的标准main()(由TUXEDO提供)。tpreturn()使用下列参数:第一个值表示交易是否成功,有3种可能:² TPSUCCESS交易完全成功,如果是一个会话,TPEV_SVCSUCC被生成² TPFAIL交易失败,tperrno将被设成TPESVCFAIL。如果是事务模式,事务被标志成abort-only,如果是会话,TPEV_SVCFAIL被生成。² TPEXIT与TPFAIL类似,但服务会中断,如果服务设成可以重启动,则可以由TUXEDO系统将其重启动。第二个值是应用定义返回码,此处使交易可以发送一个整形代码到客户端,给出交易处理结果的详细信息。该值与/T系统无关,通过全程变量tpurcode送到客户端程序。第三个值是回应数据缓冲的的指针第四个值是回应数据缓冲的长度(仅缓冲类型为CARRY时需要)第五个值是标志位,通常不用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语言的交易程序编码完后,需要连接正确的库并编译。使用buildserver可以使该过程容易一点。该命令引用了C语言编译器并按正确的次序连接TUXEDO系统的库,连接TUXEDO生成的main()等。buildserver还用-s参数产生合适的交易名/函数名映射表。要使用buildserver,必须先正确设定环境变量TUXDIR,PATH,LD_LIBRARY_PATH。命令语法如下:buildserver [-v] [–o executable] [-s service2,service3:func] [-f source/object] [-l object/library file]例:buildserver –s DEPOSIT –o TLR –f TLR.o –f appinit.o参数解释如下:-o生成的可执行文件名-f需要在连接TUXEDO库之前传给编译器的文件名。如有多于一个的文件名,名字应用空格分隔并用引号引起。也可以使用多个-f参数。-l需要在连接TUXEDO库之前传给编译器的文件名。语法同上。-v编译过程显示。-b指定SHM或MP模式。如无此项,两种模式都包括;使用此项可以使生成的可执行文件小一点-r连接此处指出的RM库。该RM的名字必须含在$TUXDIR/udataobj/RM文件中。2.1.1.7 调试和错误处理对于服务程序的调试,确实是一件非常令人头痛的事.在Unix环境下,目前还找不到很好的方法,一般经常使用的方法是”print,Userlog”跟踪法,但是这种方法太累了.因此,有人想出了在windows环境下跟踪调试,发现没有任何错误后再放到UNIX环境进行编译,并正式使用.目前,我们公司采用的就是这种调试方法,在windows环境下(C++ Builder)编写一个tuxedo模拟测试服务程序,使其能正确的识别客户端调用的服务,并正确的调用相应的服务.2.1.1.8 程序范例(1) 源代码文件名: simpserv.c#include #include #include /* TUXEDO Header File */#include /* TUXEDO Header File *//* 当服务器启动时,在处理请求之前,tpsvrinit被执行,这个不是必须的,对应的函数是shutdown*/#if defined(__STDC__) || defined(__cplusplus)tpsvrinit(int argc, char *argv[])#elsetpsvrinit(argc, argv)int argc;char **argv;#endif{/* 当argc, argv没有被使用时,一些系统会发了警告 */argc = argc;argv = argv;/* userlog用于将TUXEDO消息写到日志文件中 */userlog("Welcome to the simple server");return(0);}/* TOUPPER真正处理客户请求,它接收的参数是一个缓冲区指针 */#ifdef __cplusplusextern "C"#endifvoid#if defined(__STDC__) || defined(__cplusplus)TOUPPER(TPSVCINFO *rqst)#elseTOUPPER(rqst)TPSVCINFO *rqst;#endif{int i;for(i = 0; i < rqst->len-1; i++)rqst->data[i] = toupper(rqst->data[i]);/* 返回转换后的类型缓冲区 */tpreturn(TPSUCCESS, 0, rqst->data, 0L, 0);}(2) 程序说明语句说明whole file整个服务程序不提供main函数,在build时,由BEA Tuxedo系统提供。tpsvrinit()在服务器初始化即处理请求之前被调用。若没有提供该函数,BEA Tuxedo系统会提供一个缺省的,它向USERLOG中写一条消息,说明服务器已经被启动。userlog(3c)是系统提供的一个写日志的方法。TOUPPER()simpserv提供的唯一一个服务,它接收一个TPSVCINFO结构,它包含了要被转换成大写的字符串。for loopBEA Tuxedo系统的循环,用于逐一转换。tpreturn()(3) 程序编译: $buildserver –o simpserv –f simpserv.c –s TOUPPER(–s TOUPPER指明了在服务器启动时需要提供的服务)2.1.2 创建客户程序2.1.2.1 概述创建BEA Tuxedo的客户程序与在C和C++编程语言中创建其它应用程序一样,BEA Tuxedo提供了一个其于C语言的编程接口,即应用程序事务监控接口ATMI,这套接口很容易使用,以便用于开发客户程序和服务程序。除了C语言接口外,BEA Tuxedo还提供了COBOL接口。2.1.2.2 客户端在C/S模式中的作用为了更好的了解客户端的所有任务以编写客户端应用,有必要重新认识客户端在C/S模式中扮演的角色。 首先,客户端是用户界面。意思是当用户在系统上用程序进行一次操作的整个过程就是一个客户端过程。前端过程是对客户端的另一个描述。客户端的首要任务就是获得执行操作应该得到的数据。一旦客户端得到了应有的信息,应该将数据按服务能够识别并适合传输的格式打包。 然后,向服务端发送请求并等待回应。收到回应数据后,将其按一定格式返回给终端用户。2.1.2.3 客户端开发过程客户端程序的设计和实现可以被分成2部分考虑:用户处理过程和TUXEDO功能部分。下文的客户端程序只描述了TUXEDO功能部分。利用TUXEDO的ATMI API调用可以做到:——基本的TUXEDO调试技巧(tperrno,tpstrerror,userlog)——TUXEDO进程管理(tpinit,tpterm)——基本数据缓冲管理(tpalloc,tprealloc,tpfree)——基本通讯(tpcall,tpacall,tpgetrply)客户程序一般执行如下任务:(1) 用tpchkauth()决定加入一个应用程序所需的安全级别。可能出现的响应包括:没有安全级别,应用程序口令,应用程序授权,访问控制列表,连接级加密,公钥加密,审计。这些可以根据你的需求进行选择;在实际的应用中很多的软件开发商通常对这一步都不做处理。(2) 调用tpinit()来连接到一个BEA Tuxedo应用程序,所需的安全信息作为tpinit()的参数传给了应用程序;(3) 执行服务请求;(4) 调用tpterm()来断开和BEA Tuxedo应用程序的连接2.1.2.4 调试和错误处理当调用ATMI出错时,返回值为-1,全程变量tperrno被设值,该变量提供系统定义的出错原因。函数tpstrerror()以此变量为参数,返回错误的字符说明信息。完整的错误号和文本错误信息存在于文件$TUXDIR/include/atmi.h。函数userlog()重定向输出文件为ULOG.mmddyy。使用方法同printf()。该函数每次输出都写硬盘,这样在系统失败时也能保留调试信息。代码范例ret = tpterm();if ( ret == -1 ){printf(“Error in exiting application\n”);usrlog(“ATMI error logged %d %s”,tperrno,tpstrerror(tperrno));}2.1.2.5 进程管理 tuxedo 接到一个tpinit的请求后,就启动一个服务进程,接收到tpterm()后,就会中止该服务进程.在实际应用中,tpinit()和tpterm()必须成对出现,而且要相互对应.如果只在程序中调用了tpinit()而没有调用tpterm(),则tuxedo系统会认为该进程一直处于活动状态,这样的话可能会因为服务进程达到系统允许的上限而导致系统的崩溃.int tpinit(TPINIT *tpinfo)客户端通过调用tpinit()与应用连接,进行交互,有以下事件发生:调用安全接口检查客户端是否需要认证连接BB,使进一步的ATMI函数得到信息使BBL了解BB中已经存在请求建立客户端消息队列使服务可以发回返回信息,系统可以送出广播通知等.错误时返回-1,可能由以下原因引起:² TPEINVAL参数错误² TPENOENTBB无空间² TPEPERM无连接权限² TPEPROTO协议错误 – 被服务调用int tpterm()客户端调用tpterm()切断与应用的连接,结束了客户端的TUXEDO进程,该过程发生以下事件:BB入口删除,使BBL知道客户端已经离开客户端离开BB,客户端的信号量被移除客户端消息队列被移除错误时返回-1,可能由以下原因引起:TPEPROTO协议错误 – 被服务调用TPESYSTEM/T系统下错误TPEOS操作系统错 根据tpinit()和tpterm()在客户程序中不同位置的调用,可以把tuxedo的进程连接分为长连接和短连接两种.长连接是指在程序开始的时候调用tpinit()建立服务连接,在程序中止的时候调用tpterm()中止服务连接.这样做的好处是,当用户频繁的进行业务操作时,不用频繁的进行进程连接,大大的缩短了操作时间,提高了程序的执行效率.但是,这也一个缺点,那就是,只有用户不从客户程序中退出来,不管做不做业务,都会在系统中占用一个进程连接,从而会影响其他用户的连接.短连接指的是用户每做一次业务,都需要调用tpinit(),业务完成后调用tpterm().这样做的好处是,1000个终端用户和10000个终端用户同时操作,对系统来说,基本上是一个概念.但是这样做会浪费大量的时间在进程连接上,从而影响了业务的处理效率.为了协调长连接和短连接之间的矛盾,我曾经给出了一个很好的解决方案,那就是在长连接的基础上进行优化处理,当客户程序5分钟(这个值可以自定义)没有向服务程序发送任何服务请求,则调用tpterm()断开服务连接.仅仅这样还是不行的,我们还必须在客户程序向服务程序发送业务请求之前,首先判断进程连接是否断开,如果断开,则重新连接.2.1.2.6 数据缓冲管理在Bea Tuxedo系统中的所有通信过程都是通过类型缓冲区来完成的,Bea Tuxedo系统提供了大量的类型缓冲区来供开发者使用。所有类型缓冲区都必须通过Bea Tuxedo的tpalloc(), tprealloc(), tpfree()这些ATMI来分配回收,它们都有特定的头部。以下是TUXEDO基本的数据缓冲类型:² STRING以空值结尾的单域字符数据。² CARRAY有长度定义的单域二进制数据,不进行编、解码。² VIEW类C结构或COBOL记录的多域组织。² FML无固定结构的自定义缓冲。tpalloc(),tprealloc()在出错时返回空值,可能由以下原因引起:² TPEOS操作系统² TPEINVAL非法或不正确的类型² TPESYSTEMTUXEDO之下的错误 统一定义的类型缓冲区可以使它们在跨越不同网络、不同协议、不同CPU构架以及不同操作系统之间得到统一的处理,这就使得开发者在分布式计算环境中有效地避开了异构网络和异构计算机系统带来的差异,把精力集中在商业逻辑的开发上。2.1.2.7 程序范例(1) 源代码文件名: simpcl.c#include #include "atmi.h"/* TUXEDO的头文件 */#if defined(__STDC__) || defined(__cplusplus)main(int argc, char *argv[])#elsemain(argc, argv)int argc;char *argv[];#endif{char *sendbuf, *rcvbuf;long sendlen, rcvlen;int ret;if(argc != 2) {(void) fprintf(stderr, "Usage: simpcl string\n");exit(1);}/* 作为一个客户过程连接到System/T */if (tpinit((TPINIT *) NULL) == -1) {(void) fprintf(stderr, "Tpinit failed\n");exit(1);}sendlen = strlen(argv[1]);/* 分配一个供请求响应使用的STRING 缓冲区 */if((sendbuf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL) {(void) fprintf(stderr,"Error allocating send buffer\n");tpterm();exit(1);}if((rcvbuf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL) {(void) fprintf(stderr,"Error allocating receive buffer\n");tpfree(sendbuf);tpterm();exit(1);}(void) strcpy(sendbuf, argv[1]);/* Request the service TOUPPER, waiting for a reply */ret = tpcall("TOUPPER", (char *)sendbuf, 0, (char **)&rcvbuf, &rcvlen, (long)0);if(ret == -1) {(void) fprintf(stderr, "Can't send request to service TOUPPER\n");(void) fprintf(stderr, "Tperrno = %d\n", tperrno);tpfree(sendbuf);tpfree(rcvbuf);tpterm();exit(1);}(void) fprintf(stdout, "Returned string is: %s\n", rcvbuf);/* Free Buffers & Detach from System/T */tpfree(sendbuf);tpfree(rcvbuf);tpterm();return(0);}(2) 程序说明:语句说明atmi.h调用ATMI函数必须的头文件tpinit()客户程序调用它来加入应用程序tpalloc()用于分配类型缓冲区的ATMI函数,STRING是五种BEA Tuxedo缓冲区数据类型之一,sendlen+1表示缓冲区类型,因为以空字符结尾,所以长度加1tpcall()把消息缓冲区送到TOUPPER服务,它提供了响应缓冲区的地址,它一直等待着返回消息tpterm()用于退出应用程序的ATMI函数,tpfree()释放分配的缓冲区,是和tpalloc()相对应的函数(3) 程序编译: $buildclient -o simpcl -f simpcl.c-o指明输出目标文件名,-f指出源文件名2.1.3 在应用程序中使用消息范例BEA Tuxedo系统提供多种通信模式1. 同步Request/Response模式;2. 异步Request/Response模式;3. 嵌套调用;4. 调用转发;5. 会话通信;6. 主动消息通告;7. 基于事件的通信;8. 基于队列的通信;9. 使用事务。2.1.3.1 同步通讯要进行同步调用,Bea Tuxedo客户程序使用ATMI函数tpcall()把一个请求送到服务程序,它不是通过名字来调用服务程序的,而是通过特定的服务来完成。客户程序要等到服务程序作出响应后才处理后面的工作,也就是说,它在收到服务程序的响应之前一直处于阻塞状态。函数tpcall()有6个参数。如下:² 交易名² 请求数据缓冲² 请求数据缓冲的长度(仅缓冲类型为CARRY时需要)² 返回数据缓冲的地址。缓冲大小可以根据收到数据而改变。² 返回数据缓冲大小的地址² 标志量标志量可以是以下值:² TPNOTRAN如有交易不调用² TPNOBLOCK如有阻塞不等待² TPNOTIME愿意等待直到超时² TPSIGRSTRT系统中断信号在TUXEDO完成后再发布出错返回-1,错误原因如下:² TPEINVAL参数错误² TPETRAN交易相关错误² TPETIME超时代码范例main(){int ret;long len=0,flags=0;char *bufptr;if (tpinit((TPINIT * )NULL) == -1){exit(1);}if ((buf=tpalloc(“STRING”,NULL,801*1024==NULL){tpterm();exit(2);}ret = tpcall(“TOUPPER”,bufptr,len,&bufptr,&len,flags);if (ret == -1){userlog(“Error requesting %d %s”,tperrno,tpstrerror(tperrno));tpfree(bufptr);exit(-2);}tpfree(bufptr);if(tpterm()== -1){userlog(“tpterm error %d %s”,tperrno,tpstrerror(tperrno));}}int tpcall((char *)servicename,(char *)bufptr,long length,(char **)bufptr,(long *)length,long flags)2.1.3.2 异步通讯要进行异步调用,客户程序必须调用两个ATMI函数:tpacall(3c)函数,用于请求一个服务;tpgetrply(3c)函数,用于取得服务程序的响应。客户程序在请求和响应之间要完成特定任务时,可以采用这种模式。tpacall()有4个参数² 交易名² 请求数据缓冲² 请求数据缓冲的长度(仅缓冲类型为CARRY时需要)² 标志量(同tpcall())返回值是一个非负描述符(句柄),用于其后的tpgetrply()调用。如果tpacall()调用失败,句柄是-1,错误原因设置在tperrno,可能是以下值:² TPELIMIT过多未处理的tpacall()² TPETIME超时tpacall()后总跟随一个tpgetrply(),有4个参数² 变量地址,可以传入tpcall()所得句柄,或另设一个² 返回数据缓冲的地址。缓冲大小可以根据收到数据而改变。² 返回数据缓冲大小的地址² 标志量标志量的值可以是如下之一:² TPGETANY取第一个返回值,设句柄² TPNOCHANGE取发送请求的匹配的类型的信息² 参见tpcall()中的值返回值0表示成功,-1表示失败,错误原因可能如下:² TPEINVAL参数错误² TPEOTYPE返回数据缓冲类型错误² TPETIME超时main(){if (tpinit((TPINIT *)NULL)== -1)……bufptr=tpalloc(“STRING”,NULL,100);if (bufptr==NULL)……cd=tpacall(“TOUPPER”,bufptr,len,flags);if (tpgetrply(&cd,&bufptr,&len,flags)== -1)……tpfree(bufptr);if (tpterm()== -1)……}int tpacall((char *)service,(char *)bufptr,long len,long flags);flag:TPNOBLOCK,TPSIGRSTRT,TPNOTIME,TPNOTRAN,TPNOCHANGE,TPGETANYint tpgetrply((int *)handle,(char **)bufptr,(long *)len, long flags);flag:TPNOBLOCK,TPSIGRSTRT,TPNOTIME,TPNOTRAN2.1.3.3 使用嵌套调用一个服务可以充当BEA Tuxedo客户程序,去调用其它BEA Tuxedo服务,换句话说,你请求的服务需要调用其它服务才能处理请求。BEA Tuxedo客户程序调用了服务X,等待它的响应,服务X调用服务Y后也处于等待状态,当服务X得到响应后,再给客户程序一个响应,这种机制的特点是效率高。2.1.3.4 使用调用转发在嵌套服务中,最里层嵌套服务可以直接给客户程序一个响应,没有必要按照调用栈逐级返回,这就使其它嵌套服务可以处理其它请求,当第一个服务是一个分发代理时,这种模式是非常有用的。在嵌套调用中,被客户调用的服务X使用tpforward(3c)函数把请求传给服务Y,服务X没有tpreturn(3c)函数。客户程序不用管请求是由谁来完成的,因此,转发调用对客户程序是透明的。2.1.3.5 会话通信会话通信适合于有多个缓冲区需要以有状态的方式在BEA Tuxedo客户程序和服务之间传递的场合。恰当地使用BEA Tuxedo的会话,因为参与会话的服务器在会话结束之前是不可用的。要完成会话通信,你的代码需要遵循如下步骤:1. 客户程序使用tpconnect()启动会话;2. 客户程序和服务使用tpsend()和tprecv()函数进行数据交换,一个特殊的标记指示着当前由哪一方来控制着会话;当服务程序调用tpreturn()或tpdiscon()函数时,会话正常终止2.1.3.6 主动消息通告要处理服务器的消息通知,客户程序必须使用tpsetunsol()函数来创建一个消息处理器,要发送主动消息,BEA Tuxedo客户程序或服务程序可以调用tpnotify()来把消息传递给单个客户程序,也可以通过tpbroadcast()函数来把消息同时广播给多个客户程序。当客户程序收到主动消息后,BEA Tuxedo系统调用客户程序的主动消息处理器来处理。在一个基于信号系统中,客户程序没有必要处理所有的主动消息,然而,在一个非信号系统中,客户程序必须使用tpchkunsol()函数来检查主动消息。当客户程序调用一个服务请求时,tpchkunsol()被隐含地调用。在调用tpnotify()时,如果你设置了tpack标记位,你将会收到一个请求通知。2.1.3.7 基于事件的通信在基于事件的通信中,事件可以被发送到应用程序队列、LOG文件和系统命令。当BEA Tuxedo服务或客户程序调用tppost()函数时,任何一个BEA Tuxedo客户程序都可以使用tpsubscribe()函数订阅用户自定义事件;当BEA Tuxedo系统检测事件时,客户程序也可以订阅系统定义事件。当一个服务器死了,.SysServerDied事件就会被发布,它由BEA Tuxedo系统自动完成,不需要应用服务器干预。2.1.3.8 基于队列的通信为了实现了和/Q系统的接口,BEA Tuxedo客户程序使用两个ATMI函数,使用tpenqueue()把消息放入队列空间,使用tpdequeue()来把消息从队列空间中取走。下面演示了点对点异步消息机制。一个客户程序使用tpenqueue()函数将消息传给服务,响应队列和失败队列的名字可以作为参数包含在tpenqueue()调用中,由于在队列中的数据是持续的,因此,所有和排队消息相关的响应消息和失败消息都可以从相应的响应队列和失败队列中取得。客户程序可以使用缺省的排队顺利,即按放放顺利排队,先进先出;也可以改变排队规则,如把一个消息放在队列开始,或放到另一个队列前面。Tpenqueue()调用把消息送到TMQUEUE服务器,并被放入固定存储体中进行排队,然后给客户程序发送一个通知消息。队列管理器给消息分配一个标识符,使用它可以随时将消息踢出队列,也可以用于tpenqueue()中,指示将新消息紧挨着标识符标识的消息。在消息出队时,要出队消息的事务必须成功地提交。客户程序使用tpdequeue()来使消息出队。下面演示了消息被转发到另一个服务器。客户程序发出一个消息,要调用服务器上的X服务,X服务接收消息后,处理消息中的指令,然后把响应放入队列空间,客户程序再从队列空间中取出。排队系统对于服务来说是透明的,也就是说,不论服务请求是从队列发出的,还是通过tp(a)call发出的,服务都能接受。2.1.3.9 使用事务要使用事务,应用程序开发者需要使用如下ATMI函数:1. tpbegin(),用于开始一个事务;2. tpcommit(),开始一个二阶段提交处理;3. tpabort(),产即终止事务。任何放在begin,commit/abord之外的代码不包含事务中。在下面的例子中,客户程序打开了一个事务,请求了两个服务,并且提交了事务。因为服务请求是在事务开始和提交之间完成的,所以两个服务的行为都被了事务记录。2.1.4 应用配置2.1.4.1 应用配置总览应用的描述信息配置在系统核心位置,用一个文件描述,通常称为ubbconfig文件,在主控机器上。整个TUXEDO系统的管理任务可以在一台机器上完成,在配置中被定为主控节点。 在运行时,这些信息被装入一段共享内存(一个IPC资源),称为公告牌(Bulletin Board—BB);包含有配置中不同机器的信息,在这些机器上运行的服务的信息,这些服务提供的交易的信息以及其他相关信息。客户端在运行时连接公告牌。当客户端程序调用一个交易,将根据公告牌找到合适的服务队列。所以,公告牌是:——供客户端寻找适当的服务运行一个交易请求——包含应用信息:机器,服务,交易,网络等——创建于ubbconfig文件TUXEDO提供一个管理进程,称为BBL(Bulletin Board Liaison),包含了一个公告牌的本地拷贝和本地服务器上应用的状态。TUXEDO提供的另一个管理进程DBBL(Distinguished Bulletin Board Liaison),用于多服务器配置时。DBBL与BBL协同,保证所有部分的公告牌内容的一致性。2.1.4.2 配置文件任何TUXEDO应用系统的最基本的管理任务,是建立并维护配置文件。该文件通常称为ubbconfig文件。负责该工作的系统管理员必须很好的了解分布于各台机器上的应用服务的数据流,消息队列的构造,资源间的相互关系。ubbconfig文件可视作包含应用启动信息的容器,需编译成二进制文件tuxconfig,作为启动时的参考。其内信息包括:² 系统范围信息(*RESOURCES节)² 机器信息(*MACHINES节)² 组信息(*GROUPS节)² 服务信息(*SERVERS节)² 交易信息(*SERVICES节)² 网络组信息(*NETGROUPS节)² 网络信息(*NETWORK节)² 路由原则信息(*ROUTING节)当完成了ubbconfig文件后,用tmloadcf命令生成tuxconfig另一种从ubbconfig生成tuxconfig的方法是使用图形管理界面(GAI—Graphical Administration Interface)。2.1.4.3 应用的信息*RESOURCES节包含整个应用范围的信息。本节必须在配置文件第一节,不可缺少。信息说明如下:参数意义*RESOURCES*RESOURCES节IPCKEY共享内存idUIDTUXEDO管理员用户idGIDTUXEDO管理员用户idPERMTUXEDO管理员组用户的权限MAXACCESSERS服务端和客户端的最大进程数MAXSERVERS限制可以启动服务总数MAXSERVICES限制可以发布交易总数MASTER指出主控节点的逻辑名,第二个是备份节点MODEL应用构架,MP表示多机OPTIONSLAN,MIGRATE表示是一个网络应用,服务可以移植到替代处理器上SECURITY安全级别(5个)AUTHSVC客户端可以通过交易“AUTHSVC”获得认证NOTIFYDIPIN,客户端通过dip-in收到广播通知SYSTEM_ACCESSPROTECTED,NO_OVERRIDE,应用代码不得干扰共享内存LDBAL设Y则进行负载平衡MAXBUF[S]TYPE数据缓冲类型及子类的最大数SCANUNIT内部时间间隔单位,单位是秒SANITYSCAN检索公告牌的内部时间间隔,单位是SCANUNITBLOCKTIME交易超时时间,单位是SCANUNITBBLQUERYDBBL查询所有BLL的时间间隔DBBLWAITDBBL等待BBL回应的超时时间MAXCONV同时最大会话数注意:本处未列出全部参数。这些系统范围内参数可以被后序节内参数超越。2.1.4.4 机器信息*MACHINES节包含应用有关的每个处理器的信息。本节必须在*RESOURCES节后列出。参数意义*MACHINESMACHINES节gumby物理处理器名,可以通过”uname –n”或节点名得到TUXDIRTUXEDO系统软件安装位置APPDIR应用服务位置全路径TUXCONFIGTUXEDO配置文件全路径ENVFILE环境文件全路径ULOGPFX应用日志文件全路径MAXACCESSERS本机最多处理器数,可以超越*RESOURCES节定义MA
展开阅读全文
  语墨文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:tuxedo教学教育培训教育资料.doc
链接地址:http://www.wenku38.com/p-145420.html

                                            站长QQ:1002732220      手机号:18710392703    


                                                          copyright@ 2008-2020 语墨网站版权所有

                                                             经营许可证编号:蜀ICP备18034126号

网站客服微信
收起
展开