初次接触Tuxedo

公司的新员工入职培训给我们介绍了一种常用的中间件Tuxedo,了解了其简单的开发过程,记录一下简单的开发过程【客户端和服务器同在一台机】


1、配置环境变量
主要的选项包括:

— TUXDIR:Tuxedo应用的安装路径。

— TUXCONFIG:便以后的Tuxedo配置文件路径。

— VIEWDIR/VIEWFILES:view文件的路径和文件名。

— LD_LIBRARY_PATH:Tuxedo应用时,需要寻找的库文件的路径。

— PATH:Tuxedo特用的一些可执行文件的路径。【如果涉及到Domain,还有相应的环境变量。】

— SERVERS:包含了服务进程的信息。一个入口代表一个应用启动时加载的服务。这些信息包含服务名,命令行参数,服务环境,重启动等等。

— SERVICES:提供了应用的特殊交易的信息,包括负载平衡(LOAD)和数据缓冲类型检查(BUFTYPE)。如果全部都是缺省值则本节可以省略。



2、编写客户端程序

#include <stdio.h>
#include "atmi.h" /* Tuxedo ATMI函数库的头文件 */

int main(int argc, char argv[])
{
char *sendbuf, *recvbuf;
long len = 0;
int iRet = 0;

if (argc != 2)
{
fprintf(stderr, "Usage: simpcl string\n");
exit(1);
}

/* Tuxedo初始化 */
if ( -1 == tpinit((TPINIT*)NULL) )
{
fprintf(stderr, "Tpinit failed\n");
exit(1);
}

/* 申请缓冲区 */
len = strlen(argv[1]);
sendbuf = (char*) tpalloc("STRING", NULL, len+1)
if ( NULL == sendbuf )
{
fprintf(stderr, "Error allocating send buffer\n");
tpterm();
exit(1);
}
recvbuf = (char *)tpalloc( "CARRAY", NULL, len+1);
if ( NULL == recvbuf )
{
fprintf(stderr, "Error allocating receive buffer\n");
tpfree((char *)sendbuf);
tpterm();
exit(1);
}

/* 请求报文 */
strcpy(buf, argv[1]);

iRet = tpcall("TOUPPER", /* 交易名 */
(char *)sendbuf, /* 请求数据缓冲 */
0, /* 请求数据缓冲的长度(仅缓冲类型为CARRY时需要) */
(char **)&recvbuf, /* 返回数据缓冲的地址,缓冲大小可以根据收到数据而改变 */
&&len, /* 返回数据缓冲大小的地址 */
1|TPNOTIME /* 标志量 TPNOTRAN-如有交易不调用;TPNOBLOCK-如有阻塞不等待;TPNOTIME-愿意等待直到超时;TPSIGRSTRT-系统中断信号在TUXEDO完成后再发布 */
);

if ( -1 == iRet )
{
(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、编写服务器端程序

#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作为响应缓冲区返回 */
}



4、编辑ubbconfig文件(一般ubb配置文件在目录${HOME}/etc下,包含ubb字眼)
ubb文件的内容包括如下的Section:
—Resources:包含整个应用范围的信息。必须在配置在文件第一节,不可缺少。
—Machines:节包含应用有关的每个处理器的信息。本节必须在*RESOURCES节后列出。
—Groups:节包含服务组的定义。一台机器至少要定义一个服务组,每个组只要定义组名,映射组名的组号和逻辑机器名
-----------------------------------------
RESOURCES
IPCKEY 123456
MASTER NODE1
MODEL SHM

MACHINES
JQ LMID=NODE1
TUXDIR="/home/bea/tuxedo11gR1"
APPDIR="/home/train/log"
TUXCONFIG="/home/train/etc/tuxconfig"

GROUPS
GROUP1 LMID=NODE1 GRPNO=1

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

SERVICES
TOUPPER



5、将ubbconfig文件编译为二进制的tuxconfig二进制文件【在配置时最好使用tmloadcf -c ubb估量一下需要的IPC资源】
tmloadcf -y ubbsimple



6、编译后台服务器文件
buildserver -o simpserv -f simpserv.c -s TOUPPER



7、编译客户端程序
命令格式:buildclient –f filen_ame -O output_file【如果客户端是一个workstation(本地没有Tuxedo Server),则还要加上-w选项】

buildclient -o simpcl -f simpcl.c


8、启动服务
tmboot -cy



9、客户端调用服务
simpcl "hello, JQ"


10、关闭应用程序
tmshutdown -y

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值