--Tuxedo使用举例1--simpapp

客户机首先收集要转换成大写的字符串,然后连接到System/T并将字符串放入缓冲区,接着调用服务器上的TOUPPER服务,最后从服务器响应缓冲区中取出数据并退出System/T。

  1.Simpapp的服务程序

  下面是服务程序simpserv.c的源代码:

  #include <stdio.h>

  #include "atmi.h"

  / Tuxedo ATMI函数库的头文件 /

  TOUPPER(TPSVCINFO rqst){

  int i;

  for(i=0;i<rqst->len-1;i++)

  rqst->data[i]=toupper(rqst->data[i]); / 将rqst->data缓冲区内容转换成大写 /

  tpreturn(TPSUCCESS,0,rqst->data,0L,0); / 将rqst->data作为响应缓冲区返回 /

  }

  可能你已经注意到了,该程序没有提供main方法。事实上,Tuxedo不要求程序员编写main方法,以便让他们把精力集中在业务逻辑的编写上,在编译时,Tuxedo系统会为它自动创建。

  TPSVCINFO是Tuxedo记录服务调用信息的一个结构体,data域是保存请求数据的缓冲区,len域记录了data域的长度。

  2.Simpapp的客户程序

  客户程序Simpcl.c是服务调用的发起者,它从命令行接收参数,通过tpinit()调用连接到System/T,通过tpalloc()调用分配一个字符串类型的缓冲区,通过tpcall()调用请求TOUPPER服务,最后通过tpterm()调用退出System/T,下面是它的源代码:
==================
#include <stdio.h>

  #include "atmi.h"

  int main(int argc, char argv[]){

  char buf;

  long len;

  if(argc != 2) {

  (void) fprintf(stderr, "Usage: simpcl string\n");

  exit(1);

  }

  if (tpinit((TPINIT ) NULL) == -1) {

  (void) fprintf(stderr, "Tpinit failed\n");

  exit(1);

  }

  len = strlen(argv[1]);

  if((buf = (char ) tpalloc("STRING", NULL, len+1)) == NULL) {

  (void) fprintf(stderr,"Error allocating send buffer\n");

  tpterm();

  exit(1);

  }

  (void) strcpy(buf, argv[1]);

  if(tpcall("TOUPPER", buf, 0, &&buf, &len, 0)==-1){

  (void) fprintf(stderr, "Can't send request to service TOUPPER\n");

  tpfree(buf);

  tpterm();

  exit(3);

  }

  (void) fprintf(stdout, "Returned string is: %s\n", rcvbuf);

  tpfree(buf);

  tpterm();

  return(0);

  }
===================
3.Simpapp的配置文件

  除了客户和服务程序以外,Tuxedo还需要一个配置文件来对应用进行描述。配置文件由多个段组成,每个段定义由一个星号开始。下面是NT平台下simpapp的配置文件ubbsimple的内容,其中带下划线的部分需要根据机器的资源配置作适当修改。

  RESOURCES

  IPCKEY 123456

  MASTER NODE1

  MODEL SHM

  MACHINES

  JQ LMID=NODE1

  TUXDIR="G:\ProgramFiles\BEA Systems\Tuxedo"

  APPDIR="G:\simpapp"

  TUXCONFIG="G:\simpapp\tuxconfig"

  GROUPS

  GROUP1 LMID=NODE1 GRPNO=1

  SERVERS

  simpserv SRVGRP=GROUP1 SRVID=1 CLOPT="-A"

  SERVICES

  TOUPPER

  TUXDIR指的是Tuxedo的安装路径,APPDIR指的是simpapp应用程序所在的目录,TUXCONFIG指的是simpapp的二进制配置文件,一般为%APPDIR%\tuxconfig。
===================
4.Simpapp的编译和运行

  由于Buildclient和Buildserver没有编译能力,要编译Tuxedo应用程序时,还必须安装第三方的C语言编译器,在NT平台下推荐使用VC。步骤如下:

  ⑴设置环境变量

  SET PATH=%PATH%; G:\Program Files\BEA Systems\Tuxedo\Bin

  SET TUXDIR=G:\Program Files\BEA Systems\Tuxedo

  TUXCONFIG=G:\simpapp\tuxconfig

  ⑵生成二进制配置文件

  tmloadcf -y ubbsimple

  ⑶编译客户程序

  buildclient -o simpcl.exe -f simpcl.c

  ⑷编译服务程序

  buildserver -o simpserv.exe -f simpserv.c -s TOUPPER

  ⑸启动服务程序

  tmboot -y

  ⑹运行客户程序

  simpcl "hello, JQ"

  ⑺关闭应用程序

  tmshutdown -y

  5.管理Simpapp

  通过tmadmin命令可以方便地管理服务程序。

================
posted @ 2009-06-20 00:56  mop  阅读(735)  评论(0)    收藏  举报