JAX-WS 클라이언트 프로그래밍 모델

JAX-WS(Java™ API for XML-Based Web Services) 웹 서비스 클라이언트 프로그래밍 모델은 디스패치 클라이언트 API 및 동적 프록시 클라이언트 API 모두를 지원합니다. 디스패치 클라이언트 API는 동적 클라이언트 프로그래밍 모델이며 JAX-WS에 대한 정적 클라이언트 프로그래밍 모델은 동적 프록시 클라이언트입니다. 디스패치 및 동적 프록시 클라이언트를 사용하면 JAX-WS 웹 서비스에 대해 동기 및 비동기 호출이 가능합니다.

  • 디스패치 클라이언트: XML 메시지 레벨에서 작업하거나 JAX-WS 레벨에서 생성된 아티팩트가 없이 작업하는 경우에 이 클라이언트를 사용하십시오.
  • 동적 프록시 클라이언트: 서비스 엔드포인트 인터페이스를 기반으로 웹 서비스를 호출하려는 경우에 이 클라이언트를 사용하십시오.

디스패치 클라이언트

XML 기반의 웹 서비스는 웹 서비스와 웹 서비스 클라이언트 사이의 통신에 XML 메시지를 사용합니다. JAX-WS API는 Java 메소드 호출과 해당 연관 XML 메시지 사이에서의 변환 세부사항을 단순화하고 숨기기 위한 상위 레벨 메소드를 제공합니다. 그렇지만 어떤 경우에는 XML 메시지 레벨에서 작업하려고 할 수도 있습니다. XML 메시지 레벨에서 서비스 호출 지원은 디스패치 클라이언트 API로 제공됩니다. 디스패치 클라이언트 API javax.xml.ws.Dispatch는 동적 JAX-WS 클라이언트 프로그래밍 인터페이스입니다. 디스패치 클라이언트를 쓰려면 디스패치 클라이언트 API, 지원되는 오브젝트 유형에 대한 전문 지식 및 연관된 WSDL(Web Services Description Language) 파일에 대한 메시지 표시의 지식이 있어야 합니다. 디스패치 클라이언트는 데이터를 MESSAGE 또는 PAYLOAD 모드로 전송할 수 있습니다. javax.xml.ws.Service.Mode.MESSAGE 모드를 사용하는 경우 디스패치 클라이언트는 <soap:Envelope>, <soap:Header>, <soap:Body> 요소를 포함하여 전체 SOAP 엔벨로프를 제공해야 합니다. javax.xml.ws.Service.Mode.PAYLOAD 모드를 사용하는 경우 <soap:Body> 컨텐츠만 제공하며 JAX-WS가 <soap:Envelope> 요소에 페이로드를 포함합니다.

디스패치 클라이언트 API를 사용하려면 애플리케이션 클라이언트가 메시지 또는 메시지 페이로드에 대한 세부사항이 필요한 XML로 메시지 또는 페이로드를 구성해야 합니다. 디스패치 클라이언트는 다음 유형의 오브젝트를 지원합니다.
  • javax.xml.transform.Source: Source 오브젝트를 사용하여 클라이언트가 XML API를 직접 사용하도록 하십시오. SOAP 또는 HTTP 바인딩과 같이 Source 오브젝트를 사용할 수 있습니다.
  • JAXB 오브젝트: 클라이언트가 JAX-WS 애플리케이션으로 XML을 작성하고 조작하기 위해 XML 스키마에서 생성된 JAXB 오브젝트를 사용할 수 있도록 JAXB 오브젝트를 사용합니다. JAXB 오브젝트는 SOAP 또는 HTTP 바인딩과만 사용할 수 있습니다.
  • javax.xml.soap.SOAPMessage: 클라이언트가 SOAP 메시지에 대해 작업할 수 있도록 SOAPMessage 오브젝트를 사용하십시오. SOAP 바인딩에만 SOAPMessage 오브젝트를 사용할 수 있습니다.
  • javax.activation.DataSource: 클라이언트가 MIME(Multipurpose Internet Mail Extension) 메시지에 대해 작업할 수 있도록 DataSource 오브젝트를 사용하십시오. DataSource는 HTTP 바인딩에만 사용하십시오.
예를 들어, 입력 매개변수 유형이 javax.xml.transform.Source인 경우 디스패치 클라이언트 API에 대한 호출은 다음 코드 예와 유사합니다.
Dispatch<Source> dispatch = … create a Dispatch<Source>
Source request = … create a Source object
Source response = dispatch.invoke(request);
디스패치 매개변수값은 invoke() 메소드의 리턴 유형을 판별합니다.
디스패치 클라이언트는 다음 세 방법 중 하나로 호출됩니다.
  • invoke 메소드를 사용하여 요청 및 응답에 대한 동기 호출
  • 콜백 및 폴링 오브젝트를 사용하는 invokeAsync 메소드를 사용하여 요청 및 응답에 대한 비동기 호출
  • invokeOneWay 메소드를 사용하는 단방향 호출

디스패치 클라이언트 사용에 대한 자세한 정보는 JAX-WS 스펙의 4장 3절을 참조하십시오.

동적 프록시 클라이언트

JAX-WS의 정적 클라이언트 프로그래밍 모델은 동적 프록시 클라이언트라고 합니다. 동적 프록시 클라이언트는 제공되어야 하는 웹 서비스 기반의 SEI(Service Endpoint Interface)를 기반으로 합니다. 동적 프록시 클라이언트는 JAX-RPC(Java API for XML-based RPC) 프로그래밍 모델의 스텁과 유사합니다. JAX-WS 동적 프록시 클라이언트 및 JAX-WS 스텁 클라이언트 모두 WSDL 파일에서 생성되는 SEI(Service Endpoint Interface)를 기반으로 하지만 중요한 차이점이 있습니다. 동적 프록시 클라이언트는 Java 5 동적 프록시 기능을 사용하여 런타임 시에 동적으로 생성되며 JAX-RPC 기반의 스텁 클라이언트는 툴링으로 생성되는 이식 가능하지 않은 Java 파일입니다. JAX-RPC 스텁 클라이언트와는 다르게 동적 프록시 클라이언트의 경우 생성된 인터페이스가 특정 벤더 정보를 필요로 하지 않기 때문에 다른 벤더에 대해 애플리케이션 서버에서 클라이언트를 실행하기 전에 스텁을 다시 생성할 필요가 없습니다.

동적 프록시 인스턴스는 java.lang.reflect.Proxy 클래스를 확장하고 기본 JRE(Java SE Runtime Environment) 6에서 동적 프록시 기능을 사용합니다. 그러면 클라이언트 애플리케이션은 런타임이 SEI를 나타내는 Java 오브젝트를 동적으로 작성하는 동안 프록시 인스턴스 작성에 사용되는 인터페이스를 제공합니다.

동적 프록시 클라이언트는 다음 세 방법 중 하나로 호출됩니다.
  • invoke 메소드를 사용하여 요청 및 응답에 대한 동기 호출
  • 콜백 및 폴링 오브젝트를 사용하는 invokeAsync 메소드를 사용하여 요청 및 응답에 대한 비동기 호출
  • invokeOneWay 메소드를 사용하는 단방향 호출

동적 프록시 클라이언트 사용에 대한 자세한 정보는 JAX-WS 스펙의 4장을 참조하십시오.


주제 유형을 표시하는 아이콘 개념 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_jaxwsclients
파일 이름:cwbs_jaxwsclients.html