Windows平台下tuxedo应用simpapp举例(tuxedo入门)_MQ, Tuxedo及OLTP讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MQ, Tuxedo及OLTP讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3148 | 回复: 0   主题: Windows平台下tuxedo应用simpapp举例(tuxedo入门)        下一篇 
game
注册用户
等级:新兵
经验:36
发帖:61
精华:0
注册:2011-7-23
状态:离线
发送短消息息给game 加好友    发送短消息息给game 发消息
发表于: IP:您无权察看 2014-10-13 10:23:42 | [全部帖] [楼主帖] 楼主

初步理解tuxedo应用的各个组成部分:客户端、服务端、配置文件、系统管理等

了解tuxedo应用客户端、服务端程序代码组成部分及编译方法

了解tuxedo应用的ubbconfig配置文件的作用及编译方法

了解tuxedo应用的启动、停止方法

了解tuxedo应用的系统管理基本命令

二、 准备工作

系统要求安装tuxedo软件

要求设置必要的环境变量

安装C语言编译器(VC++、Borland C++等)

三、 simpapp例子建立步骤

建立新目录,复制simpapp文件到新目录下,设置环境变量

服务端、客户端程序代码简单解释并编译程序

编辑ubbconfig配置文件并编译

启动simpapp应用程序

执行simpapp应用程序

运行tmadmin管理程序

关闭simpapp应用

四、 复制simpapp应用程序

(1) 建立新目录,并复制simpapp到新目录下(以下建立wsy目录,并复制simpapp到wsy目录下),如下图:

(2) 修改setenv.cmd文件的环境变量

修改setenv.cmd文件中TUXDIR、APPDIR、PATH、TUXCONFIG等环境变量,设置成正确的环境变量。

TUXDIR:tuxedo软件安装目录

APPDIR:tuxedo应用可执行程序目录

PATH:包含%TUXDIR%in、%APPDIR%路径

TUXCONFIG:tuxedo的ubbconfig配置文件编译后的二进制文件路径

VCVARS32.bat为VC++的环境变量批处理文件

注:这些环境变量要求与ubbconfig配置文件设置的环境变量相同

(3)执行setenv.cmd文件的环境变量

五、 客户端代码简析及编译

(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);
}


(2)客户端编译

客户端代码使用buildclient编译,如下图:

buildclient参数说明:

-o:指明客户端程序的可执行(输出目标)文件名称

-f:指明客户端源程序文件名称

六、 服务端代码简析及编译

(1)服务端simpserv.c代码分析

#include
#include
#include /* TUXEDO头文件 */
#include /* TUXEDO头文件 */
#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);
}


(2)服务端simpserv.c编译方法

服务端代码使用buildserver编译,如下图:

buildserver参数说明:

-o:指明服务端程序的可执行(输出目标)文件名称

-f:指明服务端源程序文件名称

-s:提供系统启动时的tuxedo系统服务的名称

七、 编辑ubbconfig配置文件并编译

#ident  "@(#) apps/simpapp/ubbsimple    : 1.1
#Skeleton UBBCONFIG file for the TUXEDO Simple Application.
#Replace the items with the appropriate values.
*RESOURCES
IPCKEY      262101
#IPCKEY必须是在32768 与 262143 之间
#Example:
#IPCKEY     123456
DOMAINID    simpapp
MASTER      simple
MAXACCESSERS    10
MAXSERVERS  5
MAXSERVICES10
MODEL       SHM
LDBAL       N
*MACHINES
DEFAULT:
APPDIR="c: uxedowsy"
TUXCONFIG="c: uxedowsy uxconfig"
TUXDIR="c: uxedo"
"WSY"       LMID=simple
*GROUPS
GROUP1
LMID=simpleGRPNO=1OPENINFO=NONE
*SERVERS
DEFAULT:
CLOPT="-A"
simpserv    SRVGRP=GROUP1 SRVID=1
*SERVICES
TOUPPER


(2)使用tmloadcf编译ubbconfig文件,生成二进制的TUXCONFIG环境所指定的文件

八、 启动simpapp应用程序

使用tmboot启动tuxedo应用程序,如下图:

九、 执行simpapp应用程序

执行simpcl命令可以将客户端发送到服务端的小写字符转换为大写并返回给客户端,如图:

十、 运行tmadmin管理程序

系统管理员可以使用tuxedo提供的tmadmin命令对tuxedo应用进行管理、动态配置,下面例举了常用的psr和psc命令。具

体的参考tmadmin命令手册。

(1)printserver(可简写为psr):输出server的相关信息等

(2)printservice(可简写为psc)输出services的相关信息等

(3)quit:退出tmadmin命令控制界面

十一、 关闭simpapp应用程序

运行tmshutdown命令停止tuxedo应用服务程序,如图:

 作者简介

吴绍永是(dev2dev ID: wsywin) BEA dev2dev中文网站--在线技术论坛Tuxedo栏目版主,资深Tuxedo专家

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论