<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    本站不再更新,歡迎光臨 java開發技術網
    隨筆-230  評論-230  文章-8  trackbacks-0
    Windows平臺下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) 修改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

    {

           /* 如果沒有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      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專家
    posted on 2006-08-08 15:29 有貓相伴的日子 閱讀(3043) 評論(1)  編輯  收藏

    評論:
    # re: Windows平臺下tuxedo應用simpapp舉例(tuxedo入門)(轉自于bea.com.cn) 2006-08-08 21:38 | 我一直在努力!
    非常好,寫的具體點就更好了  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    本站不再更新,歡迎光臨 java開發技術網
    主站蜘蛛池模板: 免费精品久久天干天干| 真人做人试看60分钟免费视频| 国产精品亚洲二区在线观看| 曰批全过程免费视频在线观看无码 | 久久青草免费91线频观看不卡| 久久丫精品国产亚洲av| 超pen个人视频国产免费观看| 一级免费黄色大片| 亚洲在成人网在线看| 免费观看四虎精品国产永久| 你是我的城池营垒免费观看完整版 | 亚洲国产精品无码久久久久久曰| 三年片免费观看大全国语| 亚洲一区二区三区在线| 亚洲无码高清在线观看| 思思re热免费精品视频66 | 色视频在线观看免费| 亚洲人成在线影院| 亚洲&#228;v永久无码精品天堂久久| 免费黄网站在线看| 婷婷亚洲综合一区二区 | 人人公开免费超级碰碰碰视频 | 日韩精品电影一区亚洲| 亚洲精品在线免费观看视频| 国产产在线精品亚洲AAVV| 亚洲白嫩在线观看| 亚洲一区二区三区偷拍女厕 | 免费国产午夜高清在线视频| 亚洲av纯肉无码精品动漫| 亚洲色欲www综合网| 国产L精品国产亚洲区久久| 成人无遮挡裸免费视频在线观看| 在线观看免费无码专区| 免费毛片毛片网址| 亚洲精品自偷自拍无码| 7777久久亚洲中文字幕蜜桃| 在线a亚洲v天堂网2019无码| 成人免费视频国产| 欧美最猛性xxxxx免费| 免费A级毛片无码视频| 久久久久久国产a免费观看不卡|