WSIF 서비스가 JMS 대상의 서비스에 액세스할 수 있도록 지원하는 WSDL 확장 쓰기
기본 JMS(Java™ Message Service) 제공자를 사용하여 WSIF(Web Services Invocation Framework) 클라이언트가 JMS 대상에서 웹 서비스로 사용 가능한 서비스를 처리할 수 있습니다. 이 정보와 연관된 코드 단편을 사용하여 WSDL(Web Services Description Language) 확장을 쓰는 데 도움을 받을 수 있습니다.
시작하기 전에
이 태스크 정보
JMS에 대한 WSDL 확장은 네임스페이스 접두부 jms로 식별됩니다. 예를 들면, <jms:binding>입니다.
지원되는 조작은 단방향 조작(JMS 지점간 메시징의 경우 send 또는 JMS 공개-등록 메시징의 경우 publish) 또는 요청-응답 조작(JMS 지점간 메시징의 경우 send 및 receive)입니다. 따라서 WSDL 조작은 입력 메시지만 또는 입력 및 출력 메시지를 지정합니다.
기본 JMS 바인딩을 통해 메시지 인터페이스를 설명하는 조작은 결함 메시지를 포함하지 않습니다. 메시지 스키마 또는 메시지 특성의 시맨틱에 대해 어떠한 가정도 하지 않으므로 출력과 결함 메시지 사이에 차이가 생기지 않습니다.
다음 프로시저와 연관된 코드 단편을 사용하여 WSIF 서비스가 JMS 대상에서 기본 서비스에 액세스할 수 있도록 하는 WSDL(Web Services Description Language) 확장을 작성하는 데 도움을 받으십시오.
프로시저
예제 1: JMS 텍스트 메시지
JMS 텍스트 메시지는 java.lang.String을 포함합니다. 이 예제에서는 WSDL 메시지가 전체 메시지 본문을 나타내는 하나의 파트만 포함합니다.
<wsdl:definitions ... >
<!-- simple or complex types for input and output message -->
<wsdl:types> ... </wsdl:types>
<wsdl:message name="JmsOperationRequest"> ... </wsdl:message>
<wsdl:message name="JmsOperationResponse"> ... </wsdl:message>
<wsdl:portType name="JmsPortType">
<wsdl:operation name="JmsOperation">
<wsdl:input name="Request"
message="tns:JmsOperationRequest"/>
<wsdl:output name="Response"
message="tns:JmsOperationResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="JmsBinding" type="JmsPortType">
<jms:binding type="TextMessage" />
<format:typemapping style="Java" encoding="Java">
<format:typemap name="xsd:String" formatType="String" />
</format:typemapping>
<wsdl:operation name="JmsOperation">
<wsdl:input message="JmsOperationRequest">
<jms:input parts="requestMessageBody" />
</wsdl:input>
<wsdl:output message="JmsOperationResponse">
<jms:output parts="responseMessageBody" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="JmsService">
<wsdl:port name="JmsPort" binding="JmsBinding">
<jms:address destinationStyle="queue"
jndiConnectionFactoryName="myQCF"
jndiDestinationName="myDestination"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
이전 JMS 메시지 예제에 대한 확장으로, 다음 예제 WSDL에서는 요청 메시지에 대해 요청 및 응답 메시지의 특정 JMS 특성 값을 설정하고 응답 메시지에서 해당 특성 값을 검색하는 요청-응답 조작을 설명합니다.
요청 메시지에서 JMS 특성은 입력 메시지의 값에 따라 설정됩니다. 마찬가지로 응답 메시지의 선택한 JMS 특성은 출력 메시지의 대응하는 값으로 복사됩니다. 맵핑의 방향은 입력 또는 출력 섹션에서 각각 <jms:property> 태그 모양으로 판별됩니다.
<wsdl:definitions ... >
<!-- simple or complex types for input and output message -->
<wsdl:types> ... </wsdl:types>
<wsdl:message name="JmsOperationRequest">
<wsdl:part name="myInt" type="xsd:int"/>
...
</wsdl:message>
<wsdl:message name="JmsOperationResponse">
<wsdl:part name="myString" type="xsd:String"/>
...
</wsdl:message>
<wsdl:portType name="JmsPortType">
<wsdl:operation name="JmsOperation">
<wsdl:input name="Request"
message="tns:JmsOperationRequest"/>
<wsdl:output name="Response"
message="tns:JmsOperationResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="JmsBinding" type="JmsPortType">
<!-- the JMS message type might be any of the preceding types -->
<jms:binding type="..." />
<format:typemapping style="Java" encoding="Java">
<format:typemap name="xsd:int" formatType="int" />
...
</format:typemapping>
<wsdl:operation name="JmsOperation">
<wsdl:input message="JmsOperationRequest">
<jms:property message="tns:JmsOperationRequest" parts="myInt" />
<jms:propertyValue name="myLiteralString"
type="xsd:string" value="Hello World" />
...
</wsdl:input>
<wsdl:output message="JmsOperationResponse">
<jms:property message="tns:JmsOperationResponse" parts="myString" />
...
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="JmsService">
<wsdl:port name="JmsPort" binding="JmsBinding">
<jms:address destinationStyle="queue"
jndiConnectionFactoryName="myQCF"
jndiDestinationName="myDestination"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>