INIT/DONE API

1. wbSvrInit

wbSvrInit는서버를 초기화한다. WebtoB시스템에서 제공하는 응용 서버 프로그램의 분리된 main은 초기화 과정으로써 wbSvrInit()을 호출한다. 이 루틴은 프로세스가 수행되고 난 후, 아직 어떤 서비스 요청도 처리하기 전에 호출된다. 그러므로 wbSvrInit()루틴내에 트랜잭션이 정의될 수도 있다. 만약 응용 프로그램에서 wbSvrInit()루틴을 제공하지 않는다면, WebtoB가 제공하는 기본 루틴이 대신 호출된다.

응용 프로그램별 명령어 라인 옵션(CLOPT)은 서버에게 전달되어 wbSvrInit()에서 처리될 수 있다.

자세한 내용은 WebtoB 관리자 안내서의 환경설정의 SERVER 절 중 CLOPT 항목을 참고한다.

옵션은 argc와 argv를 통해 전달된다. 만약 wbSvrInit()수행 중에 에러가 발생한다면, 서버는 –1을 반환하면서 종료한다. 그리고 어떤 서비스 요청도 받지 않는다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    int wbSvrInit(int argc, char *argv[])
  • 반환값

    wbSvrInit()은 WBAPI 서버의 초기화 과정을 정의하는 함수로써 초기화 과정을 모두 완료한 후 명시적으로 0 이상의 값을 반환해 주어야 한다. 반환되는 값이 음수일 경우 서버는 svrinit fail을 발생하면서 종료된다.

  • 예제

    <wbsvrinit.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1          WEBTOBDIR="/user2/haninho/webtob",
                     SHMKEY = 54777,
                     DOCROOT="/user2/haninho/webtob/docs",
                     APPDIR="/user2/haninho/webtob/ap",
                     PORT = "7654"
    
    *SVRGROUP
     htmlg           NODENAME = "tmaxh1", SvrType = HTML
     webapg          NODENAME = "tmaxh1", SVRTYPE = WEBSTD
    
    *SERVER
     html            SVGNAME = htmlg, MinProc = 1, MaxProc =2
     wbsvrinit       SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test            SVRNAME = wbsvrinit
    
    *URI
     wbapi           Uri = "/svct/", Svrtype = WEBSTD
    
    *EXT
     htm             MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –I wbsvrinit.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 wbsvrinit.c이다.

       #include        <stdio.h>
       #include        <usrinc/atmi.h>
       #include        <usrinc/wbapi.h>
       wbSvrInit(int argc, char *argv[]){
              fprintf(stdout, "SERVER Start!\n");
              return 0;
       }
       wbSvrDone(){
              fprintf(stdout, "SVR DONE!\n");
       }
       test(WBSVCINFO *rqst)
       {
              wbPrint(rqst,"<HTML>\n");
              wbPrint(rqst,"<HEAD> <TITLE> wbSvrInit test </TITLE> <HEAD>\n\n");
              wbPrint(rqst,"<BODY>\n");
              wbPrint(rqst,"<H2>wbSvrInit test");
              wbPrint(rqst,"</BODY>\n");
              wbPrint(rqst,"</HTML>\n");
              wbreturn(rqst, WBSUCCESS);
       }
    4. wbapi로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c wbsvrinit
    5. 다음은 결과 출력에 대한 예이다.

      웹 서버를 기동할 때 wbsvrinit()에서 작성한 것 처럼 “SERVER Start!”라는 문자열이 표준 출력장치로 출력된다.

       $ wsboot
      
       WSBOOT for node(tmaxh1) is starting:
       Welcome to WebtoB demo system: it will expire 2001/12/31
       Today: 2001/10/29
              WSBOOT: WSM is starting: Mon Oct 29 21:15:33 2001
              WSBOOT: HTL is starting: Mon Oct 29 21:15:33 2001
              WSBOOT: HTH is starting: Mon Oct 29 21:15:33 2001
               Current WebtoB Configuration:
                      Number of client handler(HTH) = 1
                      Supported maximum user per node = 2025
                      Supported maximum user per handler = 2025
              WSBOOT: SVR(htmls) is starting: Mon Oct 29 21:15:33 2001
              WSBOOT: SVR(wbsvrinit) is starting: Mon Oct 29 21:15:33 2001
       $ SERVER Start!
  • 관련 함수

    wbSvrDone()

