IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
메인 컨텐츠로 가기

한국 developerWorks  >  웹서비스  >

자바 웹 서비스

Java Web Services Developer Pack 사용하기

developerWorks
문서 옵션

JavaScript가 필요한 문서 옵션은 디스플레이되지 않습니다.


난이도 : 초급

James McCarthy, President, Symmetry Solutions, Inc.

2002 년 11 월 01 일
2004 년 4 월 14 일 수정

웹 서비스를 시작하는 자바 개발자라면 Java Web Services Developers Pack (WSDP)을 고려해봐야 한다. 이 글을 통해 패키지의 어떤 툴이 자신에게 맞는지 어떤 컴포넌트가 테스트에 적합한지를 알아본다.

Sun Microsystems가 최근 발표한 Java Web Services Developers Pack (Java WSDP) 1.0 을 이용해서, 자바 개발자들은 이제 자바 플랫폼 상에서 웹 서비스 개발을 돕는 편리한 툴을 갖게되었다. Java WSDP에는 Java XML Pack에 있는 모든 Java APIs for XML (JAX)과 Apache Tomcat 서버, 웹 서비스의 개발과 테스트와 완벽한 환경에 필요한 컴포넌트들을 포함하고 있다. Java WSDP에 있는 Java XML Pack의 모든 기술들은 1년 전에 소개되었고 Java Community Process (JCP)의 요구사항에 따라 디자인 리뷰가 진행중이다.(참고자료).

Java WSDP는 제품이 아니다. 편리하고 설치가 쉬운 패키지에서의 웹 서비스 표준의 레퍼런스 구현이다. 이 패키지는 완제품 단계에 있는 구현들과 테스트 용도로만 쓰이는 여러 컴포넌트들로 구성되어 있다. 결과적으로 Java WSDP는 애플리케이션 제품을 전개할 환경이라기 보다는 웹 서비스의 개발 및 테스트 환경이다. Java WSDP는 웹 서비스의 이해, 개발, 테스트에 적합한 툴이다. 그리고 개방 표준에 근거해있기 때문에 제품 환경 부터 시작할 필요가 없다. 웹 서비스를 전개할 준비가 되었다고 생각하면, 참고자료를 참조하라.

자바 웹 서비스로 WebShpere 사용하기

IBM WebSphere 같은 자바 서블릿 구현으로 웹 서비스를 지원하는 자바 XML 컴포넌트를 사용하려면, Java XML Pack만 사용하면 된다. Java XML Pack은 이 글에 언급된 컴포넌트를 갖고있지만 서버 플랫폼에는 없다. Java XML Pack을 이용하면, WebSphere의 적절한 클래스 경로에 설치되어야 할 패키지를 결정하기 쉽다. (참고자료).

Java WSDP?

