웹 서비스(Web Service)는 네트워크 상에서 서로 다른 종류의 컴퓨터
간에 상호작용을 하기 위한
 소프트웨어 시스템이다.
웹 서비스는
서비스 지향적 분산 컴퓨팅 기술의 일종이다.
웹 서비스 프로토콜 스택은
 SOAP, WSDL, UDDI 등으로 이루어진다.

모든 메시징에
 XML이 사용되어 상호운용성이 높다.

기존의 분산 컴퓨팅 기술들인 CORBA, DCOM, RMI과 비교했을 때 주된 차이점은 다음과 같다.

  • 느슨한 연결(loose coupling)
  • 이진 부호화(바이너리 인코딩)가 아닌 XML 유니코드 부호화를 사용한다.
  • 객체 지향(object-oriented)이 아닌 메시지 지향(message-oriented)이다.
     

웹 서비스라는 명칭을 가지고 있지만 월드 와이드 웹과 혼동하여서는 안
된다.
 월드 와이드 웹은 사람과 컴퓨터 간의 상호작용을 위한 시스템인 데 반해, 웹 서비스는 컴퓨터와 컴퓨터 간의 상호작용을 위한 시스템이다.

분산 컴퓨팅을 실현할 수 있는 신기술로 등장하여 큰 기대감에
매스미디어에서 여러 번 다루어져서 인지도는 증가하였다.
하지만, 시장에서의 실효성 때문에 많이 보급되지 않았다.
아직 관련 기술의 표준화가 더디어 보급은 늦어지고 있다.
하지만 최근에
 서비스 지향 아키텍처(SOA)가 각광을 받으면서
그 기반 기술인 웹 서비스 또한 주목을 다시 받고 있다.

웹 2.0과 함께 SOAP을 이용하지 않는 REST 스타일 웹 서비스도
등장하여 많은 주목을 받고 있다. 웹 2.0의 한 분야로 웹 서비스를
이용하여 여러 웹 서비스를 조합하여 웹 애플리케이션이나 서비스를
구축하는 것을
 매시업이라고 부른다. 현재 이러한 분야는 새로운
사업으로까지 확장해 나가고 있다.
 

