一句话太少
分类:
2006-12-30 09:58:13
二、 准备工作
三、 simpapp例子建立步骤
四、 复制simpapp应用程序
(1) 建立新目录,并复制simpapp到新目录下(以下建立wsy目录,并复制simpapp到wsy目录下),如下图:
(2) 设置正确的环境变量
将TUXDIR、APPDIR、PATH、TUXCONFIG等环境变量export出来,设置成正确的环境变量。
TUXDIR:tuxedo软件安装目录
APPDIR:tuxedo应用可执行程序目录
PATH:包含%TUXDIR%in、%APPDIR%路径
TUXCONFIG:tuxedo的ubbconfig配置文件编译后的二进制文件路径
注:这些环境变量要求与ubbconfig配置文件设置的环境变量相同
客户端代码简析及编译
(1)客户端simpcl.c代码分析
#include #include "atmi.h" /* TUXEDO 头文件*/
#if defined(__STDC__) || defined(__cplusplus)
main(int argc, char *argv[])
#else
main(argc, argv)
int argc;
char *argv[];
#endif
{
char *sendbuf, *rcvbuf;
long sendlen, rcvlen;
int ret;
if(argc != 2) {
(void) fprintf(stderr, "Usage: simpcl string ");
exit(1);
}
/* 作为tuxedo客户端连入tuxedo System */
if (tpinit((TPINIT *) NULL) == -1) {
(void) fprintf(stderr, "Tpinit failed ");
exit(1);
}
sendlen = strlen(argv[1]);
/* 使用tpalloc申请string类型buffer作为请求和应答buffer */
if((sendbuf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL) {
(void) fprintf(stderr,"Error allocating send buffer ");
tpterm();
exit(1);
}
if((rcvbuf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL) {
(void) fprintf(stderr,"Error allocating receive buffer ");
tpfree(sendbuf);
tpterm();
exit(1);
}
(void) strcpy(sendbuf, argv[1]);
/* 同步调用TOUPPER服务 */
ret = tpcall("TOUPPER", (char *)sendbuf, 0, (char **)&rcvbuf, &rcvlen, (long)0);
if(ret == -1) {
(void) fprintf(stderr, "Can't send request to service TOUPPER ");
(void) fprintf(stderr, "Tperrno = %d ", tperrno);
tpfree(sendbuf);
tpfree(rcvbuf);
tpterm();
exit(1);
}
(void) fprintf(stdout, "Returned string is: %s ", rcvbuf);
/* 使用tpfree释放申请的请求和应答buffer空间 */
tpfree(sendbuf);
tpfree(rcvbuf);
/* 使用tpterm离开tuxedo System */
tpterm();
return(0);
}
|
#include #include #include #include
#if defined(__STDC__) || defined(__cplusplus)
tpsvrinit(int argc, char *argv[])
#else
tpsvrinit(argc, argv)
int argc;
char **argv;
#endif
{
/* 如果没有argc、argv一些编译系统会有警告信息. */
argc = argc;
argv = argv;
/* userlog 把tuxedo消息写入日志文件中 */
userlog("Welcome to the simple server");
return(0);
}
#ifdef __cplusplus
extern "C"
#endif
void
#if defined(__STDC__) || defined(__cplusplus)
TOUPPER(TPSVCINFO *rqst) /*tuxedo服务名字TOUPPER*/
#else
TOUPPER(rqst)
TPSVCINFO *rqst;
#endif
{
int i;
for(i = 0; i < rqst->len-1; i++)
rqst->data[i] = toupper(rqst->data[i]);
/* 设置返回客户端buffer */
tpreturn(TPSUCCESS, 0, rqst->data, 0L, 0);
}
|
#ident "@(#) apps/simpapp/ubbsimple : 1.1
#Skeleton UBBCONFIG file for the TUXEDO Simple Application.
#Replace the *RESOURCES
IPCKEY 66256
#IPCKEY必须是在32768 与 262143 之间
#Example:
#IPCKEY 123456
DOMAINID simpapp
MASTER simple
MAXACCESSERS 10
MAXSERVERS 5
MAXSERVICES 10
MODEL SHM
LDBAL N
*MACHINES
DEFAULT:
APPDIR="/tuxedo/wsy"
TUXCONFIG="/tuxedo/wsy/tuxconfig"
TUXDIR="/tuxedo"
"scosysv" LMID=simple
*GROUPS
GROUP1
LMID=simple GRPNO=1 OPENINFO=NONE
*SERVERS
DEFAULT:
CLOPT="-A"
simpserv SRVGRP=GROUP1 SRVID=1
*SERVICES
TOUPPER
|