J2EE Client 개발 가이드

본 가이드는 행정안전부에서 주관한 국가정보자원 개방 및 공동활용체계 구축사업에서 개발된 Web Service를 사용하기 위한 가이드 입니다. 기존의 일반적인 웹서비스 클라이언트 개발과는 어느정도 차이가 있음을 확인해 주시기 바랍니다.

1. 환경구성

J2EE기반의 Web Service Client 개발을 위한 개발 환경은 아래 그림과 같다.
개발환경 - 개발Platform : Eclipse 3.4 (Ganymede) 이상 / JDK Version : JDK 1.5 이상
추가적으로 다음 그림과 같은 Library 파일이 필요하다. 추가 Library 파일은 링크를 이용한다.
연계 API Library : client_api-0.5.5.jar / Apache Commons : commons-io-1.3.2.jar, commons-lang-2.5.jar, commons-configuration-1.6.jar, commons-collections-3.2.1.jar, commons-logging-1.1.1.jar / Apache httpcomponents : httpclient-4.0.3.jar, httpcore-4.0.1.jar / Jazzlib(압축) : jazzlib-binary-0.07.jar위 라이브러리 가운데 Apache Commons라이브러리 ( http://commons.apache.org/ )와
HttpComponents( http://hc.apache.org/ )라이브러리는 명시된 버전 넘버보다 최신의 것을 사용해도 된다.

최종적으로 아래 그림과 같이 이클립스 프로젝트에 위 Library 파일을 등록하여 사용한다.
Eclipse의 Project Libraries에 위 Library 파일들을 추가한다

2. esbclient.properties 파일 설정

연계 모듈에서 서비스 인증, 서비스 인증키 등록 주요 설정 정보를 파일로 관리한다.
설정 파일인 esbclient.properties 설정은 아래 표와 같다.

########################################################

# intgr.data.go.kr --> 112.216.142.165

# (시스템의 도메인(C:\Windows\System32\drivers\etc\hosts) 에 추가)

########################################################

 

# 연계 URI

systemUri = http://intgr.data.go.kr:8883/sba/process/

# SSL인증파일 다운로드 URI

certUri = http://intgr.data.go.kr:8883/sba/authkey/

# SSL 인증 URI

authUri = https://intgr.data.go.kr:8881/sba/ssl/

# 인증키(session key)등록 URI

sessionUri = https://intgr.data.go.kr:8881/sba/sessionKey/

 

# 등록저장소 SSL 인증을 위한 설정

keypass = 111222

defaultalias = esbkeystore

keystorename = keystore.ImportKey

 

# SSL 인증 관련 설정

certPath = D:\\keystore.ImportKey

id = test-service          #등록 저장소의 활용자 ID

password = testservice      #등록 저장소의 활용자 Password

ip = 192.168.0.45

sessionKey =

 

# 암복호화 관련 설정

encodeType = ARIA

bitNum = 128

secretKey = abcdefghijklm123

 

3. Sample Code 설명

공유 웹서비스 호출 Sample Code는 다음 표와 같다.

package iros.gsb.sample;

 

import iros.gsb.constant.UserType;

import iros.gsb.constant.WebSvcType;

import iros.gsb.sbe.api.IntegrationClientAPI;

 

import java.io.File;

import java.util.Map;

 

import org.apache.commons.io.FileUtils;

 

/**

* 웹서비스(SOAP, REST) 호출 Example

* @author Administrator

*

*/

public class TESTWEBSVC {

 

public static void main(String[] args) throws Exception{

IntegrationClientAPI api = new IntegrationClientAPI("D:\\esbclient.properties");  /* esbclient.properties 파일 설정/

String filename = "";

 

// 웹 서비스 활용자 인증처리를 한다.

System.out.println("---------------------------------------------");

api.auth(UserType.USER);

 

// 웹 서비스 활용자를 위한 서비스 인증키가 생성된다.

String madesskey = api.makeSessionKey();

 

// 웹 서비스 활용자를 위한 서비스 인증키(session key)를 발행한 후 인증 서버에 등록한다.

api.sendSessionKey(madesskey);

 

System.out.println("===========================[Session Key Result]===========================");

System.out.println("[INFO] made SessionKey : " + madesskey);

System.out.println();

 

/*################ REST 웹서비스 호출 POST 방식 START ################*/

WebSvcType wstype = WebSvcType.REST; // REST Type

String URI = "http://localhost:8080/iros_eaptl_websvc/customerservice/customerservice/customers"; // URI을 설정한다.

String reqStr = "<Customer><name>567</name></Customer>";// Request Message를 설정한다.

 

// REST 일 경우에는 Message Header를 설정한다.

// SOAP 일 경우에는 SOAP 메시지에 Message Header를 작성한다.

Map headerCnt = api.setHeaderCnt("serviceKey", "requestTime", "callbackURI", "reqMsgID");

 

// REST 웹 서비스를 호출한다.

String retval = api.send(wstype, URI, reqStr, headerCnt);

 

// 반환값을 출력한다.

System.out.println("===========================[REST POST Request Result]===========================");

System.out.println(retval);


/*################ REST 웹서비스 호출 POST 방식 END ################*/



/*################ REST 웹서비스 호출 GET 방식 START ################*/

wstype = WebSvcType.REST; // REST Type

URI = "http://localhost:8080/iros_eaptl_websvc/customerservice/customerservice/customers/123"; // URI을 설정한다.

reqStr = null;// GET 메소드는 Request Message가 필요없다.

 

// REST 일 경우에는 Message Header를 설정한다.

// SOAP 일 경우에는 SOAP 메시지에 Message Header를 작성한다.

headerCnt = api.setHeaderCnt("serviceKey", "requestTime", "callbackURI", "reqMsgID");

 

// REST 웹 서비스를 호출한다.

retval = api.send(wstype, URI, reqStr, headerCnt);

 

// 반환값을 출력한다.

System.out.println("===========================[REST GET Request Result]===========================");

System.out.println(retval);

/*################ REST 웹서비스 호출 GET 방식 END ################*/

 

/*################## SOAP 웹서비스 호출 START ##################*/

wstype = WebSvcType.SOAP; // SOAP Type

URI = "http://192.168.0.50:8092/PersonService/"; // URI을 설정한다.

filename = "request.xml"; // SOAP 메시지는 직접 SOAP 요청 메시지를 작성해야 함

reqStr = FileUtils.readFileToString(new File(filename)); // xml 파일을 String으로 변환한다

 

// SOAP 일 경우에는 SOAP 메시지에 Message Header를 작성하므로 headerCnt 를 null 로 설정한다.

headerCnt = null;

 

// REST 웹 서비스를 호출한다.

retval = api.send(wstype, URI, reqStr, headerCnt);

 

// 반환값을 출력한다.

System.out.println("===========================[SOAP Request Result]===========================");

System.out.println(retval);


/*################## SOAP 웹서비스 호출 END ##################*/

}

}