환경설정

웹 서비스 게이트웨이(WSGW)를 동작시키기 위해서는 서비스 정보 파일, WSGW 설정 파일, Tmax 환경설정 파일을 설정해야 한다. 본 장에서는 각 환경 파일의 설정 방법에 대해서 설명한다.

1. 서비스 정보 파일

Tmax의 서비스를 웹 서비스로 사용하기 위해서는 외부로 제공할 서비스들의 설명이 필요하다. 정의된 파일은 WSGW에서 수신된 SOAP 메시지를 Tmax 버퍼로 변환하고 서비스 결과를 SOAP 메시지로 변환하거나 서비스 요청자를 위해서 WSDL 문서 생성하는 경우에도 사용한다.

서비스 정의는 서비스 정보(이름, input 파라미터 타입, output 파라미터 타입), input 파라미터 정보, output 파라미터 정보로 구성한다. 서비스의 표현은 SERVICE 절, REQUEST 절, RESPONSE 절을 사용해서 표현한다. SERVICE 절 이후로의 내용은 서비스 정보, REQUEST 절 이후로의 내용은 input 파라미터 정보, RESPONSE 절 이후로의 내용은 output 파라미터 정보를 표현한다.

request-response 동작 방식을 원한다면 REQUEST, RESPONSE 절을 모두 정의해야 하고 one-way 방식을 원한다면 REQUEST 절만을 정의한다. 하나의 파일에 여러 개의 서비스가 정의가 가능하며 대소문자를 구분하기 때문에 정확하게 작성해야 한다. REQUESET나 RESPONSE 절에 필드가 내부에 구조체를 지원한다면 STRUCT 절에 해당하는 데이터 타입을 기록하여 이용할 수 있다. 각 절의 설정 항목에 대한 자세한 설명은 Tmax Administration Guide를 참고한다. 서비스 정보 파일이 그대로 사용되지는 않고 tmmbfgen 유틸리티로 변환된 파일을 WSGW와 xwsdlgen에서 사용한다.

SERVICE 절

다음은 SERVICE 절의 항목에 대한 설명이다.

  • 필수 항목

    항목 설명

    name

    외부에서 제공하는 오퍼레이션의 이름이다.

  • 선택 항목

    항목 설명

    tmaxname

    실제 Tmax에서 제공하는 서비스 이름이다. 이 항목이 정의되어 있지 않으면 name 항목이 tmaxname과 같다고 처리한다.

    intype

    input 파라미터의 type(STRING, CARRAY, STRUCT, FDL, char, short, int, float, double), input 파라미터가 존재하지 않는다면 정의하지 않는다.

    outtype

    output 파라미터의 type(STRING, CARRAY, STRUCT, FDL, char, short, int , float, double), output 파라미터가 존재하지 않는다면 정의하지 않는다.

    instruct

    input 파라미터 type이 STRUCT이거나 FDL일 경우 구조체의 이름이나 사용자 정의 이름이다.

    • STRUCT일 경우 : SDL에 정의된 구조체 이름을 설정한다.

    • FDL일 경우 : 임의로 사용자가 정해준다. 값을 지정하지 않을 경우 자동으로 "서비스이름RequestFDL"로 값을 저장한다.

    outstruct

    output 파라미터 type이 STRUCT이거나 FDL일 경우 구조체의 이름이나 사용자 정의 이름이다.

    • STRUCT일 경우 : SDL에 정의된 구조체 이름을 설정한다.

    • FDL일 경우 : 임의로 사용자가 정해준다. 값을 지정하지 않을 경우 자동으로 "서비스이름ResponseFDL"로 값을 저장한다.

    inalias

    Tmax에서 사용하고 있는 instruct이 이름과 웹 서비스에서 사용하고 있는 REQUEST 이름이 다를 경우에 웹 서비스에서 사용하는 이름을 정의한다.

    outalias

    Tmax에서 사용하고 있는 outstruct이 이름과 웹 서비스에서 사용하고 있는 RESPONSE 이름이 다를 경우에 웹 서비스에서 사용하는 이름을 정의한다.