2. wbSvrDone

wbSvrDone는 서버가 종료될 때 수행될 작업을 수행한다.

WebtoB시스템에서 제공하는 응용 서버 프로그램의 분리된 main은 서비스 요청 처리를 모두 마치고 프로세스를 종료하기 전에 wbSvrDone()을 호출한다.

이 루틴이 실행될 때, 그 서버 프로세스는 여전히 시스템의 일부이기는 하지만 서비스는 지원하지 않는다. 그러므로, wbSvrDone() 루틴 내에서 트랜잭션이 정의될 수도 있다. 만약 wbSvrDone()이 대화형 연결을 유지하고 있다거나, 비동기성 응답을 여전히 기다리고 있다거나, 또는 트랜잭션 모드에 있는 동안에 반환한다면, WebtoB는 대화형 연결을 종료하고 기다리고 있던 비동기성 응답들을 무시하며 트랜잭션을 중지할 것이다. 그리고 그 서버 프로세스는 바로 종료하게 된다.

만약 응용 프로그램에서 wbSvrDone()루틴을 제공하지 않는다면, WebtoB가 제공하는 기본 루틴이 대신 호출된다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    int wbSvrDone(void)
  • 반환값

    wbSvrDone()은 개발자가 서버 프로세스의 종료를 수행하기 전에 필요한 작업을 수행하도록 작성하는 함수로 반환 값에 상관없이 정상 수행된다.

  • 예제

    <wbsvrdone.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR="/user2/haninho/webtob/ap",
                    PORT = “7654”
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SVRTYPE = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc =2
     wbsvrdone      SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = wbsvrdone
    
    *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i wbsvrdone.m
    2. 서비스테이블을 생성한다.

      $wsgst
    3. 요청을 처리하는 WBAPI 프로그램을 작성한다. 다음은 wbsvrdone.c에 대한 예제이다.

       #include        <stdio.h>
       #include        <usrinc/atmi.h>
       #include        <usrinc/wbapi.h>
       wbSvrInit(int argc, char *argv[]){
              fprintf(stdout, "SERVER Start!\n");
       }
       wbSvrDone(){
               fprintf(stdout, "SVR DONE!\n");
       }
       test1(WBSVCINFO *rqst)
       {
              wbPrint(rqst,"<HTML>\n");
              wbPrint(rqst,"<HEAD> <TITLE> wbSvrInit test </TITLE> <HEAD>\n\n");
              wbPrint(rqst,"<BODY>\n");
              wbPrint(rqst,"<H2>wbSvrdone test");
              wbPrint(rqst,"</BODY>\n");
              wbPrint(rqst,"</HTML>\n");
              wbreturn(rqst, WBSUCCESS);
       }
    4. wbapi로 만들어진 c파일을 Makefile 파일을 이용하여 컴파일한다.

      $compile c wbsvrdone
    5. 다음은 결과 출력에 대한 예이다.

      웹 서버가 기동될 때 wbSvrDone()에서 작성한 것 처럼 “SVR DONE”라는 문자열이 표준 출력장치로 출력된다.

       $ wsdown
       Do you really want to down whole Webtob? (y : n): y
      
       WSDOWN for node(tmaxh1) is starting:
       SVR DONE!
              WSDOWN: SERVER(wbsvrinit:2) downed: Tue Oct 30 09:56:12 2001
              WSDOWN: SERVER(html:0) downed: Tue Oct 30 09:56:12 2001
              WSDOWN: HTL downed: Tue Oct 30 09:56:12 2001
              WSDOWN: HTH downed: Tue Oct 30 09:56:12 2001
              WSDOWN: WSM downed: Tue Oct 30 09:56:12 2001
              WSDOWN: WEBTOB is down
  • 관련 함수

    wbSvrInit()