Java WSDP을 설치할 때, 모든 컴포넌트들이 위치 할 디렉토리를 만들게 될 것이다. 기본적으로 디렉토리에는 웹 서비스의 개발과 테스트를 위한 완전한 기능을 갖춘 서버 환경이포함되어 있다. 웹 서비스를 지원하는 주 컴포넌트는 Java XML Pack에 포함되고 여기에는 모든 Java APIs for XML (JAX) 제품이 포함되어있다. 다음은 Java XML Pack 컴포넌트 리스트와 기능 설명이다:

  • Java API for XML Processing (JAXP): JAXP는 W3C의 제안 XML API (SAX, DOM, XSLT)의 모든 구현에 개방되어있는 pluggable API이다. JAXP는 XML 파서를 얻기위한 표준 인터페이스를 제공한다. 최근에 배포된 자바 플랫폼 (Java 2 Platform, Standard Edition SDK v1.4, 참고자료)에는 표준 인터페이스로서 JAXP가 포함되어 있다. 다른 자바 인터페이스와 마찬가지로, JAXP의 레퍼런스 구현 개발은 제 3자에게 위임되었다. 이 경우 Apache Software Foundation이다. Apache의 최신 XML 파서인 Xerces 2는 Java 2 Platform, Standard Edition SDK v1.4에 포함되어 있다.
  • Java API for XML Messaging (JAXM): JAXM은 애플리케이션이 순수한 Java API를 사용하여 문서지향 XML 메시지를 송수신하도록 설계되었다. JAXM의 목표는 ebXML 같은 고급 표준 기반 메시징 프로토콜의 기초를 제공하는 것이다. (SOAP 메시징 프로토콜). 동기식 SOAP 커넥션을 포함하고 있는 SAAJ 스팩은 최근 JAXM로 부터 분리되었고 JAXM은 주로 비동기식 메시지에 쓰인다. 비동기식으로 사용될 때 JAXM은 메시징 프로바이더를 사용하여 메시지 라우팅을 한다. JAXM는 ebXML Transport, Routing, Packaging 스팩 version 1.0의 레퍼런스 구현인 메시징 프로바이더를 포함하고 있다.
  • SOAP with Attachments API for Java (SAAJ): SAAJ는 개발자들이 SOAP 1.1 스팩(SOAP attachments가 포함)에 따른 메시지를 만들고 소비하도록 하는 패키지이다. SAAJ는 원래 JAXM 1.0 스팩의 일부로 정의되었다. 하지만 최신 JAXM 1.1은 원래의 스팩과 분리되어 다른 스팩이 JAXM에 의존하지 않고도 SAAJ 패키지에 의존할 수 있도록 하였다.
  • Java API for XML-based RPC (JAX-RPC): JAX-RPC는 SOAP 1.1 XML-based RPC 호출을 지원하는 구현 패키지이다. 핵심 JAX-RPC 패키지에는 웹 서비스와 JAX-RPC 서버의 레퍼런스 구현을 호출하는 완벽한 기능의 JAX-RPC 클라이언트가 포함되어 있다. 핵심 패키지 이외에도, Java WSDP 배포판에는 Web Services Definition Language (WSDL) 파일에서 클라이언트 스텁(stub)을 구현하고 서버 컴포넌트를 전개하는 수많은 명령행 툴이 있다.
  • Java API for XML Registries (JAXR): XML 레지스터는 퍼블리싱 된 웹 서비스에 대한 정보를 저장하는데 사용되고 JAXR API는 이 정보에 액세스하는 일관된 방식을 제공한다. 현재, 가장 일반적으로 사용되는 웹 서비스용 XML 레지스트리는 Universal Description, Discovery, Integration (UDDI) 레지스트리이다. JAXR은 UDDI에 액세스하기위한 프로바이더를 포함하고 있다.

Java XML Pack의 패키지 이외에도, Java WSDP에는 웹 서비스를 테스트 할 수 있는 완벽한 서버 환경을 만드는 컴포넌트들을 포함하고 있다. 다음은 컴포넌트 리스트이다:

  • Tomcat (Java Servlet and JavaServer Pages container): Apache Software Foundation은 Java Servlet 콘테이너(JSP와 JSTL 포함)를 위한 레퍼런스 구현을 만들고 유지하는 작업을 맡고있다. Apache는 많은 상용 제품들과 겨루며 탁월한 오픈 소스 솔루션을 만들어왔다. 현재는 베타 버전인 Apache Tomcat 4.1.2에 포함된 Java WSDP는 Java Servlet 2.3과 Java Server Pages 1.2를 위한 레퍼런스 구현 버전이다. 지금 현재 Apache의 최신 버전은 Tomcat 4.0.4 이며 이것 역시 Java Servlet 2.3과 JSP 1.2의 레퍼런스 구현이다.
  • JavaServer Pages Standard Tag Library (JSTL): JSTL은 JavaServer Page (JSP)에서 종종 발견되는 많은 함수들을 포함하고 있는 태그 라이브러리이다. JSTL이 JSP 1.2 스팩의 기능만 사용하기 때문에, 라이브러리를 사용하기 위해서는 JSP 1.2 콘테이너가 필요하다. 앞서 언급한 Apache Tomcat Server가 바로 그러한 컨테이너 이며 JSTL을 테스트하거나 Java WSDP로 태그 라이브러리를 개발할 수 있다. JSTL의 기능은 여기에서 설명할 수 없을 정도로 많다. JSP가 데이터페이스에 액세스하거나, XML을 조작하거나 또는 표준 포맷팅을 수행한다면 JSTL 사용을 고려해봐야 한다.
  • Registry server: Java WSDP에 포함된 레지스트리 서버는 완벽한 기능의 Universal Description, Discovery, and Integration (UDDI) version 2 구현이며 웹 서비스의 등록과 발견을 테스트하는데 사용될 수 있다. 다른 WSDP 컴포넌트와는 다르게, 레지스트리 서버는 테스트 목적으로만 사용되어야 하며 다른 제품과 함께 재배포 되지 않도록 패키지의 릴리스 노트에 정리되어야 한다. 이러한 제한 요소들을 제외하면, 레지스트리 서버는 UDDI version 2를 테스트 할 수 있는 훌륭한 툴이며 Java WSDP의 필수 요소이다.



