中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> Bea专区 > Tuxedo
Sco Unix平台下tuxedo应用simpapp举例
作者:佚名 时间:2005-09-20 10:26 出处:互连网 责编:小渔
              摘要:Sco Unix平台下tuxedo应用simpapp举例
Sco Unix平台下tuxedo应用simpapp举例
 
  一、 课程目标
通过本课程学习,你可以掌握如下知识:
  • 初步理解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) 设置正确的环境变量
    将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);

     

    }

     



    (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

     

    {

     

           /* 如果没有argcargv一些编译系统会有警告信息. */

     

           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      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

     


    (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专家
    关闭本页
     
    首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
    Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有