REQUEST, RESPONSE 절

다음은 REQUEST, RESPONSE 절의 항목에 대한 설명이다.

  • 필수 항목

    항목 설명

    name

    파라미터 이름이다.

    type

    파라미터 타입(char, int, long, float, double, stirng, carray,struct)이다.

  • 선택 항목

    항목 설명

    maxoccurs

    해당하는 전체 type(intype or outtpye)이 STRUCT이거나 FDL일 경우 이 필드가 최대 몇 개 입력될 수 있는지 제한할 수 있다.

    minoccurs

    해당하는 전체 type(intype or outtpye)이 STRUCT이거나 FDL일 경우 이 필드가 최소 몇 개가 입력되야 하는지 제한할 수 있다.

    restriction

    wsdl로 변경될 경우 restriction 항목과 동일하다.

    • length, minLength, maxLength, enumeration, pattern, minExclusive, maxExclusive, minInclusive, maxInclusive, totalDigit, fractionDigit

    (예: length="3", patter="ab?")

    subtype

    type이 STRUCT일 경우 구조체 이름을 정의한다.

STRUCT 절

다음은 STRUCT 절의 항목에 대한 설명이다.

  • 필수 항목

    항목 설명

    name

    구조체 이름이다.

    TYPE

    TYPE 절에 소속된 필드들을 정의한다.

    • TYPE 절 항목

      다음은 STRUCT 안의 TYPE 절 항목에 대한 설명이다.

      • 필수 항목

        항목 설명

        name

        파라미터 이름이다.

        type

        파라미터 타입(char, int, long, float, double, stirng, carray,struct)이다.

      • 선택 항목

        항목 설명

        maxoccurs

        해당하는 전체 type(intype or outtpye)이 STRUCT이거나 FDL일 경우 이 필드가 최대 몇 개 입력될 수 있는지 제한할 수 있다.

        minoccurs

        해당하는 전체 type(intype or outtpye)이 STRUCT이거나 FDL일 경우 이 필드가 최소 몇 개가 입력되야 하는지 제한할 수 있다.

        restriction

        wsdl로 변경될 경우 restriction 항목과 동일하다.

        • length, minLength, maxLength, enumeration, pattern, minExclusive, maxExclusive, minInclusive, maxInclusive, totalDigit, fractionDigit

        (예: length="3", patter="ab?")

        subtype

        type이 STRUCT일 경우 구조체 이름을 정의한다.

1.1. 바이너리 생성

tmmbfgen

사용자가 작성한 서비스 정보 파일은 그대로 WSGW와 xwsdlgen에서 사용할 수 없다. tmmbfgen으로 새로운 파일을 생성해야 한다. tmmbfgen에 의해서 생성된 파일을 서비스 정보 바이너리 파일이라고 한다. tmmbfgen을 하면 문법을 체크하고 파라미터의 타입 체크를 통해서 WSGW에서 참조하기 전에 미리 유효성 검사를 할 수 있으며 텍스트 문서를 여러 개로 분할하여 관리가 가능하다.

tmmbfgen은 다음과 같은 3가지 방법으로 사용 가능하다.

  • 새로운 서비스 정보 바이너리 파일 생성

    다음은 sample을 생성하고 sample1.txt와 sample2.txt에 정의된 서비스 정보를 sample에 입력하는 예이다.

    tmmbfgen -r sample1.txt,sample2.txt -o sample
  • 기존 서비스 정보 바이너리 파일에 추가

    다음은 기존 sample 파일에 sample3.txt에 정의된 서비스 정보를 추가하는 예이다. 만약 같은 서비스가 있다가 덮어쓰기 한다.

    tmmbfgen -i sample3.txt -o sample
  • 기존 서비스 정보 바이너리에서 특정 서비스 삭제

    다음은 sample 파일에서 서비스 SVC1, SVC2의 정보를 삭제하는 예이다.

    tmmbfgen -d SVC1,SVC2 -o sample

