상세 컨텐츠

본문 제목

Generate WSDL from XSD with Eclipse. WSDL 생성 만들기

Oracle/OSB

by 야솔아빠 2012. 11. 7. 14:41

본문

반응형

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 와 연동하여 사용하면 됩니다.

테스트를 해보니 잘 되었습니다.

반응형

'Oracle > OSB' 카테고리의 다른 글

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

관련글 더보기

댓글 영역