第六章 结构体
- 格式:ppt
- 大小:257.50 KB
- 文档页数:31


第六章:TUXEDO的服务端编程服务端编程的任务在三层结构中,把业务逻辑都放到中间层上,采用TUXEDO做中间件时,也就是放到TUXEDO的服务端上,在服务端把业务逻辑划分成一个个独立的服务(SERVICE),把多个服务按一定的规则绑定到一个SERVER中.客户端调用这些服务来实现相应的操作.所以服务端编程的主要任务就是编写一个个的服务(SERVICE)。
SERVER的生命周期如图:SERVER端的生命周期如下:1.在SERVER启动时,它将自动调用初始化函数:tpsvrinit(int argc, char *argv[])如果该SERVER所在的GROUP配置了连接数据库的接口,那么在默认情况下,该SERVICE将自动调用tpopen(),与数据库建立连接。
2.该SERVER将把它所包含的SERVICE在系统的BOLLITIN BOARD中进行登记。
使客户端可以调用这些SERVICE3.该SERVER进入循环,从它所对应的消息队列中取CLIENT发送的请求,调用相应的SERVICE进行处理,并调用tpreturn()把结果返回给CLIENT端或调用tpforward()传送给别的SERVICE处理。
4.当系统SHUTDOWN 或用tmshutdown –s 把该SERVER SHUTDOWN 时,将自动调用SERVICE:tpdone()它将做一些清除工作,如断开与数据库的连接,从系统的BULLITON BOARD中清除与该SERVER对应的登记项。
SERVER端编程SERVER端编程主要用C(或COBAL)语言编写一个个的SERVICE,如果需要进行数据库调用,则用数据库提供的嵌入SQL语言的编程接口,如ORACLE的PROC,INFORMIX的ESQL等编写。
一个SERVICE其实就时一个C函数,但它的参数只能是一个TPSVCINFO结构体指针。
该结构体在atmi.h中的定义:struct tpsvcinfo {#define XATMI_SERVICE_NAME_LENGTH 32char name[XATMI_SERVICE_NAME_LENGTH];/* service name invoked */long flags; /* describes service attributes */char *data; /* pointer to data */long len; /* request data length */int cd; /* reserved for future use */long appkey; /* application authentication client key */CLIENTID cltid; /* client identifier for originating client */};typedef struct tpsvcinfo TPSVCINFO;TPSVRCINFO说明:char name[XATMI_SERVICE_NAME_LENGTH]; 该SERVICE的名字long flags; CLIENT端在TPCALL,TPACALL等的FLAGS中设置的值char *data; 指向CLIENT发送过来的缓冲区的首地址long len; data缓冲区的的长度int cd; 当采用CONVERSATION通讯方式时,对应的CD值long appkey; 当采用安全认证时,该CLIENT所对应的KEYCLIENTID cltid; 用于识别该CLIENT的ID在SERVER端的程序中可以调用TUXEDO提供的ATMI编程接口。