목차

  [숨기기

[편집]스펙

[편집]1세대

[편집]2세대

[편집]주요 스펙

[편집]보안 스펙

[편집]같이 보기


 

출처 - http://ko.wikipedia.org/wiki/%EC%9B%B9_%EC%84%9C%EB%B9%84%EC%8A%A4 






JAX-RS(Java™ API for RESTful Web Services)는 자바 플랫폼에서 경량화된 REST 방식의 웹 애플리케이션 구현을 지원하는 자바 API이다.

SOAP기반의 SOA 연동은 자바 애플리케이션을 무겁게 한다는 비판과 함께, 최근 웹 애플리케이션의 경향인 AJAX기반으로 JSON이나 RSS와 같이 간결한 프로토콜을 사용한 연동이 보편화되면서 쉽게 구현할 수 있도록 Java EE에 JAX-RS 라는 사양이 포함되고 있다.

[편집]버전 역사

JAX-RS API 역사
JAX-RS version발표자바 플랫폼중요한 변화
JAX-RS 1.02008년 9월 예정Java EE 6JSR 311

[편집]구현 플랫폼

[편집]바깥고리








Anyframe Core 3.2.0은 Apache CXF 2.1.3 버전을 이용하여 웹 서비스 기능을 제공하고 있다. 

웹 서비스란 인터넷 네트워크를 통하여 다수의 기존 어플리케이션 시스템을 표준화된 기술로서 상호 작용 시키고, 이러한 표준 기술을 이용하여 모든 비즈니스를 가능하게 한다. 

웹 서비스는 언제, 어디에서나 원하는 정보나 서비스를 제공해 주는 역할을 하며 기존의 다른 소프트웨어처럼 완벽한 정의를 지정하여 구성하는 것이 아니라 서로 주고받는 데이터 표준에 대한 정의를 규정함으로써 매우 유연하고 이질적인 운영시스템, 이질적인 프로그램 언어 간의 커뮤니케이션 차이를 극복해 주는 연결고리 역할을 수행한다. 
Web Service Architecture Working Group. W3C (Web Services Glossary, Web Services Architecture 등 자료 조회 가능)에서는 Web Services를 다음과 같이 정의하고 있다. 
"A Web service is a software system designed to support interoperable machine-to-machine interaction 
over a network. It has an interface described in a machine-processable format (specifically WSDL). 
Other systems interact with the Web service in a manner prescribed by its description 
using SOAP-messages, typically conveyed using HTTP with an XML serialization in conjunction 
with other Web-related standards."
위의 영문 정의를 해석해보면, 다음과 같다. 
네트워크를 통해 상호 운용성있는 기계 대 기계 상호작용을 지원하기 위해 설계된 소프트웨어 시스템으로, WSDL이라는 형태로 정의된 인터페이스를 가지며, SOAP 메시지를 사용하여 타 시스템들은 웹 서비스와 상호 작용할 수 있다. 웹 관련 표준들과 협력하며 전형적으로 HTTP를 사용한 XML 직렬화를 통해 전송한다.

Web Services 개념

Architecture

기본적으로 웹 서비스(Web Services)는 3가지 역할(Service Provider, Service Broker, Service Consumer)로 구성된 아키텍처 모델에 따라 구현된 기술이다.

  • 웹 서비스의 3가지 역할
  • Role
    설명
    Service Provider특정 서비스 스펙을 구현한 서비스를 제공한다.
    Service Broker (Service Registry)서비스 등록 및 검색, 저장, 관리를 통해 Service Provider가 제공하는 서비스를 Service Consumer에게 연결한다.
    Service Consumer (Service Requester)Service Broker를 통해 특정 서비스를 찾고, Service Provider에게 해당 서비스를 요청하고 사용한다.

  • 웹 서비스 시나리오
  • 순서
    Role
    설명
    1
    서비스 제공자(Service Provider)자신의 비즈니스 정보 및 제공할 서비스 정보, 그리고 이를 이용할 수 있는 방법 등에 대한 정보를 WSDL 파일로 작성한다.
    2
    서비스 제공자(Service Provider)자신의 서비스 WSDL을 UDDI 레지스트리에 등록한다. 이때 등록되는 서비스는 UUID에 기반한 고유 ID를 부여받게 된다.
    3
    서비스 요청자(Service Consumer)UDDI 레지스트리에서 분류 및 식별 체계와 같은 여러 검색 조건을 통해 필요한 서비스를 검색하여 찾는다. 해당 서비스가 찾아지면, 그 서비스에 대한 WSDL 파일을 받게 된다.
    4
    서비스 요청자(Service Consumer)WSDL 정보를 이용해 Service Provider와 연결하여 서비스를 제공받게 된다. 이때 실행 결과는 SOAP을 이용한 XML 문서 형태로 받는다.
  • 웹 서비스의 3가지 기본 기술요소
  • 기술요소
    설명
    WSDL
    웹 서비스를 표현하고 기술하는 언어 (서비스 표현)
    SOAP
    웹 서비스에서 사용되는 보편적이며 확장성 있는 메시지 프로토콜 (데이터 통신 프로토콜)
    UDDI
    필요한 서비스를 찾을 수 있는 웹 서비스 레지스트리 (서비스 등록, 검색)

SOAP(Simple Object Access Protocol)

SOAP(Simple Object Access Protocol)은 HTTP, HTTPS, SMTP등을 사용하여 XML 기반의 SOAP 메시지를 컴퓨터 네트워크 상에서 교환하는 형태의 프로토콜로써 웹 서비스의 기본적인 메시지 전송 수단 이다. XML-RPC와 WDDX에서 envelope/header/body로 이루어진 구조, 전송(transport), 상호 중립성(interaction neutrality)의 개념을 도입하였다.
  • SOAP 메시지 구조
  • SOAP 메시지는 루트 요소로 Envelope를 가지며, SOAP Header와 Body를 하위 요소로 가지고 있다. SOAP의 메시지 구조는 XML을 근간으로 Header와 Body를 조합하는 디자인 패턴으로 설계되었고, Body(필수사항)에는 전송될 메시지의 내용을 기술한다. (Header는 선택사항) 
  • SOAP 특징
  • 장점
    설명
    1
    SOAP은 기본적으로 HTTP 기반 위에서 동작하기 때문에, HTTP와 같이 프록시와 방화벽에 구애받지 않고 쉽게 통신 가능하다.
    2
    SOAP은 표준 전송 프로토콜인 HTTP 이외의 다른 전송 프로토콜들을 사용할 수 있다.
    3
    플랫폼 및 프로그래밍 언어에 독립적이다.
    4
    간단하고 확장 가능하며, (멀티파트 MIME 구조를 사용하여) 첨부를 통합하는 SOAP XML 메시지를 지원한다.

    단점
    설명
    1
    XML 포맷은 태그 형태로 구성되기 때문에 CORBA와 같은 미들웨어 기술과 비교해서 상대적으로 느리다. 
    (최근 네트워크 속도의 비약적인 발전과 성능 최적화 기술의 발전으로 대부분 해결됨)

WSDL(Web Services Description Language)

WSDL(Web Services Description Language)이란, 웹 서비스로 제공되는 서비스에 대한 정보를 기술하기 위한 XML 기반의 마크업 언어이다. 
즉, 원하는 서비스가 어디(Where)에 존재하며, 웹서비스로 무엇(What)을 할 수 있고, 또 이를 실행하기 위해서는 어떻게(How) 해야 하는가를 XML 형식으로 기술하여 제공하는 웹 서비스 기술 언어이다.
  • WSDL 문서 구조
  • <definitions>를 루트로 하여 추상적 정의(types/message/portType)와 구체적 정의(binding/service)로 나뉜다. 추상적 정의와 구체적 정의를 분리하여 기술함으로써, 서로 다른 서비스 구현시 서비스의 추상적 정의를 재사용할 수 있다.

  • WSDL 문서 구조 상세
  • WSDL의 주요 기술 내용에는 웹 서비스의 이름과 URI 정보, SOAP 메시지의 인코딩 방법, SOAP 메시지 전송을 위한 프로토콜 정보, 웹 서비스를 이용하는데 필요한 인터페이스 정보가 있다. WSDL의 구성 요소를 상세히 살펴보면 아래와 같다.


    WSDL 상세 구성 요소에 대한 설명은 다음과 같다.
    요소
    설명
    <service>Endpoint(실제 웹 서비스로 구현된 어플리케이션)의 물리적 위치를 정의하고 각 바인딩에 대한 포트 주소를 기술한다.
    <port>binding 정보와 address location을 정의한다.(WSDL 2.0에서는 <endpoint>로 변경됨)
    <binding>portType과 네트워크 프로토콜 매핑 정보를 정의한다. 즉, 어떤 통신 프로토콜을 통해서 통신을 할 것인지를 정의한다.
    <portType>인터페이스의 메소드들을 정의한다. Interface(WSDL 2.0에서 <interface>로 변경됨)
    <operation>서비스의 메소드에서 사용되는 요청(Request)/ 응답(Response) 메시지 정의
    <message>서비스가 사용하는 메시지를 정의한다. 메소드의 인자와 리턴 값을 선언한다. (WSDL 2.0에서는 <types>를 통해 XML 스키마 타입을 사용하여 기술)
    <types>문서에서 사용되고 있는 데이터 타입을 정의한다.

기술 표준

웹 서비스는 SOAP, WSDL, UDDI를 중심으로 한 기본 기술 표준을 제공하며 서비스의 품질을 높이기 위해 보안, 트랜잭션 처리, 신뢰성 있는 메시지 처리 등에 대한 다양한 확장 표준을 제공한다.
  • Security
  • 표준
    설명
    WS-Security무결성(Integrity)과 기밀성(Confidentiality), 인증(Authentication) 등을 강화하기 위한 SOAP 메시지 확장 메커니즘 규정. 크게는 WS-Policy, WS-Trust, WS-SecureConversation, WS-Federation, WS-Authorization을 포함한다.
    WS-Trust상호간에 웹 서비스가 안전하게 작동할 수 있도록 하기 위한 신용 관계의 유지 및 해지를 설정하는 신뢰 모델에 대한 표준이다.
    WS-SecureConversation메시지 교환시 보안이 어떤 방식으로 관리되는지를 명시한 security context에 대한 관리 표준이다.
  • Transaction
  • 표준
    설명
    WS-Coordination분산되어 있는 다양한 웹 서비스들이 트랜잭션에 참여할 수 있도록 액티비티를 생성 및 관리, 조정, 완료하는 메커니즘에 대한 표준 (Coordination Framework)이다.
    WS-TransactionAtomic 또는 Business 트랜잭션 프로토콜에 대한 표준 (Coordination Protocols)이다.
  • Reliable Messaging
  • 표준
    설명
    WS-ReliableMessaging목적지까지 메시지가 확실하게 도착하는 메시징 신뢰도를 보장하기 위해, 분산된 웹 서비스들 간에 주고 받는 ACK (acknowledge) 메시지 등을 정의하는 표준이다.
    WS-Addressing웹 서비스 간 메시지를 전달하는 메커니즘을 제공하는 표준이다.

구현 기술

Java로 Web Services를 작성하는 방법을 제공하는 자바 API로는 JAX-RPC와 JAX-WS가 있으며, 이 외에 여러 가지 구현 기술들이 요구된다.

JAX-RPC vs. JAX-WS

JAX-WS 2.0이 JAX-RPC 1.1의 차후 버전으로 Web Services 구현 시 사용되는 표준 자바 API이다. 
* JAX-WS : Java API for XML-Based Web Services 
* JAX-RPC : Java API for XML-Based RPC(Remote Procedure call) 
  • JAX-RPC와 JAX-WS 비교표
  • JAX-RPC 1.1의 다음 버전인 JAX-RPC 2.0이 나오면서, RPC라는 용어 대신 메시지 지향 웹 서비스인 WS로 대체되어 JAX-WS 2.0으로 불리게 되었다.
    JAX-RPC 1.1
    JAX-WS 2.0
    Java 환경JDK 1.4/ J2EE 1.4 환경에서 사용되는 Web Services APIJava EE 5/Java SE 6 환경(탑재)에서 사용되는 Web Services API
    SOAPSOAP 1.1SOAP 1.1, SOAP 1.2
    XML/HTTPHTTP 바인딩 지원 안함 (SOAP 바인딩만 지원)HTTP 바인딩 지원 (SOAP없이 HTTP를 통해 XML 전송)
    WS-I Basic ProfileWS-I Basic Profile 1.0WS-I Basic Profile 1.1
    데이터 매핑 모델고유의 데이터 매핑 모델이 있음 (스키마 유형의 90% 커버) 커버되지 않는 것들은 javax.xml.soap.SOAPElement로 매핑JAXB (모든 XML 스키마를 100% 매핑함)
    인터페이스 매핑 모델지원 안함Java 5.0 기능 사용 및 비동기식 기능 도입
    동적 프로그래밍 모델지원 안함메시지 지향 및 동적 비동기식 기능 도입
    MTOM지원 안함JAXB를 통한 새로운 Attachment 스펙인 MTOM에 대한 지원을 추가
    핸들러 모델SAAJ 1.2에 기반SAAJ 1.3에 기반
  • JAX-RPC 1.1을 사용해야 하는 경우
  • Case
    설명
    1JDK 1.4를 계속 사용해야 하는 경우
    2SOAP 인코딩 메시지를 보내거나 RPC/encoded 스타일의 WSDL을 보내야 하는 경우
  • JAX-WS 2.0을 사용하는 경우
  • Layered Programming Model을 제공한다. 상위계층은 Annotation을 활용한 쉬운 개발이 가능하게 하며, 하위계층의 경우 API 기반의 섬세한 조정이 가능하다.
    Case
    설명
    1새로운 메시지 지향 API를 사용해야 할 경우
    2MTOM을 사용하여 첨부 데이터를 보내야 하는 경우
    3JAXB를 통해 XML 스키마를 더욱 잘 지원하기 위한 경우
    4웹 서비스 클라이언트에 비동기식 프로그래밍 모델을 사용하고 싶을 경우
    5SOAP 1.2 메시지를 처리할 수 있는 클라이언트와 서비스가 있어야 하는 경우
    6웹 서비스에서 SOAP을 배제하고 XML/HTTP 바인딩만 사용하고 싶을 경우
  • JAX-RPC 단점
  • 구버전인 JAX-RPC에는 다음과 같이 몇가지 단점이 존재한다.
    단점
    설명
    1제한된 XML Schema를 지원한다.
    2Java와 WSDL간의 매핑 지원이 부족하다.
    3어플리케이션 이식성이 낮다.
    4런타임(Runtime) 크기가 비대하다.
    5개발 방법이 매우 복잡하다.

XML Schema

XML 문서의 구조와 컨텐츠를 정의하는 파일을 가리키는 일반적인 용어로 DTD와 마찬가지로 문서의 구조를 정의하며, 문법, 어휘, 구조, 데이터 타입 등을 규정하는 모든 규칙들을 제공한다. 
* XML Schema Definition (XSD) : XML Schema를 작성하기 위한 XML Schema language
  • XML Schema vs. DTD
  • DTD의 문제점을 해결하기 위한 목적으로 XML Schema가 나왔다. XML Schema는 DTD보다 더 표현력이 풍부하고, 정확한 자료 구조를 제공하는 새로운 구조 정의 언어로, Web Services는 XML Schema를 사용한다.
    XML Schema
    DTD
    XML 문법으로 작성XML 문법 아님 (EBNF 문법 사용)
    namespace 지원namespace 지원 안함
    다양한 데이터 타입 지원, 데이터 타입 확장 가능제한적인 데이터 타입
    상속과 같은 객체 지향 개념 지원객체 지향 개념 없음
    개방적 컨텐츠 모델폐쇄적 컨텐츠 모델
  • XML Schema element 정의
  • <element  name="element 명"  type="데이터형" ref=""  form=""  
        minOccurs="" maxOccurs=""  default=""  fixed="" >
    각 속성 값에 대한 설명은 다음과 같다.
    속성
    설명
    nameelement의 명칭
    typeelement의 데이터 타입
    ref전역 element 선언을 참조하기 위해 사용
    minOccurselement의 최소 반복 횟수, default 값은 1
    maxOccurselement의 최대 반복 횟수, default 값은 1
    defaultelement의 값이 정의되지 않았을 때 할당되는 기본값
    fixedelement에 들어갈 고정값
  • XML Schema attribute 정의
  • <attribute name="" type="" ref="" form="" use="" default="" fixed="">
    각 속성 값에 대한 설명은 다음과 같다.
    속성
    설명
    nameattribute의 명칭
    typeattribute의 데이터 타입
    ref전역 attribute 선언을 참조하기 위해 사용
    form한정된 이름인지의 여부 (qualified/unqualified)
    use사용 조건 (optional/prohibited/required)
    defaultattribute의 값이 정의되지 않았을 때 할당되는 기본값
    fixedattribute에 들어갈 고정값

기타 구현 기술

  • JAXB(Java Architecture for XML Binding)
  • XML 스키마를 자바 클래스로 바인딩하기 위한 자바 API로 크게 2가지 기능을 제공한다. 그 기능은 바로 자바 객체를 XML로 마샬링(marshalling)하는 기능과 반대로 XML에서 자바 객체로 언마샬링(unmarshalling)하는 기능이다. 
    더욱 자세한 내용은 여기 를 참고하도록 한다.
  • MTOM(Message Transmission Optimization Mechanism)
  • SOAP 메시지와 함께 큰 바이너리 첨부 파일을 원시 바이트로 전송하여 메시지 크기를 줄이는 메커니즘으로 바이너리 데이터를 포함한 XML에 대한 메시지 전송을 최적화시킨다. 더욱 자세한 내용은 여기 를 참고하도록 한다.
  • SAAJ(SOAP with Attachments API for Java)
  • SOAP 메시지를 생성하고 파일 첨부하고 전송하는 방법을 제공하는 자바 API이다. 더욱 자세한 내용은 여기 를 참고하도록 한다.

Web Services Framework

많이 사용되는 웹 서비스 오픈 소스 프레임워크로는 Apache CXF, Apache Axis/Axis2, Spring Web Services 등이 존재하며 여러 프레임워크 중 사용하고자 하는 목적에 적합한 웹 서비스 프레임워크를 선정한다. 
Anyframe에서는 Apache CXF를 선정하였다.

Web Services Framework 종류

Web Service 구현 스타일은 크게 Contract-Last와 Contract-First가 있다. Contract-Last 스타일은 Java 소스 코드를 먼저 작성한 후에 WSDL을 자동생성하여 구현하는 방식(Code-First라고 불리기도 함)이고, Contract-First 스타일은 WSDL 파일을 먼저 작성한 후 Java 소스 코드를 작성하는 방식이다. 

Web Services Open Source Framework에는 여러 가지가 있는데 이 중 현재 가장 많이 쓰이고 있는 4가지에 대해서 소개한다.
  • Apache CXF
  • Contract-First 스타일과 Contract-Last 스타일 모두를 지원한다. 자세한 내용은 http://cxf.apache.org/ 를 참조한다.
  • Apache Axis
  • Axis2의 구버전으로 웹 서비스 개발 방식이 복잡하다. 자세한 내용은 http://ws.apache.org/axis/ 를 참조한다.
  • Apache Axis2
  • Apache Axis의 업그레이드 버전으로 구조 등이 새롭게 변경되었다. 기능적인 면에서 Apache CXF와 유사하다. 자세한 내용은 http://ws.apache.org/axis2/ 를 참조한다.
  • Spring Web Services
  • Contract-First 스타일의 웹 서비스 개발 방식만 지원한다. 자세한 내용은 http://static.springframework.org/spring-ws/site/ 를 참조한다.

Apache CXF 특징

여러가지 Web Services Framework 중 Apache CXF를 선정하게 된 이유는 다음과 같은 특징 때문이다.
특징
설명
JAX-WS 지원CXF에서는 JAX-WS API를 구현하고 있어서 웹 서비스 구현을 쉽게 하고 있다.
Spring IntegrationCXF는 Spring 2.X 이상을 지원하며 endpoint 설정이나 client injection 등 Spring과의 통합을 용이하게 한다.
Aegis DatabindingCXF는 JAXB, Aegis Databinding을 모두 지원한다. JAXB의 경우와 같이 Annotation 방식으로 사용할 필요가 없으며, List/Map/Date 등의 다양한 데이터 타입 사용이 매우 쉽다.
RESTful servicesAnnotation 설정 방식으로 RESTful 서비스 구현을 용이하게 한다.
WS-* SupportCXF는 다양한 웹 서비스 스펙(WS-Addressing, WS-Policy, WS-ReliableMessaging, WS-Security)을 지원한다.
Apache Licensed아파치 라이센스 사용으로 활용에 자유롭다.
Celtix와 X-Fire 프로젝트의 합작품기능 보강 및 사용 편의성 면에서 새롭게 재구성된 부분이 많이 존재한다.
웹 서비스 표준 지원SOAP, the Basic Profile, WSDL, WS-Addressing, WS-Policy, WS-ReliableMessaging, WS-Security
Frontend 모델 제공JAX-WS Frontend와 Simple Frontend를 제공한다.
사용 편의성간단한 API 사용으로 서비스 구현 가능, Tool(ANT Task 등)을 제공한다.
바이너리와 기존 프로토콜 지원XML/비-XML 타입 바인딩(JSON, CORBA)을 제공, 여러 전송 프로토콜을 지원할 수 있는 조립식 아키텍처를 제공한다.
비동기 방식 호출 가능비동기 방식의 호출이 가능(Asynchronous Invocation Model 제공)하다.
JDK 1.5 이상 지원Annotation 기능 등 여러 가지 이유 때문에 JDK 1.5 이상만 지원한다.

Tools

Apache CXF에서 여러가지 Tool을 제공함으로써 웹 서비스 구현 시 개발 편의성을 높여주고 있다. 아래에 언급된 Tool 이외에 Eclipse Plugin과 Maven Plugin 형태의 Tool도 제공되고 있다. Apache CXF를 다운로드 페이지 에서 Binary distribution을 내려 받고 압축을 풀면 루트 폴더 하위의 bin 폴더 내에 Tool이 존재한다. 
자세한 사항은 이곳 을 참고하도록 한다.
tool
설명
Ant Taskswsdl2java, java2ws를 위한 ant task를 제공한다.
Java to WSSEI 클래스와 관련 타입 클래스들로부터 WSDL document, wrapper bean 클래스, server/client side 소스 코드들을 생성한다.(CXF 2.1)
Java to WSDLSEI 클래스와 관련 타입 클래스들로부터 WSDL document를 생성한다.(CXF 2.0.x)
Maven Integration and Plugin관련 라이브러리를 배포해주는 Maven Repository들과 함께 빌드 툴로써 Maven을 사용할 수 있도록 Maven Plugin을 제공한다.
XSD to WSDLXSD(Schema 파일)를 통해서 WSDL document를 생성한다.
WSDL to JavaWSDL document로부터 서비스 구현에 필요한 annotation으로 작성된 Java 소스 코드와 어플리케이션을 빌드할 수 있는 ANT 기반 XML 파일을 생성한다.
WSDL to ServiceWSDL document로부터 HTTP 혹은 JMS 서비스 정의를 갖는 새로운 WSDL document를 생성한다.
WSDL to SOAPWSDL document로부터 SOAP binding 정보를 갖는 새로운 WSDL document를 생성한다.
WSDL to XMLWSDL document로부터 XML binding 정보를 갖는 새로운 WSDL document를 생성한다.
WSDLValidatorWSDL document나 WSDL URL이 well-formed document이고 Schema에 맞게 작성된 것인지 확인해주는 일을 한다.

Resources

  • 다운로드
  • 샘플 테스트 코드를 포함하고 있는 anyframe-remotingtest-src.zip 파일을 다운받은 후, 테스트 환경 설정 을 참조하여 위에서 제시한 예제 코드를 실행해 볼 수 있다. anyframe-remotingtest-src 프로젝트 내에서는 모든 테스트 케이스들이 하나의 프로젝트 내에 포함되어 있다. Web Services 관련 테스트 케이스는 src/test/java 소스 폴더의 anyframe.core.remoting.webservices 패키지 하위에 위치하고 있다. 각각의 테스트 케이스 클래스를 JUnit Test Framework을 이용하여 수행시키도록 한다.
    Name
    Download
    anyframe-remotingtest-src.zip
    Download

  • Test Case 구성
    • Web Services에 대한 Test Case는 대부분 RemotingTestCase 를 상속받아 구성하였다.
    • Test Case 내에서 서버 구동과 클라이언트 호출 부분이 함께 작성 되어 있다. Test Case 실행 시 먼저 setUp() 메소드가 호출되어 이 메소드 내에서 서버를 구동시킨다. 이후 testXXX() 메소드 내에서 클라이언트를 생성하여 서버 사이드의 서비스를 호출하여 테스트 케이스를 실행시킨다. 테스트 메소드 수행이 완료되면 상위 클래스인 RemotingTestCase의 onTearDown() 메소드를 통해 서버 실행을 중지시키는 역할을 수행한다.
    • 서버는 테스트 케이스별로 서로 다른 서버를 사용하게 된다. JAX-WS Frontend를 사용 시에는 JaxWsServer 를 이용하여 서버를 구동시키며, Simple Frontend를 사용 시에는SimpleServer 를 이용하여 서버를 구동시킨다. 그외 JAX-RS를 이용하여 RESTful Web Services를 구현 시에는 JaxRsServer 를 사용하고 Spring과 연계하여 서버 및 클라이언트를 구현하는 테스트 케이스에서는 JettyServer 를 이용하고 있다.
    • 특히 Spring 클라이언트를 통해 테스트하는 경우 RemotingTestCase 가 아닌 RemotingSpringTestCase 를 상속받아 테스트 케이스를 작성하였다.
  • Test Case 실행
    • 샘플 테스트 코드를 포함하고 있는 anyframe-remotingtest-src.zip 파일을 다운받아서 이클립스 프로젝트 형태로 테스트 케이스를 실행하고자 한다면, 테스트 환경 설정 을 참조하여 실행해 볼 수 있다.
    • 만약 Subversion에서 anyframe-remotingtest-src 프로젝트의 소스코드를 내려받아서 Maven을 이용하여 빌드를 수행하고자 한다면, Maven 2.0.9 이상의 버전을 설치하여 수행하도록 한다. Maven 2.0.4 이하의 버전을 사용하는 경우 테스트케이스 수행 시 에러가 발생할 수 있다.
  • 참고자료









웹서비스 참조 문서



'Web > Common' 카테고리의 다른 글

RIA(Rich Internet Applications)  (0) 2012.01.17
SOA(Service Oriented Architecture : 서비스 지향 아키텍처)  (0) 2012.01.16
Sun ONE  (0) 2012.01.13
HTTP1.0과 1.1 차이점  (0) 2011.12.29
HTTP  (0) 2011.12.29
Posted by linuxism
,