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 확장 요소
요소 | 기본값 | 설명 |
---|---|---|
|
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 전송을 구성합니다.