本站不再更新,歡迎光臨 java開發技術網
          隨筆-230  評論-230  文章-8  trackbacks-0
          Windows平臺下tuxedo應用simpapp舉例
        1. 初步理解tuxedo應用的各個組成部分:客戶端、服務端、配置文件、系統管理等
        2. 了解tuxedo應用客戶端、服務端程序代碼組成部分及編譯方法
        3. 了解tuxedo應用的ubbconfig配置文件的作用及編譯方法
        4. 了解tuxedo應用的啟動、停止方法
        5. 了解tuxedo應用的系統管理基本命令

          二、 準備工作

        6. 系統要求安裝tuxedo軟件
        7. 要求設置必要的環境變量
        8. 安裝C語言編譯器(VC++、Borland C++等)

          三、 simpapp例子建立步驟

        9. 建立新目錄,復制simpapp文件到新目錄下,設置環境變量
        10. 服務端、客戶端程序代碼簡單解釋并編譯程序
        11. 編輯ubbconfig配置文件并編譯
        12. 啟動simpapp應用程序
        13. 執行simpapp應用程序
        14. 運行tmadmin管理程序
        15. 關閉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代碼分析

        16.  
            一、 課程目標
          通過本課程學習,你可以掌握如下知識:

          #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開發技術網
          主站蜘蛛池模板: 翁牛特旗| 嫩江县| 栖霞市| 开阳县| 琼海市| 蓝山县| 呼玛县| 南丹县| 鲁甸县| 农安县| 天门市| 元谋县| 灯塔市| 宣城市| 莱芜市| 改则县| 巧家县| 共和县| 泽库县| 大渡口区| 鲁甸县| 永丰县| 来安县| 开鲁县| 曲靖市| 峨眉山市| 遂溪县| 河津市| 麻栗坡县| 英德市| 大丰市| 宁南县| 汾西县| 罗定市| 道真| 张家港市| 祁阳县| 陆丰市| 米林县| 台南市| 孟连|