본 장에서는 웹 서비스 요청자 기능을 위해서 기본으로 제공되는 Callback 함수와 데이터 변환 라이브러리에 대해 기술한다.
웹 서비스 요청자 기능을 위해서 기본으로 게이트웨이 실행 파일을 제공한다. 추가적으로 사용자가 임으로 Tmax 메시지를 SOAP 메시지로 변환하기 위해서는 웹 서비스 게이트웨이(WSGW) 라이브러리와 제공하는 Callback 함수를 구현하여 빌드하여 게이트웨이 실행 파일을 만들어서 실행할 수 있다. 제공하는 라이브러리는 libwsgw이다. 사용자가 게이트웨이에서 요청을 보내거나 응답을 받을 경우 선처리를 하고 싶을 경우에는 이 라이브러리와 Callback 함수를 구현하여 실행 파일로 빌드 후 wsgw로 만들어서 처리가 가능하다.
다음은 라이브러리에서 제공하는 Callback 함수 목록이다.
함수 | 설명 |
---|---|
*request_from_tmax | 웹 서비스 게이트웨이에서 호출되는 Callback 함수로 Tmax에서 외부로 요청이 호출된다. |
*reply_from_tmax | 외부에서 Tmax로의 요청에 대한 응답이 있을 경우 호출된다. |
*request_from_remote | 외부에서 Tmax로의 요청이 있을 경우 호출된다. |
*reply_from_remote | Tmax에서 외부로의 요청에 대한 응답이 있을 경우 호출된다. |
웹 서비스 게이트웨이에서 호출되는 Callback 함수로 Tmax에서 외부로 요청이 호출된다.
프로토타입
int (*request_from_tmax)(char *tmaxmsg, int ilen, char **soapmsg, int *olen, char **service, char **uri, char **soap_version);
파라미터
파라미터 | 설명 |
---|---|
tmaxmsg [in] | 변환될 Tmax 메시지이다. |
ilen [in] | Tmax 메시지(tmaxmsg)의 길이이다. |
soapmsg [out] | 변환된 SOAP 메시지로 내부에서 free하기 때문에 반드시 malloc으로 할당해야 한다. |
olen [out] | 변환된 SOAP 메시지의 길이이다. |
service [out] | 실제 서비스 이름으로 내부에서 free하기 때문에 반드시 malloc으로 할당해야 한다. |
uri [out] | uri로 내부에서 free하기 때문에 반드시 malloc으로 할당해야 한다. |
soap_version [out] | SOAP version ( 1.1 or 1.2 )으로 내부에서 free하기 때문에 반드시 malloc으로 할당해야 한다. |
외부에서 Tmax로의 요청에 대한 응답이 있을 경우 호출되는 Callback 함수이다.
프로토타입
int (*reply_from_tmax)(char *tmaxmsg, char **soapmsg, int *olen, char **service);
파라미터
파라미터 | 설명 |
---|---|
tmaxmsg [in] | 변환될 Tmax 메시지이다. |
soapmsg [out] | 변환된 SOAP 메시지이다. |
olen [out] | 변환된 SOAP 메시지(soapmsg)의 길이이다. |
service [out] | 실제 서비스 이름이다. |
외부에서 Tmax로의 요청이 있을 경우 호출되는 Callback 함수이다.
프로토타입
int (*request_from_remote)(char *soapmsg, int soapmsglen, char **tmaxmsg, char **service);
파라미터
파라미터 | 설명 |
---|---|
soapmsg [in] | 변환될 SOAP 메시지이다. |
soapmsglen [in] | SOAP 메시지(soapmsg)의 길이이다. |
tmaxmsg [out] | 변환된 Tmax 메시지이다. |
service [out] | 실제 서비스 이름이다. |
Tmax에서 외부로의 요청에 대한 응답이 있을 경우 호출되는 Callback 함수이다.
프로토타입
int (*reply_from_remote)(char *soapmsg, int soapmsglen, char **tmaxmsg, int *olen);
파라미터
파라미터 | 설명 |
---|---|
soapmsg [in] | 변환될 SOAP 메시지이다. |
soapmsglen [in] | SOAP 메시지(soapmsg)의 길이이다. |
tmaxmsg [out] | 변환된 Tmax 메시지이다. |
olen [out] | Tmax 메시지(tmaxmsg)의 길이이다. |
사용하는 코드는 다음과 같다.
#include <usrinc/wsgw_user.h> int main(int argc, char *argv[]) { request_from_tmax = NULL; reply_from_tmax = NULL; request_from_remote = NULL; reply_from_remote = NULL; return wsgw_main(argc,argv); }
Tmax 메시지와 SOAP 메시지 변환을 위해서 제공하는 라이브러리로 libwsgw이다. 웹 서비스 게이트웨이에서 rule에 따라서 Tmax 버퍼를 SOAP 메시지로 자동으로 변환하지만 사용자가 임의로 svrlib에서 변환을 하고 싶을 경우 이 라이브러리를 사용한다.
다음은 라이브러리에서 제공하는 함수 목록이다.
함수 | 설명 |
---|---|
init_config | 데이터 변환 함수로 환경설정에 적용한다. |
convert_tmax_to_soap | Tmax 메시지(tmaxmsg)를 SOAP 메시지(soapmsg)로 전환하는 함수이다. |
convert_soap_to_tmax | SOAP 메시지(soapmsg)를 Tmax 메시지(tmaxmsg)로 전환하는 함수이다. |
데이터 변환 함수로 환경설정에 적용한다.
프로토타입
int init_config(char *configfile, char *metafile);
파라미터
파라미터 | 설명 |
---|---|
configfile [in] | 웹 서비스 환경설정 파일 경로이다. |
metafile [in] | 웹 서비스 정보 파일 경로이다. |
Tmax 메시지(tmaxmsg)를 SOAP 메시지(soapmsg)로 전환하는 함수이다.
프로토타입
int convert_tmax_to_soap(char *svcname, char *tmaxmsg, char **soapmsg, int *olen, char *subtype, char *uri, char *soapversion, char *encodingstyle, char *wsns, char *typens );
파라미터
파라미터 | 설명 |
---|---|
svcname [in] | 서비스 이름이다. |
tmaxmsg [in] | 변환될 Tmax 메시지이다. |
soapmsg [out] | 함수 안에서 메모리를 할당한다. |
olen [out] | SOAP 메시지(soapmsg) 길이이다. |
subtype [in] | Tmax 메시지(tmaxmsg)가 구성된 struct 이름이다. |
uri [in] | 웹 서비스 제공자의 URI이다. |
soapversion [in] | 변환될 SOAP 메시지(soapmsg)의 version (1.1 or 1.2)이다. |
encodingstyle [in] | 변환될 SOAP 메시지(soapmsg)의 encoding type (rpc or doc)이다. |
wsns [in] | 변환될 SOAP 메시지(soapmsg)의 namespace이다. |
typens [in] | 변환될 SOAP 메시지(soapmsg) type의 namespace이다. |
SOAP 메시지(soapmsg)를 Tmax 메시지(tmaxmsg)로 전환하는 함수이다.
프로토타입
int convert_soap_to_tmax(char *soapmsg, int soapmsglen, char **tmaxmsg, int *len);
파라미터
파라미터 | 설명 |
---|---|
soapmsg [in] | 변환될 SOAP 메시지이다. |
soapmsglen [in] | SOAP 메시지(soapmsg)의 길이이다. |
tmaxmsg [out] | 함수 안에서 memory alloc 한다. |
len [out] | Tmax 메시지(tmaxmsg)의 길이이다. |