제13장 웹 서비스 정책

내용 목차

13.1. 개요
13.2. 웹 서비스의 정책(WS-Policy)
13.3. 서버 정책 설정
13.3.1. WSDL로부터 웹 서비스 구성
13.3.2. Java 클래스로부터 웹 서비스 구성
13.4. 클라이언트 정책 설정

본 장에서는 웹 서비스의 정책 설정에 대한 기본적인 개념과 함께 간단한 시나리오에 대해 설명한다. 각각의 세부적인 웹 서비스 정책 설정에 관한 내용은 이후 각 장에서 자세히 설명한다.

JEUS 웹 서비스는 웹 서비스 정책(WS-Policy)을 지원한다. 웹 서비스 정책이란 어떤 웹 서비스가 가지고 있는 여러 가지 기능들(JEUS 웹 서비스에서는 WS-Addressing, WS-RM, WS-TX, WS-Security)의 정책을 노출시키기 위한 표준 명세이다.

JEUS 웹 서비스에서의 웹 서비스 정책 시나리오는 크게 서버 정책과 클라이언트 정책으로 구분할 수 있다. 서버는 WSDL을 통해 웹 서비스정책을 노출시킬 수 있고, 클라이언트는 웹 서비스의 정책에 맞는 기능을 자동으로 구성한다.

웹 서비스의 각각 정책 설정은 “제14장 웹 서비스 Addressing”, “제15장 신뢰성 메시징 기술”, “제16장 웹 서비스 트랜잭션”, “제17장 웹 서비스 보안”의 내용을 참고한다.

본 절에서는 일반적인 웹 서비스의 정책(WS-Policy)에 대해 설명한다.

일반적인 웹 서비스 정책의 특징은 다음과 같다.

  • 웹 서비스 정책 명세는 표현하기가 매우 유연하고 확장성이 있도록 설계되어 있다.

  • 웹 서비스 정책은 하나 이상의 정책 전제(policy assertion)를 통해 표현된다.

웹 서비스 정책 프레임워크(Framework)

다음은 웹 서비스 정책 프레임워크에 대한 설명이다.

서버의 웹 서비스 정책 설정 시나리오는 WSDL로부터 웹 서비스를 구성하는 시나리오와 Java 클래스로부터 웹 서비스를 구성하는 시나리오로 나눌 수 있다.

Java 클래스로부터 웹 서비스의 정책이 적용된 웹 서비스를 생성하기 위해서는 다음과 같이 wsgen 툴에 추가적으로 -policy 기능을 이용하여 wsit-endpoint.xml 파일을 생성해야 한다.

$ wsgen fromjava.server.AddNumbersImpl -d web/WEB-INF -policy service-config.xml

다음은 service-config.xml의 실제 모습이다. 자세한 설정 내용에 관한 것은 이어지는 각각의 여러 가지 웹 서비스 기능을 위한 장에서 자세히 살펴보기로 한다. 여기에서는 아래에 강조한 부분들을 중점적으로 살펴보기로 한다.


wsgen의 -policy 기능을 이용하여 웹 서비스를 위한 Java 클래스 및 wsit-endpoint.xml 파일을 얻었으면 다음과 같은 시나리오로 웹 서비스 정책이 적용된 웹 서비스를 생성한다.

  1. 서비스 구현 클래스를 작성한다.

  2. jeus-webservices-config.xsd 스키마를 통해 service-config.xml 파일을 구성한다.

  3. 구성한 서비스 구현 클래스를 wsgen 툴을 통해 웹 서비스를 생성할 때 -policy 옵션을 이용하여 wsit-endpoint.xml 파일을 생성한다.

  4. wsit-endpoint.xml 파일을 패키지될 WEB-INF 폴더 아래에 위치시킨다.

  5. 패키지된 서비스를 JEUS 서버에 deploy한다.

디렉터리 구조

Java 클래스로부터 웹 서비스의 정책이 적용된 웹 서비스를 패키징한다. 서버에 해당하는 웹 서비스를 Java 클래스로부터 구성할 때의 디렉터리는 다음과 같다.

war_root
    |- WEB-INF
          |- classes
               |- ... (SEI, JAX-WS artifacts, Handler, Validator)
          |- wsit-Endpoint.xml

클라이언트의 웹 서비스 정책 설정은 웹 서비스 보안과 같은 시나리오 외에는 보통 필요하지 않다. JEUS 웹 서비스는 기본적으로 런타임에 원격 웹 서비스의 WSDL에 포함된 웹 서비스 정책 설정을 이해하고 자동으로 그 정책에 적합한 환경을 제공해주기 때문이다. 그러나 웹 서비스 보안과 같은 특정의 시나리오에서 추가적인 설정이 필요한 경우가 존재할 수 있다.

웹 서비스 정책이 설정되어 있는 웹 서비스에 대해 추가적인 설정이 필요한 경우 클라이언트를 구성하는 시나리오는 다음과 같다.

  1. wsimport 툴을 통해 클라이언트 Java Bean 객체들을 구성한다.

  2. 원격의 WSDL 문서를 접근 가능한 저장소에 wsit-client.xml이라는 이름으로 저장한다.

    참고

    JEUS 웹 서비스는 런타임에 원격의 WSDL에 설정되어 있는 웹 서비스 정책 설정을 통해 클라이언트 환경을 제공해주기 때문에 원격의 WSDL에 설정되어 있는 웹 서비스 정책 설정에 대한 내용은 삭제해도 된다.

  3. wsit-client.xml에 클라이언트에서 필요한 추가적인 웹 서비스 정책을 설정한다.

  4. JAR 패키징할 경우 wsit-client.xml을 패키지될 classes/META-INF 디렉터리에 위치시킨다.

    WAR 패키징할 경우 wsit-client.xml 파일을 패키지될 WEB-INF 디렉터리 아래에 위치시킨다.

  5. 패키지된 서비스를 JEUS 서버에 deploy한다.

디렉터리 구조

웹 서비스 정책 설정을 적용한 JEUS 웹 서비스를 패키징한다. 일반적으로 컨테이너에서 실행되는 웹 서비스 클라이언트는 다음과 같다.

war_root
    |- WEB-INF
          |- classes
                |- ... (client classes, JAX-WS artifacts, Handler, Validator)
                |- META-INF
                     |- wsit-client.xml
    |- index.jsp

EJB 컨테이너에서 실행되는 웹 서비스 클라이언트 또는 독립 애플리케이션으로 실행되는 웹 서비스 클라이언트는 다음과 같다.

jar_root
    |- classes
         |- ... (client classes, JAX-WS artifacts, Handler, Validator)
         |- META-INF
               |- wsit-client.xml