제1장 웹 서비스

내용 목차

1.1. 기본 개념
1.2. 웹 서비스 표준
1.2.1. SOAP 표준
1.2.2. WSDL 표준
1.2.3. UDDI 표준
1.2.4. JAX-WS, JAXB, StAX 표준
1.2.5. JAX-RPC 표준
1.2.6. SAAJ 표준
1.3. SOAP 메시지 교환과 SOAP 메시지 인코딩

본 장에서는 웹 서비스에 대한 기본 개념과 표준에 대해서 설명한다.

웹 서비스는 애플리케이션들이 플랫폼과 프로그래밍 언어와는 독립된 방식으로 서로 통신할 수 있도록 하는 표준화된 기술이며, 표준 XML 메시징을 통해 네트워크로 접근될 수 있는 오퍼레이션들을 기술하는 소프트웨어 인터페이스이다. 또한 웹 서비스는 인터넷에만 연결되어 있다면 서비스에 대한 권한을 가지고 있는 사용자 누구에게라도 비즈니스를 공개하고 사용될 수 있도록 메시징 프로토콜, 프로그래밍 표준, 서비스 발견을 위한 편의 환경 등을 정의하고 있다.

웹 서비스는 인터넷의 URI로 접근 가능한 응용 프로그램이며, 웹 서비스의 인터페이스와 바인딩은 XML 문서로 정의되고 기술된다. 하나의 웹 서비스는 인터넷에 공개되어진 또 다른 웹 서비스와 상호 연동이 가능할 뿐 아니라 기존의 Back-end 응용 프로그램들과도 연동이 가능하다.

지금까지의 응용 프로그램 아키텍처는 2가지의 범주에 속해 있었다. 하나는 메인프레임을 기반으로 작동하는 단일화된 시스템이며, 다른 하나는 데스크탑에서 작동하는 클라이언트-서버(client-server) 기반의 시스템이었다. 이들 시스템은 물론 모두 잘 작동하지만 이러한 아키텍처 위에 동작하는 프로그램들은 그 시스템에서만 작동할 수 있게 맞추어진 프로그램들이라는 한계점을 가지고 있다. 이러한 아키텍처 내에서의 프로그램들은 아주 폐쇄적이어서 접근이 용이하지 않으므로 웹에 존재하는 무수히 많은 사용자들에게는 무용지물이다.

그래서 소프트웨어 산업은 서비스지향 아키텍처(SOA : Service-Oriented Architecture)라는 방향으로 진화하게 되었고, 이 기반위에서의 응용 프로그램들은 웹에서 동적으로 상호 작용을 할 수 있게 되었다. 응용 프로그램은 큰 규모로 이루어져 있던 소프트웨어 시스템을 더 작게 모듈화된 여러 서브 시스템으로 구성하게 만들었고, 이렇게 작게 모듈화된 서브 소프트웨어 시스템들은 각각 다양한 기술들로 구현할 수 있게 되었다. 또한 하나의 컴퓨터에 존재하지 않아도 되며, 재사용할 수 있게 되었다. XML과 HTTP와 같은 표준 웹 프로토콜을 사용하여 인터넷의 어떠한 사용자라도 쉽게 접근할 수 있게 되었다.

이러한 서비스 지향 기술은 이미 수년전부터 RMI, COM 그리고 CORBA와 같은 여러 다양한 형태의 기술들로 구현되어 왔으므로 최근에 발생한 완전한 새로운 형태의 것이라고 보기는 힘들다. 하지만 이렇게 언급한 기술들은 벤더나 구현된 기술에 종속적이라는 단점이 있다. 하지만 웹 서비스는 이러한 단점들을 극복한다.

다음은 웹 서비스의 주요 특징에 대한 설명이다.

웹 서비스는 다음과 같은 장점을 가지고 있다.

J2EE(Java 2 Platform, Enterprise Edition) 스펙은 버전 1.4에 이르러 웹 서비스의 중요성이 반영되어 트랜잭션 지원이나 DB 연결, 생성 주기(Lifecycle) 관리와 같은 서비스들이 응용 프로그램의 소스 코드 수정없이 지원받을 수 있게 되었다.

Java EE(Java Enterprise Edition, J2EE에서 명칭 변경) 버전 5에서 새로운 스펙들이 추가되었으며, 이와 함께 기존 스펙의 기능들을 정리 및 향상하여 보다 성숙된 웹 서비스를 제공할 수 있게 되었다.

Jakarta EE 8은 Java EE 7을 그대로 이어받았으며 결과적으로 동일한 표준을 따르고 있다.

현재 JEUS 웹 서비스는 다음과 같은 표준을 따르고 있다.

본 절에서는 이 중 몇 가지 주요 표준들에 대해 설명한다.

SOAP(Simple Object Access Protocol)은 분산 환경에서의 정보 교환을 목적으로 하는 경량의 XML 기반 프로토콜이다.

SOAP은 다음과 같은 정보 교환 방식을 지원한다.

SOAP 프로토콜은 다음과 같은 요소들로 구성된다.

  • SOAP 메시지를 서술하는 Envelope

    Envelope는 누가 어떻게 메시지를 처리해야 하는지에 대한 정보를 가지고 있으며, 메시지의 바디를 감싸고 있다.

  • 응용 프로그램에 사용되는 데이터 타입의 객체를 설명하는 인코딩 법칙(Encoding rule)

  • 원격 프러시저 호출과 응답을 나타내는 데 필요한 준수 사항들

SOAP은 다음과 같은 특성을 갖는다.

  • 프로토콜에 독립적이다.

  • 구현 언어에 독립적이다.

  • 플랫폼과 운영 시스템(Operating System)에 독립적이다.

  • SOAP XML 메시지에 MIME 타입과 같은 타입으로 추가적인 메시지를 붙여서 보낼 수 있다.

SOAP은 RPC 방식과 문서 방식의 정보 교환을 지원한다. SOAP 메시지는 RPC 방식이든 문서 방식이든 SOAP 메시지의 element에 정의되어 있는 EncodingStyle 속성에 의해 정의되는 인코딩 방식을 사용한다.

다음은 이러한 SOAP 메시지의 특성에 대한 설명이다.