OSB(Oracle Service Bus) 를 가지고 web service interface를 하다보면, XSD schema 를 가지고 WSDL을 만들어야 하는 경우가 많습니다.
WSDL을 수작업으로 만드는 것은 바보짓이기에, Eclipse 또는 OEPE(Oracle Enterprise Pack for Eclipse) 에서 만드는 방법입니다.
준비.
간단한 프로젝트를 만들고, xsd 파일을 미리 프로젝트에 복사합니다.
[시나리오]
[Request Message 구성]
- 공통 header 용 xsd
- Request body 용 xsd
[Response Message 구성]
- Response body 용 xsd
위 3개의 xsd를 이용하여 WSDL 을 generate
Eclipse 면 Apache-CXF plugin 을 설치하셔야 합니다.
아래 URL 을 보시고 plugin을 설치하시면 됩니다.
http://www.eclipse.org/webtools/
1. File > New > Other > Web Services > WSDL File
- File name 입력
Next Button click.
2. Target Namespace, Prefix 등록
- 프로젝트에 맞게끔 자유롭게 등록을 합니다.
3. Input 의 parameter 부터 변경을 합니다.
Input 의 Parameter 또는 NewOperation 에서 우클릭 > Set Element > Existing Element
Search Scope 에서 Workspace 를 선택하고, Element 에서 Header 를 선택합니다.
(Header 는 앞에서 설명한 공통헤더 xsd 파일에 정의되어 있습니다.)
아래 그림처럼 XSD를 참고하여 공통해더가 Input Parameter로 등록 되었습니다.
Input 데이터에 request body 가 정의된 xsd 를 등록하겠습니다.
Input 의 Parameter 또는 NewOperation 에서 우클릭 > Add Part
마찬가지로 미리 준비된 request body 가 정의된 xsd 를 등록합니다.
바로 앞에서 보여준 공통헤더 등록하는 예제를 따라하면 됩니다.
Operation 의 Input 영역을 완성했습니다.
4. Output 영역을 완성합니다.
Response body의 xsd가 등록되도록 수정합니다.(3번의 예제를 참고하시면 됩니다)
5. Operation name 등과 같이 auto generation 된 naming을 변경합니다.
6. 최종완성본
* 중요.
위 WSDL을 만들고 source 보기를 눌러서 아래 부분을 찾아서 볼드체로 된 부분을 추가를 합니다.
<wsdl:operation name="ProjectClose">
<soap:operation soapAction="http://www.example.org/OSB_ProjectClose/ProjectClose"/>
<wsdl:input>
<soap:body parts="NewPart" use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body parts="parameters" use="literal"/>
</wsdl:output>
</wsdl:operation>
<soap:header> 도 넣고 싶으면 아래와 같이 기술하면 됩니다.
<soap:header use="literal" part="parameters" message="tns:Batch2OSBRequest"></soap:header>
message는 각자 만든 소스를 참고해서 넣으시면 됩니다.
이렇게 하지 않으면, Input / Output 메시지 검증을 하지 않습니다.
즉 아래 OSB(Oracle Service Bus) 의 테스트 콘솔에서와 같이, Payload 부분의 데이터가 자동으로 제너레이션 되지 않습니다.
최종 완성된 wsdl 파일을 가지고 OSB local proxy 와 연동하여 사용하면 됩니다.
테스트를 해보니 잘 되었습니다.
Dynamic Routing Example (0) | 2013.01.24 |
---|---|
Dynamic xquery (0) | 2012.11.30 |
대용량 시스템에서 Service Bus Usability 장점 (0) | 2012.10.30 |
OSB 최초 deploy error (0) | 2012.09.08 |
OSB에서 Accept-Encoding, Content-Encoding 차이 (0) | 2012.04.04 |
댓글 영역