소개

  • Open-API 란
  • 이용안내
Home 소개 이용안내

이용안내

▶ Web Service 개념 설명

웹 서비스(Web Service)는 네트워크 상에서 서로 다른 종류의 컴퓨터들 간에 상호작용을 하기 위한 소프트웨어 시스템이다. 웹 서비스는 서비스 지향적 분산 컴퓨팅 기술의 일종으로 SOAP, WSDL, UDDI 등의 주요 표준 기술로 이루어진다. 웹 서비스의 모든 메시징에는 주로 XML이 사용된다. -Wikipidia-

▶ Web Service 주요 구성요소 -SOAP-

SOAP (Simple Object Access Protocol) : XML과 HTTP등을 기본으로 하여 다른 컴퓨터에 있는 데이터나 서비스를 호출하기 위한 통신규약(Protocol)이다. SOAP을 지원하는 서버가 대중화가 되면서 대부분의 SOAP 서버들을 웹에서 Access가 가능해졌으며 당양한 프로그램언어에서도 쉽게 실행할 수 있게 되었다.

▶ Web Service 주요 구성요소 -UDDI-

UDDI (Universal Description, Discovery, and Integration) : 개방형 표준과 비독점적 기술을 기반으로 개발된 전역 비즈니스 레지스터리이다. 이 레지스터리를 이용하여 다양한 웹서비스를 사용자는 쉽게 검색하여 사용할 수 있다.

▶ Web Service 주요 구성요소 -WSDL-

WSDL (Web Service Discription Language) : 웹서비스에서 제공하는 기능들(서비스 오퍼레이션에 해당함)을 외부에서 이용할 수 있도록 그 사용방법을 알려주는 인터페이스 언어로 XML 기반으로 작성된다.

▶ Web Service 구성도

웹 서비스의 구성도를 도식화 하면 아래 그림과 같다.

J2EE Client 개발 가이드

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

1. 환경구성

J2EE기반의 Web Service Client 개발을 위한 개발 환경은 아래 그림과 같다.

추가적으로 다음 그림과 같은 Library 파일이 필요하다.

위 라이브러리 가운데 Apache Commons라이브러리 ( http://commons.apache.org/ )와
HttpComponents( http://hc.apache.org/ )라이브러리는 명시된 버전 넘버보다 최신의 것을 사용해도 된다.

최종적으로 아래 그림과 같이 이클립스 프로젝트에 위 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 ##################*/

}

}