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 확장 요소를 보여줍니다.
요소 | 기본값 | 설명 |
---|---|---|
|
JNDI 공급자의 정규화된 Java 클래스 이름을 지정합니다. | |
|
JNDI 공급자를 초기화하는 URL을 지정합니다. | |
|
JNDI | |
| JMS 연결 팩토리의 JNDI 이름을 지정합니다. | |
|
|
JMS |
|
[선택 사항] 큐 메시지의 응답 대상을 지정합니다. 응답 대상은 이 속성의 값은 JMS URI에 지정된 변형에 따라 해석됩니다.
| |
|
| 0(최저)에서 9(최고) 사이의 범위인 JMS 메시지 우선 순위를 지정합니다. |
|
|
시간(밀리초)은 JMS 공급자가 메시지를 삭제합니다. 값 0은 무한한 수명을 나타냅니다.A value of |
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 전송을 구성합니다.