Tuxedo Client程序初始化时:tpinit返回12错误:Internal system error,请问……??

snowlaker 2002-05-13 02:42:33
我刚刚开始学习Tuxedo的编程,公司要做一个client端的调用,
我在 tuxputenv("WSNADDR=*.*.*.*:*");并给TPINIT的usrname,cltname,passwd赋值后调用tpinit(),它每次返回都是12的错:Internal system error.
请问这可能是什么原因造成?是否我的Client端还有什么东西需要配置?谢谢!!
我的email:snowlaker@21cn.com
...全文
2099 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
westwf 2002-05-31
  • 打赏
  • 举报
回复
以下是一篇使用TX写C/S的第一篇入门,好像BEA的东东到公司培训的时候都要讲一遍,现把它贴在在里希望对你有点用.


客户机首先收集要转换成大写的字符串,然后连接到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=toupper(rqst->data); / 将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命令可以方便地管理服务程序。
Shenwj 2002-05-31
  • 打赏
  • 举报
回复
客户端程序目录下和根目录下都有。
snowlaker 2002-05-13
  • 打赏
  • 举报
回复
请问log在哪里看?
joyla 2002-05-13
  • 打赏
  • 举报
回复
看看log先

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