위로


Java WSDP 컴포넌트 사이의 관계

어떻게 모든 Java WSDP 컴포넌트들이 함께 작동하여 웹 서비스를 지원하는가? Java WSDP는 우량의 패키지이기 때문에 설치와 실행이 쉽다. 컴포넌트들이 어떻게 작동하는지를 설명하겠다. 그들의 관계를 이해하는데 도움이 될 것이다. 그림 1을 보면 컴포넌트들 사이에 분명한 의존성이 나타난다. 그림 1이 모든 가능한 관계를 나타내는 것은 아니지만, 컴포넌트들이 어떻게 상호 작동하는지에 대해 이해할 수 있다. 이 다이어그램은 컴포넌트에 대한 추가 정보를 설명하기위해 칼러 코딩 스키마를 사용했다:

  • 보라색 컴포넌트들은 Java APIs for XML (JAX) 패키지의 일부이고 Java XML Pack에도 있다. 대부분의 JAX 패키지에는 전개가능한 레퍼런스 구현이 포함되어 있다.
  • 옥색의 컴포넌트들은 제품 환경에서는 전개할 수 없다. 이 컴포넌트들 대부분은 상용 또는 오픈 소스 솔루션으로 대체될 수 있는 서버측 구현이다.
  • 노란색은 Apache Software Foundation에서 관리하고 있는 컴포넌트를 나타낸다. 오픈 소스 커뮤니티에서 이들을 많이 사용하기 때문에 제품 환경에서도 전개할 수 있다. Xerces와 Xalan은 이 다이어그램에는 나타나있지 않지만 Java WSDP와 함께 배포된다.
  • 하얀색은 생성된 코드, 전개 시 개발자가 제공한 데이터, 씬 클라이언트 애플리케이션을 나타낸다.

그림 1. 컴포넌트 관계
Component relationships



위로


클라이언트 측 컴포넌트

이 패키지의 클라이언트측 컴포넌트는 클라이언트 애플리케이션내에서 전개되거나 클라이언트 티어로서 인터랙팅하는 원격 서버에 설치될 수 있다. 서버 기반 클라이언트 티어는 JavaServer Page 내에 사용되어 원격 웹 서비스와 인터랙팅한다. 웹 브라우저 클라이언트(그림 1)는 그 아키텍쳐를 설명한다. 그림을 보면 JSP 기반의 웹 애플리케이션은 JAX-RPC 클라이언트 스텁을 사용하여 다른 플랫폼(Microsoft .Net)에서 실행되는 원격 웹 서비스와 통신할 수 있다.

개입된 프로토콜이 SOAP messaging 을 사용하기 때문에 클라이언트상의 대부분의 인터랙션은 SAAJ를 사용하고 있다는 것이 명확히 보인다. 모든 인터페이스는 JAXP를 사용하는데, 이유는 애플리케이션 내부에서 직접 XML을 파싱하거나 JAX-RPC 호출로 생성된 클라이언트 스텁 코드를 통해 간접적으로 파싱하기 때문이다.

Java WSDP에 포함된 레지스트리 브라우저는 UDDI 테스트 레지스트리에 엔트리를 위치시키거나 만드는데 사용될 수 있다. 이 레지스트리 브라우저는 JAXR API를 사용하고, 레퍼런스 구현의 일부로 제공되는 UDDI 바인딩을 사용하여 레지스트리 서버로 연결한다. UDDI가 XML과 SOAP 기반 프로토콜이기 때문에 이 예제에서 JAXR는 SOAP messaging과 JAXP for XML parsing 사용한다. 다른 JAXR 프로바이더가 SOAP 기반이 아니거나 자신만의 SOAP 프로토콜을 갖고 있거나 결과적으로 SAAJ를 사용하지 않을 수도 있다.

그림 1에서 명확하게 드러나지 않은 또 다른 관계 유형은 자바 애플리케이션이 하나 이상의 웹 서비스를 사용할 때 발생한다. 사용되는 각 웹 서비스의 경우 개발자는 서비스를 설명하는 WSDL 문서를 갖고있다; 만약 그렇다면 이상적으로 보자면 개발자들은 개발 환경의 도움을 받아 JAXR을 사용하여 UDDI 레지스트리를 검색하고 웹 서비스용 WSDL을 얻게된다. 일단 WSDL을 얻게되면, 개발 툴은 애플리케이션으로 컴파일 되는 클라이언트 스텁 코드를 만든다. 웹 서비스를 사용하고 있는 클라이언트 애플리케이션은 프로시져 호출이 XML과 SOAP을 사용하여 원격 서버로 JAX-RPC 인터페이스에 의해 마샬링된다는 것을 인식하지 못한다.

