Red Hat Training

A Red Hat training course is available for Red Hat Fuse

13.3. WSDL 확장

13.3.1. 개요

바인딩 범위, 서비스 범위 또는 포트 범위에서 WSDL 확장 요소를 계약에 삽입하여 JMS 전송의 기본 구성을 지정할 수 있습니다. WSDL 확장 기능을 사용하면 JNDI InitialContext 를 부트스트래핑하는 속성을 지정할 수 있습니다. 그러면 JMS 대상을 조회하는 데 사용할 수 있습니다. JMS 전송 계층의 동작에 영향을 미치는 일부 속성을 설정할 수도 있습니다.

13.3.2. SOAP/JMS 네임스페이스

SOAP/JMS WSDL 확장은 http://www.w3.org/2010/soapjms/ 네임스페이스에 정의되어 있습니다. WSDL 계약에서 이를 사용하려면 다음과 같은 설정을 wsdl:definitions 요소에 추가합니다.

<wsdl:definitions ...
    xmlns:soapjms="http://www.w3.org/2010/soapjms/"
  ... >

13.3.3. WSDL 확장 요소

표 13.4. “SOAP/JMS WSDL 확장 요소” JMS 전송을 구성하는 데 사용할 수 있는 모든 WSDL 확장 요소를 보여줍니다.

표 13.4. SOAP/JMS WSDL 확장 요소

요소기본값설명

soapjms:jndiInitialContextFactory

 

JNDI 공급자의 정규화된 Java 클래스 이름을 지정합니다. java.naming.factory.initial Java 시스템 속성을 설정하는 것과 동일합니다.

soapjms:jndiURL

 

JNDI 공급자를 초기화하는 URL을 지정합니다. java.naming.provider.url Java 시스템 속성을 설정하는 것과 동일합니다.

soapjms:jndiContextParameter

 

JNDI InitialContext 를 생성하기 위한 추가 속성을 지정합니다. namevalue 속성을 사용하여 속성을 지정합니다.

soapjms:jndiConnectionFactoryName

 

JMS 연결 팩토리의 JNDI 이름을 지정합니다.

soapjms:deliveryMode

PERSISTENT

JMS PERSISTENT 또는 NON_PERSISTENT 메시지 의미 체계를 사용할지 여부를 지정합니다. PERSISTENT 전달 모드의 경우 JMS 브로커는 메시지를 인증하기 전에 영구 스토리지에 저장합니다. 반면 NON_PERSISTENT 메시지는 메모리에만 유지됩니다.

soapjms:replyToName

 

[선택 사항] 큐 메시지의 응답 대상을 지정합니다. 응답 대상은 JMSReplyTo 헤더에 나타납니다. JMS 공급자가 지정되지 않은 경우 임시 응답 큐를 할당하므로 request-reply 의미가 있는 애플리케이션에 이 속성을 설정하는 것이 좋습니다.

이 속성의 값은 JMS URI에 지정된 변형에 따라 해석됩니다.

  • JNDI 변형 - JNDI로 확인된 대상 대기열의 이름입니다.
  • queue variant- JMS를 사용하여 확인된 대상 대기열의 이름입니다.

soapjms:priority

4

0(최저)에서 9(최고) 사이의 범위인 JMS 메시지 우선 순위를 지정합니다.

soapjms:timeToLive

0

시간(밀리초)은 JMS 공급자가 메시지를 삭제합니다. 값 0은 무한한 수명을 나타냅니다.A value of 0 represents an infinite lifetime.

13.3.4. 구성 범위

WSDL 계약을 배치하는 WSDL 요소는 계약에 정의된 끝점에 대한 구성 변경 범위에 영향을 미칩니다. SOAP/JMS WSDL 요소는 wsdl:binding 요소, wsdl:service 요소 또는 wsdl:port 요소의 자식으로 배치할 수 있습니다. SOAP/JMS 요소의 상위는 다음 중 구성이 배치되는 범위를 결정합니다.

바인딩 범위
wsdl: binding 요소 내에 확장 요소를 배치하여 바인딩 범위 에서 JMS 전송을 구성할 수 있습니다. 이 범위의 요소는 이 바인딩을 사용하는 모든 엔드포인트에 대한 기본 구성을 정의합니다. 바인딩 범위의 설정은 서비스 범위 또는 포트 범위에서 재정의할 수 있습니다.
서비스 범위
wsdl: service 요소 내에 확장 요소를 배치하여 서비스 범위 에서 JMS 전송을 구성할 수 있습니다. 이 범위의 요소는 이 서비스의 모든 엔드포인트에 대한 기본 구성을 정의합니다. 서비스 범위의 모든 설정은 포트 범위에서 재정의할 수 있습니다.
포트 범위
wsdl: port 요소 내에 확장 요소를 배치하여 포트 범위 에서 JMS 전송을 구성할 수 있습니다. 포트 범위의 요소는 이 포트에 대한 구성을 정의합니다. 서비스 범위 또는 바인딩 범위에서 정의된 동일한 확장 요소의 기본값을 재정의합니다.

13.3.5. 예제

예 13.9. “WSDL과 SOAP/JMS 구성의 계약” SOAP/JMS 서비스에 대한 WSDL 계약을 보여줍니다. 바인딩 범위, 서비스 범위에서 메시지 전달 세부 정보 및 포트 범위의 응답 대상에서 JNDI 계층을 구성합니다.

예 13.9. WSDL과 SOAP/JMS 구성의 계약

<wsdl:definitions ...
    xmlns:soapjms="http://www.w3.org/2010/soapjms/"
  ... >
  ...
  <wsdl:binding name="JMSGreeterPortBinding" type="tns:JMSGreeterPortType">
    ...
    <soapjms:jndiInitialContextFactory>
      org.apache.activemq.jndi.ActiveMQInitialContextFactory
    </soapjms:jndiInitialContextFactory>
    <soapjms:jndiURL>tcp://localhost:61616</soapjms:jndiURL>
    <soapjms:jndiConnectionFactoryName>
      ConnectionFactory
    </soapjms:jndiConnectionFactoryName>
    ...
  </wsdl:binding>
  ...
  <wsdl:service name="JMSGreeterService">
    ...
    <soapjms:deliveryMode>NON_PERSISTENT</soapjms:deliveryMode>
    <soapjms:timeToLive>60000</soapjms:timeToLive>
    ...
    <wsdl:port binding="tns:JMSGreeterPortBinding" name="GreeterPort">
      <soap:address location="jms:jndi:dynamicQueues/test.cxf.jmstransport.queue" />
      <soapjms:replyToName>
        dynamicQueues/greeterReply.queue
      </soapjms:replyToName>
      ...
    </wsdl:port>
    ...
  </wsdl:service>
  ...
</wsdl:definitions>

예 13.9. “WSDL과 SOAP/JMS 구성의 계약” 의 WSDL은 다음을 수행합니다.

SOAP/JMS 확장의 네임스페이스를 선언합니다.

바인딩 범위에서 JNDI 연결을 구성합니다.

JMS 전달 스타일을 비영구로 설정하고 각 메시지를 1분 동안 활성으로 설정합니다.

대상 대상을 지정합니다.

응답 메시지가 greeterReply.queue 큐에 전송되도록 JMS 전송을 구성합니다.