13장. SOAP Over JMS 사용

초록

Apache CXF는 W3C 표준 SOAP/JMS 전송을 구현합니다. 이 표준은 SOAP/HTTP 서비스에 대한 보다 강력한 대안을 제공하기 위한 것입니다. 이 전송을 사용하는 Apache CXF 애플리케이션은 SOAP/JMS 표준도 구현하는 애플리케이션과 상호 운용할 수 있어야 합니다. 전송은 끝점의 WSDL에서 직접 구성됩니다.

참고: CXF 3.0에서는 JMS 1.0.2 API에 대한 지원이 제거되었습니다. RedHat JBoss Fuse 6.2 이상을 사용하는 경우(CXF 3.0 포함) JMS 공급자는 JMS 1.1 API를 지원해야 합니다.

13.1. 기본 설정

13.1.1. 개요

JMS 프로토콜을 통한 SOAP 는 대부분의 서비스에서 사용하는 사용자 지정 SOAP/HTTP 프로토콜에 보다 안정적인 전송 계층을 제공하는 방식으로 W3C(World Wide Web Consortium)에 의해 정의됩니다. Apache CXF 구현은 사양을 완전히 준수하므로 호환 가능한 모든 프레임워크와 호환되어야 합니다.

이 전송에서는 JNDI를 사용하여 JMS 대상을 찾습니다. 작업이 호출되면 요청은 SOAP 메시지로 패키지되고 JMS 메시지 본문에서 지정된 대상에 전송됩니다.

SOAP/JMS 전송을 사용하려면 다음을 수행합니다.

  1. 전송 유형을 SOAP/JMS로 지정합니다.
  2. JMS URI를 사용하여 대상 대상을 지정합니다.
  3. 필요한 경우 JNDI 연결을 구성합니다.
  4. 선택적으로 추가 JMS 구성을 추가합니다.

13.1.2. JMS 전송 유형 지정

WSDL 바인딩을 지정할 때 JMS 전송을 사용하도록 SOAP 바인딩을 구성합니다. soap:binding 요소의 transport 속성을 http://www.w3.org/2010/soapjms/ 로 설정합니다. 예 13.1. “JMS 바인딩 사양을 통한 SOAP” SOAP/JMS를 사용하는 WSDL 바인딩을 보여줍니다.

예 13.1. JMS 바인딩 사양을 통한 SOAP

<wsdl:binding ... >
  <soap:binding style="document"
                transport="http://www.w3.org/2010/soapjms/" />
  ...
</wsdl:binding>

13.1.3. 대상 대상 지정

엔드포인트에 대한 WSDL 포트를 지정할 때 JMS 대상의 주소를 지정합니다. SOAP/JMS 엔드포인트의 address 사양은 SOAP/HTTP 끝점과 동일한 soap:address 요소 및 속성을 사용합니다. 차이점은 주소 사양입니다. JMS 엔드포인트는 JMS 1.0의 URI Scheme에 정의된 대로 JMS URI를 사용합니다. 예 13.2. “JMS URI 구문” 는 JMS URI의 구문을 표시합니다.

예 13.2. JMS URI 구문

jms:variant:destination?options

표 13.1. “JMS URI 변형” JMS URI에 사용 가능한 변형에 대해 설명합니다.

표 13.1. JMS URI 변형

변형설명

jndi

대상 이름이 JNDI 대기열 이름임을 지정합니다. 이 변형을 사용하는 경우 JNDI 공급자에 액세스하기 위한 구성을 제공해야 합니다.

jndi-topic

대상 이름이 JNDI 주제 이름임을 지정합니다. 이 변형을 사용하는 경우 JNDI 공급자에 액세스하기 위한 구성을 제공해야 합니다.

queue

대상이 JMS를 사용하여 확인된 대기열 이름임을 지정합니다. 제공된 문자열은 대상의 표현을 생성하기 위해 Session.createQueue() 로 전달됩니다.

주제

대상이 JMS를 사용하여 확인된 주제 이름임을 지정합니다. 제공된 문자열은 대상 표현을 생성하기 위해 Session.createTopic() 로 전달됩니다.

JMS URI의 옵션 부분은 전송을 구성하는 데 사용되며 13.2절. “JMS URI” 에서 설명합니다.

예 13.3. “SOAP/JMS 엔드포인트 주소” 대상 대상이 JNDI를 사용하여 조회되는 SOAP/JMS 엔드포인트에 대한 WSDL 포트 항목을 표시합니다.

예 13.3. SOAP/JMS 엔드포인트 주소

<wsdl:port ... >
  ...
  <soap:address location="jms:jndi:dynamicQueues/test.cxf.jmstransport.queue" />
</wsdl:port>

13.1.4. JNDI 및 JMS 전송 구성

SOAP/JMS는 JNDI 연결 및 JMS 전송을 구성하는 여러 가지 방법을 제공합니다.