1. XML Web Services 란?

▪ XML 기반의 분산 컴포넌트 모델

동작원리

▪ 유용한 정보를 레지스트리에 Publish 하는 것은 S/W 회사와 표준 기구들이 산업 또는 비즈니스와 관련된 스팩을 정의할 때 시작한다.(이들은 기술모델 또는 tModel로 알려져 있다.)

▪ 기업들은 그들이 제공하는 비즈니스와 서비스의 디스크립션을 등록한다.

▪ UDDI 레지스트리는 3단계에서처럼 UUID(Unique Universal Identifiler) 키로 알려진 프로그램식의 독특한 식별자를 할당함으로써 이러한 모든 Entity를 계속적으로 트래킹한다.

▪ e-Marketplaces, 검색엔진, 비즈니스 Application같은 기타 클라이언트들은 관심있는 서비스를 발견하기 위해 UDDI 레지스트리를 사용한다.

▪ 차례로 다른 비즈니스들은 이러한 서비스들을 호출하면서 간단하고 동적인 통합을 이룩한다.

2. XML Web Services 의 장점

▪ HTTP 프로토콜 이용

▪ 플랫폼과 언어 독립적 (약결합 구조

▪ 동기, 비동기 메시징

▪ 기존 시스템에 적용 가능

SOAP(Simple Object Access Protocol)

▪ 분산 환경에서 어플리케이션 간에 정보를 교환하기 위한 XML 기반의 메시지 프로토콜.

▪ 서비스를 이요하는 client와 서비스를 제공하는 server의 쌍방이 SOAP의 생성/해석 엔진을 장착함으로써 서로 다른 환경에서 오브젝트의 호출을 가능하게 되었다.

▪ 주어진기능을요청하기위해서버상의메쏘드를시작시키는XML 프로토콜

▪ Service Requester(Client)는 요청메시지를보냄

▪ Service Provider(Server)는 응답메시지를보냄

UDDI(Universal Description, Discovery & Integration)

▪ UDDI 서버는사용가능한 서비스와 Service Provider의 디렉토리로서의 역할

WSDL(Web Services Description Language)

▪ 서비스인터페이스를설명하는XML Vocabulary

AXIS(SOAP 엔진)

▪ SOAP 엔진의 하나. 서버내부에는 세 개의 Entity가 있다.(서비스 매니저, 전개된 서비스 리스트, XML 트랜슬레이터)

▪ 역할 :   메소드 호출을 SOAP 패킷으로 직렬화

SOAP 패킷을 자바 호출로 역직렬화

XML문서를 SOAP 패킷으로 포장

XML문서를 SOAP 패킷에서 꺼냄

SOAP 요청을 보내고 응답을 다룸

SOAP 요청을 받아들이고 응답을 보냄

작성 Flow

▪ 서버 Interface 와 구현 Class 를 작성한다.

▪ 컴파일한다.

▪ WSDL 파일을 생성한다.

(WSDL 파일을 직접 작성한다면 여기까지의 과정은 생략할 수 있다.)

▪ WSDL 파일로부터 deploy.wsdd 파일을 생성한다.

▪ AdminClient를 통해 deploy.wsdd 파일을 참조하여 해당 서버에 웹 서비스를 deploy 하고 server-config.wsdd 파일을 생성, 수정한다.

▪ 생성된 프록시 코드(Client Stub Java Source)를 참조해 서비스 클라이언트를 구현 후 컴파일한다.

▪ 서비스를 호출한다.

1-1. EndPoint 먼저? WSDL 먼저?

① EndPoint 구현부터

▪ 프로그램을 먼저 짠후, 그로부터 WSDL 을 만드는 방법

▪ Bottom-up 이라고 한다.

▪ 장점 : 쉽다

▪ 단점 : 상호 운용성이 안 좋은 편이고, EndPoint 구현체를 만들 때 쓰는 언어에 의존적이다.

② WSDL 구현부터

▪ Top-up 방식

▪ 장점 : 상호 운용성이 좋다

▪ 단점 : WSDL 의 학습이 필요하다.

1-2. RPC 방식? Document 방식?

① RPC (Remote Procedure Call)

▪ 특징

① tightly-coupled 요청/응답 기반 동기식 통신 지원

: 클라이언트 요청 후 서버의 응답 받을 때까지 다른 오퍼레이션 수행X

② SOAP 엔진이 모두 처리(인코딩, 디코딩, 데이터 타입)하고,

단순히 파라미터를 통해 원격 객체를 호출만 하면 된다.

③ SOAP 통신을 위한 전송 프로토콜로 HTTP 를 사용할 경우, RPC 호출모델이 적합하다.

이 모델의 전형적인 SOAP 인코딩 타입은 'RPC/Encoded'이다.

④ 직렬화된 데이터 형식이 XML에 의해 표현되는 것, SOAP 인코딩 규칙이 적용된다는

것을 제외하면 기존의 CORBA or RMI 기반 통신과 유사하다

▪ 원격지의 함수를 호출하기 위한 오래된 기술.

▪ Java의 RMI, EJB, CORBA, DCOM/COM+, .NET

② Document 방식

▪ 특징

① 문서 중심의 비동기식 통신 지원(loosely coupled)

: 클라이언트가 SOAP 요청 메시지에 대한 리턴값을 요구하지 않을 수도 있다.

② 웹 서비스 개발자가 모든 것을 핸들링. SOAP Body의 마샬링/언마샬링 기능 직접

구현해야 한다.

③ 일련의 파라미터를 보내는 대신 전체 문서를 보낸다.

서비스 제공자는 문서를 전달받아 처리한 후, 메시지의 반환 유무 결정.

④ SOAP 요청/응답 메시지 내의 SOAP Body 의 내용을 사전에 정의된 하나의 XML

문서로 구성.

⑤ Document/Literal 방식은 서비스 메서드의 입력 파라미터를 하나만 허용한다.

So, 입력 파라미터가 2개 이상일 경우 파라미터를 모두 포함하는 형식(ex. 자바빈)

으로 만들어 1개의 파라미터로 바꿔야 한다.

▪ Web Services 를 통해 데이터를 주고 받을 때 document 로 주고 받고, 해석을 알아서 한다.

▪ 상호 운용성 측면에서 좋다.

- JWS를 사용하는 것에 대한 반론

웹서비스의 소스 코드는 모든사람이 사용할 수 있다

전체 소스는 JWS파일 내에 있거나 JAR 파일이 수동으로 lib 폴더에 복사되어야 한다

환경 설정할 사항의 양이 제한되어야 한다

2-1. JAX_RPC (Java API for XML-Based RPC)

▪ RPC 형태의 동기적인 SOAP 모델을 구현하기 위한 API

▪ Java 를 이용해 서비스를 제공하는 서버와 서비스를 이용하는 클라이언트를 구현하기 위한 API 제공

스펙에서는 SOAP메시지를 전송하는 데 특정프로토콜을 사용하라고 정하지 않았기 때문에 둘다 아니다. 참고로 HTTP는 동기적이다.