TUXEDO程序员指南.doc
《TUXEDO程序员指南.doc》由会员分享,可在线阅读,更多相关《TUXEDO程序员指南.doc(91页珍藏版)》请在三一办公上搜索。
1、1序论 BEA TUXEDO系统开发环境这一章介绍BEA TUXEDO系统开发环境。你要编写的应用软件,也就是在此环境下进行的。你除了用C程序来表述应用软件的逻辑性外,你将会用到“应用交易监控接口”(ATMI),它涉及到BEA TUXEDO系统交易监控和应用软件间的界面。ATMI基本件是类UNIX系统调用的C语言函数;但它们,在BEA TUXEDO系统交易监控的控制下,在应用模块间实现通讯(包括所有你需要的相关资源),有特殊的用途。BEA TUXEDO系统着重于“客户服务”这种体系结构。这本书的第2到第7章描述了ATMI是怎样用于编写、调试客户端和服务端的程序。本章只作简要介绍。客户进程 一个
2、客户进程要求用户发送一个请求给服务进程,服务进程将返回一个响应。 基本的客户端操作一个客户进程用一ATMI基本件介入一个应用系统,利用另一基本件进行信息缓存的分配。这些基本件的应用,持续到信息缓存被送往一个服务并且得到响应为止。 下面是一个简单的描述:main() allocate a TPINIT buffer place initial client identification in buffer enroll as a client of the BEA TUXEDO application allocate buffer do while true place user input
3、in buffer send service request receive reply pass reply to the user leave application - 上图大部分是由ATMI基本件来完成的。place user input in buffer和pass reply to the user部分是由C语言来完成。 当客户程序准备测试时,你要先用buildclient(1)命令来编译和链接它们。 客户重复发送服务请求 一个客户在离开应用程序之前,可以发送和接受很多个服务请求。这些将作为一系列的“请求/响应”调用而被发送。如果有重要的信息需要从一个调用传到另一个调用,则会有一通
4、向会话服务的连接被设立。客户程序里的逻辑也是如此,不过是不同的ATMI基本模块被使用而已。 服务器进程和服务子程序 服务器是提供一个或多个服务的进程。它们不停地检测服务请求的消息队列,并且为它们分配适当的服务子程序。 基本的服务端操作应用软件通过将它们的服务子程序与BEA TUXEDO提供的main()连接起来,达到建立服务进程的目的。本系统提供的main()是一套预定义的函数。它执行服务器的初始化和终止;为“接收和分派”引入的请求给服务程序,进行缓冲区的分配。所有这些处理相对于应用程序来说是透明的。服务器和服务子程序的交互作用,可以通过下面的描述来概括(图Figure1-1):Figure
5、1-1 Pseudo-code for a Request/Response Server and a Service Subroutine 一个服务在初始化后分配缓冲器,一直等待到请求信息加入到消息队列、请求信息出列、分派它们给服务子程序处理。如果需要应答,还得考虑请求处理部分。会话范例稍微有些不同。假想的代码如下(Figure1-2)。Figure 1-2 Pseudo-code for a Conversational Service SubroutineBEA TUXEDO系统提供的main()包含的内容有:使自己成为一个服务、公布服务、分配缓冲区、使请求信息出列。ATMI基本件被应用
6、于处理请求的服务子程序中。当服务子程序准备编译和测试时,它们将通过buildserver( )命令连接到服务端的main(),形成可执行的服务模块。ATMI基本件“应用交易监控接口”(ATMI)是一套非常紧凑的基本件,这些基本件用于开关资源、开始和终止交易、分配和释放缓存、提供客户端和服务端的通信。下表是它们的简要描述:组名 称操 作应用接口tpinit( )连接一个应用软件tpterm( )离开一个应用软件缓存管理接口tpalloc( )分配缓存tprealloc( )重新计量缓存tpfree( )释放缓存tptypes( )取缓存类型请求/响应通信接口tpcall( )发送请求 等待响应t
7、pacall( )异步方式发送请求tpgetrply( )异步方式调用后接受回应tpcancel( )取消通信 处理特殊响应tpgprio( )取最后请求的优先级tpsprio( )取下一请求的优先级会话接口tpconnect( )开始一个会话tpdiscon( )结束一个会话tpsend( )在会话中发送数据tprecv( )在会话中接受数据主动告示接口tpnotify( )通过客户id识别tpbroadcast( )通过名称识别tpsetunsol( )设置主动信息来处理交易tpgetunsol( )取主动信息tpchkunsol( )检查主动信息交易管理接口tpbegin( )开始一个交
8、易tpcommit( )提交当前交易tpabort( )退出当前交易tpgetlev( )检测是否处如交易模式中服务程序模板tpservice( )开始一个服务tpreturn( )结束一个服务tpforward( )向前请求并且结束服务程序动态广告接口tpadvertise( )登一服务名广告tpunadvertise( )取消登一服务名广告资源管理接口tpopen( )打开一资源管理tpclose( )关闭一资源管理事件载体和事件监控器接口tppost( )投递一个事件tpsubscribe( )预订一个事件tpunsubscribe( )解除一预订事件X/Opens TX接口纵观:除了A
9、TMI的交易管理动词,BEA TUXEDO系统也支持X/Opens TX接口,用来定义和管理交易。因为X/Open用ATMI的交易划分动词作为TX界面的基础,TX界面的语法和语义与ATMI十分相似。 下表是它们之间的比较。在很大程度上,应用ATMI程序的地方也可用TX来实现,如下表:TX 动词相应的ATMI动词主要区别tx_begintpbegin超时值不传递给tx_begin 参看tx_set_transaction_timeouttx_closetpclose无tx_committpcommittx_commit在返回前可以开始一个新的交易 这是一种“链式”交易tx_infotpgetle
10、vtx_info返回交易特性的设置,这些特性是由三个tx_set_*程序设定的tx_opentpopen无tx_rollbacktpaborttx_rollback支持“链式”交易tx_set_commit_returntpscmt无tx_set_transaction_control无定义应用软件是“链式”交易还是非“链式”交易tx_set_transaction_timeouttpbegin将交易延时参数与tx_begin分开TX界面在使用其它TX动词前,要求先调用tx_open( )。 下面是关于TX界面怎样用于支持“链式”交易的事例。注意:tx_begin被用于开始一系列链式交易;还有
11、,在调用tx_close之前,应用软件必须转到非链式交易,使最后的tx_commit( )或tx_rollback( )不开始一新的交易。tx_open();tx_set_transaction_control(TX_CHAINED);tx_set_transaction_timeout(120);tx_begin();o_forever do work as part of transaction; if (no more work exists) tx_set_transaction_control(TX_UNCHAINED); if (work done was successful)
12、tx_commit(); else tx_rollback(); if (no more work exists) break; tx_close();类型缓冲区 信息是在类型缓冲区中传递给服务的。为什么说是“类型”呢?如果缓冲区信息在不同的机器间传递,则不同类型的数据需要不同的软件来初始化缓冲区、还要发送和接受数据(或许还要加密和解密)。缓冲区被定义成特殊的类型,以使程序适应缓冲区,且使它的内容能被调用。详细情况可以从buffer(3c)、tuxtypes(5)和typesw(5)中找到。 BEA TUXEDO系统提供九种缓冲区类型:STRING,CARRAY,VIEW,VIEW32,FML
13、,FML32,X_OCTET,X_COMMON和X_C_TYPE。应用软件还可以定义其他所需要的类型。 当数据是以空字符结尾的字符数组时,STRING缓冲区类型就会被用到。 在CARRAY缓冲区中的数据是一组未定义的字符,它们都可为空。当传输这种缓冲区类型时,需要提供它的长度。X_OCTET缓冲区类型等价于CARRAY。 VIEW类型是应用软件定义的一种C结构,而且还有对它的描述文件。VIEW类型的缓冲区必须有子类型,用来指定个别的数据结构。X_C_TYPE缓冲区类型等价于VIEW。X_COMMON缓冲区类型与VIEW很相似,但它既可用于COBOL,又可用于C语言,它的字段类型局陷于short
14、、long和string型。VIEW32缓冲区类型与VIEW相似,但它允许更大的字符域、更多的域和全部的缓冲区。 FML缓冲区是BEA TUXEDO系统独有的类型,是自定义的,每一数据域有自己的标识符、事件数目、可能有的长度指示器。这种类型在处理所化的费用上有很好的机动性,在这种数据处理上,用FML函数比用C好。 FML32数据类型与FML很相似,但它允许更大的字符域、更多的域和全部的缓冲区。 使用VIEW和FML缓冲区 如果你要使用VIEW和FML缓冲区类型,则你要为创建观点描述文件和域表文件作一些准备工作。在用VIEW的情况下,则必须存在一描述文件,用来在VIEW中描述数据结构,且对于客户
15、和服务程序来说都可用。对于FML缓冲区,一个域表文件必须是可用的,它包含可能存于缓冲区中的所有字段的描述。 某些VIEW缓冲区和FML间的关系 有两种VIEW缓冲区。一种基于FML缓冲区,另一种是独立的、是简单的C结构。两种类型都是由观点 (view)描述文件描述、由BEA TUXEDO系统观点 (view)编译器-viewc(1)编译。 FML观点 BEA TUXEDO系统FML是一常用的结构,它们中的一些将FML缓冲区转为C结构,或者反过来将C转为FML。源自字段缓冲区的C结构,是作为FML VIEW而被提及的。将FML缓冲区转为C结构和将C转为FML的原因是:当FML缓冲区独立、方便地提
16、供数据时,它们因为要用FML函数调用来操作,而去处理更高层的东西。C结构因为不能提供机动性,在提供请求的操作时,会在缓冲区数据上做很多冗余的操作。如果数据处理被调用,在你将字段缓冲区数据转换为C结构、用常规的C函数处理数据、然后将数据返回到FML缓冲区储存或传输信息时,你就可以提高你程序的性能。 表1_3列出了所有可用数据类型的观点描述文件。该文件是myview.v。它的结构是基于FML缓冲区的。请注意到CARRAY1字段有记录两个事件的计数器;有“C”计数标志,用来标识在结构中产生计数元素,使应用程序能显示有多少个事件被调用。还有“L”长度标志。 Listing 1-3 View Descr
17、iption File for FML View VIEW MYVIEW$ /* View structure */#type cname fbname count flag size nullfloat float1 FLOAT1 1 - - 0.0double double1 DOUBLE1 1 - - 0.0long long1 LONG1 1 - - 0short short1 SHORT1 1 - - 0int int1 INT1 1 - - 0dec_t dec1 DEC1 1 - 9,16 0char char1 CHAR1 1 - - 0string string1 STRIN
18、G1 1 - 20 0carray carray1 CARRAY1 2 CL 20 0ENDFML字段表文件当要用到FML记录(包括用依赖于FML的VIEWS)时,字段表文件总是必需的。字段表文件在FML缓冲区中标识字段逻辑名,用字段标识符唯一标识字段。 表1-4是相对于表1-3观点的一个实例。 Listing 1-4 The myview.flds Field Table File # name number type flags comments FLOAT1 110 float - - DOUBLE1 111 double - - LONG1 112 long - - SHORT1 11
19、3 short - - INT1 114 long - - DEC1 115 string - - CHAR1 116 char - - STRING1 117 string - - CARRAY1 118 carray - -独立的VIEW表1-5列出的是观点描述文件,同例表1-3很相似,但是从FML中独立出的VIEW。 Listing 1-5 View Description File for Independent Views $ /* View data structure */ VIEW MYVIEW #type cname fbname count flag size null f
20、loat float1 - 1 - - - double double1 - 1 - - - long long1 - 1 - - - short short1 - 1 - - - int int1 - 1 - - - dec_t dec1 - 1 - 9,16 - char char1 - 1 - - - string string1 - 1 - 20 - carray carray1 - 2 CL 20 - END在这个观点描述中,它的格式与“依赖于FML的观点”很相似(除了fbname和null两列被观点编译程序忽略外)。没有相应观点的FML缓冲区存在之前,这些列就没有相应性可言。但这些
21、列必须给一些值(例如:破折号)作为占位符。相应的数据类型定义C的浮点型和双精度型分别对应于COBOL COMP-1和COMP-2.字段类型中的long和short分别对应于COBOL中的S9(9) COMP-5和S9(4) COMP-5。dec_t 类型描述COBOLCOMP-3打包的小数字段。打包的小数存在于COBOL环境中,打包的两个数字中,低位的字节用来存储符号。打包的小数长度可以是个字节,存储个数字和一个符号。Dec_t字段在VIEW中定义,用两个数字定义大小、中间由一逗号格开;逗号左边的数字是小数在COBOL中占的总位数,右边是在COBOL中该数的小数部分总位数。下面是转化为COBO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TUXEDO 程序员 指南
链接地址:https://www.31ppt.com/p-2881496.html