untmmbfgen

서비스 정보 바이너리 파일을 사용자들이 알아볼 수 있도록 다시 역변환한다.

untmmbfgen -i sample -o unsample.txt

1.2. 예제

메시지 타입에 따라서 서비스 정보 파일을 설정하는 방법에 대해 설명한다.

STRING 타입

문자열을 받아서 대문자로 변화하여 반환하는 서비스이다.

  • input 파라미터 : char[20]

  • output 파라미터 : char[20]

다음은 TOUPPER 서비스 정보 파일 예제이다.

SERVICE
 name = TOUPPER
 intype = STRING
 outtype = STRING

 REQUEST
 name = req
 type = string

 RESPONSE
 name = result
 type = string

STRUCT 타입

문자열의 길이와 문자열을 가진 구조체를 받아서 대문자로 변환하여 반환하는 서비스이다.

  • input 파라미터 : kstrdata

  • output 파라미터 : kstrdata

다음은 TOUPPERSDL 서비스 정보 파일 예제이다.

SERVICE
 name = TOUPPERSDL
 intype = STRUCT
 outtype = STRUCT
 instruct = kstrdata
 outstruct = kstrdata

 REQUEST
 name = len
 type = int
 name = str
 type = string

 RESPONSE
 name = len
 type = int
 name = str
 type = string

다음은 SDL 파일 예제이다.

struct kstrdata {
    int     len;
    char    sdata[20];
}

FILED 타입

문자열 필드를 입력받아 대문자로 변환하여 반환하는 서비스이다.

  • input 파라미터 : 필드 INPUT

  • output 파라미터 : 필드 OUTPUT

다음은 TOUPPERFDL 서비스 정보 파일 예제이다.

SERVICE
 name = TOUPPERFDL
 intype = FDL
 outtype = FDL
 instruct = toupfdl
 outstruct = toupfdl

 REQUEST
 name = INPUT
 type = string

 RESPONSE
 name = OUTPUT
 type = string

다음은 FDL 파일 예제이다.

INPUT   101  string   -  -
OUTPUT  102  string   -  -

2. 웹 서비스 게이트웨이 설정 파일

웹 서비스 게이트웨이(WSGW)가 시작할 때 WSGW 설정 파일을 읽어서 어떤 Tmax 서비스를 제공하는지 HTTP listen할 IP와 포트 번호를 결정한다. WSGW 설정 파일은 제공할 서비스 목록, 바인딩할 HTTP 주소를 포함하고 xwsdlgen에서도 사용한다.

2.1. 파일 형식

WSGW 설정 파일은 <Configuration>을 root element로 가지는 XML로 구성한다. sub element는 웹 서비스 제공자 역할을 할 경우에는 <in> 아래에 설정하고 웹 서비스 요청자 기능을 제공한다면 <out>에 설정을 정의한다.

<in>

<in>의 sub element는 제공할 서비스 리스트를 설명하는 <Servicelist>와 바인딩할 주소를 설명하는 <GWInstance>로 표현한다.

  • <Servicelist>

    제공할 서비스 목록을 sub element <service>를 이용해 표현한다.

    <Servicelist id="sample">
       <service name="TOUPPER" />
       <service name="TOUPPERSDL"/>
    </Servicelist>
    속성 설명

    id

    서비스 리스트의 이름으로 WSDL 문서를 생성할 때 namespace로 적용한다.

    • <service>

      제공할 서비스 하나의 이름을 나타낸다.

      속성 설명

      name

      서비스 정보 파일에 SERVICE 절의 name에 적용한 이름을 적용한다.

      wswns

      WSDL 문서를 생성할 때 root element의 namespace로 적용한다.

      typens

      WSDL 문서를 생성할 때 type에 관련된 element의 namespace로 적용한다.

  • <GWInstance>

    <GWInstance>
      <HTTP address="127.0.0.1:10032"/>
    </GWInstance>
    • <HTTP>

      속성 설명

      address

      WSGW가 listen하게 될 HTTP 주소와 포트 번호를 정의한다.

