블로그 이미지
Max.

calendar

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

Notice

2008.03.05 14:53 이전글(~2009)

예제에 대해서...
Spring WS(Web Service) 모듈을 이용하여 웹서비스 데모 예제를 만들어 본다. 이렇게 하는 이유는 기록함으로써 좀더 잘 이해하고 오래 지속되기 때문이다.
 (주요환경 : JDK1.5.x + Spring2.5 + Spring-WS1.5.0.m1 + Tomcat6.0 + Castor1.1)

작은것에서 부터 시작하자.
코드를 작성하기전에 요구되는 것은 기본개념이 있다. 그것은 웹서비스 개념과 OXM(Object / XML Mapper) 이다.

클라이언트 <----- XML -----> 서버

WS는 서버와 클라이언트 두 대상간의 데어터를 주고 받는 기술중에 하나이다. 정보를 요청하는쪽이 클라이언트이다. (클라이언트는 서버가 될수도 있고, 일반 사용자가 될수도있다.) 요청한 정보를 받아서 알맞게 처리후 결과값을 리턴하는 쪽이 서버이다.

클라이언트 (OXM) <----- XML(WSDL) -----> (OXM) 서버

WS는 XML(WSDL) 형식으로 데이터를 주고 받는다. 따라서 이 XML를 객체화 하거나 객체를 XML화 해야 하다.(Marshalling, UnMarshalling) 그것을 편리하게 처리해주는 유틸(JAXB,Castor,XMLBeans,JiBX,XStream...)이 많이 있다. 그중 이 예제에서는 Castor를 사용하기로 한다.(선택 이유는 Castor 이름이 마음에 들었기 때문이다. -_-;; )

Castor 사용시 주의점 
spring-ws1.5.0-m1(현재)에서 castor 1.1 이하 버전만 사용해야한다.(아니면 직접소스를 고치던가) 이유는 여기 -> spring jira : http://jira.springframework.org/browse/SWS-287

보통 Maven pom.xml에서 가장 최신것인 1.2버전을 받았다가 계속 Exception을 발생시켰는데 Castor를 선택했다가 된통 당한 꼴이 되었다.


여기서 Spring 자체게 제공하는 장점 이외에 Spring-WS가 제공하는 장점(역할)은?

클라이언트[Template] (OXM) <----- XML(WSDL) -----> (OXM)[EndPoint] 서버

Template 씨리즈를 히트시킨 Spring에서 WebServiceTemplate으로 쉽게 Marshalling을 돕는다.
서버측에서는 편리한 Endpoint 클래스(AbstractMarshallingPayloadEndpoint) 또는 @Endponit 어노테이션을 제공하고 WSDL를 자동으로 생성해주는 클래스(DynamicWsdl11Definition)등 다양한 클래스들이 있다. 언제나 처럼 Spring은 어떤 한 서비스를 구성하는데 한가지 방법만 있는것이 아니라 다양한 조합이 가능하므로 현재 프로젝트에 맞는 조합을 골라내는(뽑아내는) 것이 어려운일인듯 하다.

예제는 Eclipse에서 서버측 프로젝트와 클라이언트측 프로젝트 각각 만들어 테스트 하였다.
클라이언트측 TestCase에서 요청하여 서버측의 응답을 테스트한 결과이다. 테스트는 OXM 테스트, SpringContext에서의 테스트 마지막 서버측에 요청한 결과에 대한 테스트로 해봤다.(이유는 처음 XML을 객체화 하거나, 그 반대로 하는것이 잘 안되면 WS는 그림에 떡일수 밖에없어서 초기 단계부터 테스트하게 되었다.)

사용자 삽입 이미지
[테스트결과 화면켑쳐]

다음 글에 클라이언트 부터 구현하는 것을 자세히 기록한다.

신고
posted by Max.