이와 비슷하게 클라이언트 애플리케이션은 ebXML을 사용하여 원격 파트너 애플리케이션과 인터랙팅하는데 필요하다. 파트너 인터랙션을 준비하기 위해 애플리케이션은 JAXR를 사용하여 ebXML 바인딩을 얻어 ebXML 레지스트리를 검색할 수 있다. 교환과 파트너 협력 동의가 교환되면 애플리케이션은 JAXM을 사용하여 ebXML을 지원하는 JAXM 프로바이더를 얻어 메시지 교환을 시작한다.




위로


서버측 컴포넌트

클라이언트에서 사용되는 대부분의 인터페이스는 서버에서도 사용되거나 서버상의 같은 인터페이스를 사용하는 레퍼런스 구현 컴포넌트를 갖고있다. 이것의 한 예가 JAX-RPC Servlet이다. JAX-RPC 호출 내부의 대부분의 코드는 양방향이어서, 서버상에서 사용되는 같은 코드가 클라이언트에서도 사용된다. 클라이언트로 부터의 JAX-RPC 호출은 JAX-RPC Servlet으로 간다. JAX-RPC Servlet은 SAAJ의 레퍼런스 구현을 사용하여 SOAP 메시지를 처리하고, JAX-RPC의 레퍼런스 구현을 사용하여 SOAP 바디로 부터 메소드 이름과 매개변수를 언마샬링한다. 일단 이 정보가 획득되면 서버 스팩의 구현 코드는 요청된 메소드에 대한 인터페이스를 가져야하고 메소드를 동적으로 호출하고 결과를 리턴해야한다. 메소드로 부터 오는 결과는 같은 JAX-RPC와 SAAJ 인터페이스를 사용하여 클라이언트로 다시 마샬링된다. 이것은 서버측 컴포넌트가 클라이언트 측 코드에 의해 사용되는 같은 패키지를 사용하는 방식이다.

Java WSDP에 제공되는 서버측 컴포넌트는 제품 환경에 맞지 않는 레퍼런스 구현이다. (그림 1의 옥색표시) 이 모든 API들이 SOAP 프로토콜에 기반한 잘 확립된 표준을 사용하고 있다. 결과적으로 Java WSDP에 의해 제공되는 클라이언트측 코드는 다양한 플랫폼상에서 서버와 인터랙팅하는데 사용할 수 있다. 앞서 설명했듯이 그와 같은 크로스 플랫폼 기능의 일반적인 예는 Microsoft .Net 기반의 웹 서비스를 호출하기 위해 자바 코드를 사용한다.

Java XML Pack의 일부는 아니지만 Java WSDP에 포함된 다른 서버 컴포넌트들은 자바 플랫폼과 함께 웹 서비스를 지원하는 중요한 기능들이다. Sun Microsystems가 Apache Software Foundation와 협력하여 이러한 중요한 기술들의 레퍼런스 구현을 만들어냈다는 것이 그것을 입증한다. Apache로 개발된 표준 레퍼런스 구현 컴포넌트 대부분이 테스트가 잘된 Java Servlet 2.3 스팩 구현이며, JSP 1.2 구현도 잘 사용되고 있다.




위로


결론

자바 플랫폼을 사용하여 웹 서비스를 구현하려 한다면 Java Web Services Developers Pack이 큰 도움이 될 것이다. Java WSDP를 다운로드 한 후 Java WSDP 튜토리얼도 다운로드 하기를 바란다.

Java XML API와 웹 서비스 표준에 대해 이해를 했다면 웹 서비스를 시작해도 좋다. 웹 서비스의 주요 이점 중 하나는 자신이 원하는 플랫폼에서 개발할 수 있다는 것이다. 자바 플랫폼을 선택한다면 수 많은 웹 서비스 표준 구현을 갖게된다.




위로


참고자료




위로


필자소개

James McCarthy는 Symmetry Solutions, Inc.의 창립자이자 회장이다.





위로


기사에 대한 평가

매우 불만족 (1)
불만족 (2)
보통 (3)
만족 (4)
매우 만족 (5)




위로



    IBM 소개개인정보 보호정책문의