<out>

<out>의 sub element는 호출할 웹 서비스 목록인 <Servicelist>와 접속할 위치를 속성으로 가진다.

  • <service>

    제공할 서비스 목록을 sub element <service>를 이용해 표현한다.

    속성 설명

    uri

    실제 서비스를 요청할 웹 서비스 제공자의 주소이다.

    soap_version

    서비스 요청할 SOAP 버전(1.1, 1.2)이다.

    encoding_stype

    rpc, doc 이다.

    wsns

    WSDL 문서의 상위 target의 namespace이다.

    typens

    WSDL 문서의 data type의 namespace이다.

  • <Servicelist>

    호출할 서비스 목록을 sub element <service>를 이용해 표현한다.

    <Servicelist id="sample" >
       <service name="TOUPPER" />
       <service name="TOUPPERSDL" />
    </Servicelist>
    • <service>

      제공할 서비스 하나의 이름을 나타낸다.

      속성 설명

      name

      서비스 정보 파일에 SERVICE 절의 name에 적용할 이름을 설정한다.

2.2. 예제

다음은 TOUPPER, TOUPPERSDL, TOUPPERFDL을 제공하는 게이트웨이 설정 파일이다.

<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns="http://www.tmax.co.kr/twsp/twsgwconfig/">
    <in>
        <Servicelist id="TmaxSampleECHO" >
            <Service name="TOUPPER_TMAX" />
        </Servicelist>
        <GWInstance>
            <HTTP address="192.168.1.43:5001"/>
        </GWInstance>
    </in>
    <out uri="http://192.168.11.240:80/axis2/services/TmaxSampleTouppers"
            soap_version = "1.2" encoding_style="rpc"
            wsns = "http://192.168.11.240:80/axis2/services/TmaxSampleTouppers"
            typens= "">
        <Servicelist>
            <Service name="TOUPPER" />
            <Service name="TOUPPERFDL" />
        </Servicelist>
    </out>
    <out uri="http://192.168.11.240:80/axis2/services/RPCSample"
         soap_version = "1.1" encoding_style="rpc"
         wsns= "http://192.168.11.240:80/axis2/services/RPCSample/RPCSample"
         typens= "http://192.168.11.240:80/axis2/services/RPCSample/RPCSampleType">
        <Servicelist>
            <Service name="TOUPPERSDL" />
        </Servicelist>
    </out>
</Configuration>

3. Tmax 환경설정

Tmax 환경설정의 GATEWAY 절의 설정을 따르며 필요한 필수 속성은 GWTYPE, CLOPT(-c,-m), NODENAME, DIRECTION이다.

다음은 Tmax 환경설정 파일 예제이다.

*SERVICE
TOUPPER         SVRNAME = WSGWOUT
TOUPPERSDL      SVRNAME = WSGWOUT
TOUPPERFDL      SVRNAME = WSGWOUT

*GATEWAY
WSGWOUT
        GWTYPE=WSGW,
        NODENAME=tmaxi4,
        PORTNO=5005,
        RGWADDR="192.168.11.240",
        RGWPORTNO=80,
        DIRECTION=OUT,
        CLOPT="-csample.xml -msample",
        CPC=3

다음은 Tmax 환경설정의 필수 설정 항목에 대한 설명이다.

항목 설명

GWTYPE

반드시 WSGW로 설정한다.

CLOPT

사용할 웹 서비스 설정 파일과 서비스 정보 바이너리 파일의 이름을 설정해야 한다. 이 파일들은 $TMAXDIR/config 안에 존재해야 한다.

NODENAME

WSGW를 사용하는 노드 이름을 입력한다.

DIRECTION

웹 서비스 제공자 역할일 경우에는 IN, 웹 서비스 요청자 역할일 경우에는 OUT으로 입력한다.

PORTNO

listen할 포트 번호를 입력한다.