2009-12-12 3 views

답변

4

의 요청 및 응답 데이터를 가지고있다. 일반적으로 xsd은 입력 및 출력 메시지의 구조 (유형)를 정의합니다. wsdl은 xsd를 사용하여 서비스에서 공개 할 작업을 정의합니다. operation에는 일반적으로 이름과 입력 및 출력 메시지 쌍이 있습니다.

명명 규칙을 사용하는 경우를 제외하고는 도구가 xsd에서만 작업을 "재구성"할 수있는 방법이 없습니다. 예 : 메시지 requestDoItresponseDoIt -> 작업 DoIt. xsd에 이미 작업이 포함되어 있다면 (이는 비정상적 일 수 있습니다) 괜찮을 수도 있지만 귀하의 경우는 아닙니다.

수동으로 wsdl을 생성하면 너무 길어서는 안됩니다.

<types> 
    <xsd:schema xmlns="..." targetNamespace="..."> 
     <xsd:import namespace="..." schemaLocation="MySchema.xsd"/> 
    </xsd:schema> 
</types> 
... 
<wsdl:portType name="..."> 
    <wsdl:operation name="doIt"> 
     <wsdl:input message="tns:requestDoIt"/> 
     <wsdl:output message="tns:responseDoIt"/> 
    </wsdl:operation> 
</wsdl:portType> 

wsdl의 일반 구조를 보려면 WSDL essentials을보십시오.

또는 WSDL Generator (http://www.theprogrammerfactory.com/)의 도구를 사용하여이 작업을 쉽게 할 수 있습니다. (필자는 결코 그것을 사용하지 않았다는 것에 유의하십시오.)

또 다른 접근법은 xsd에서 클래스를 생성 한 다음이를 사용하여 서비스 클래스를 수동으로 정의하는 것입니다 (이것은 대응하는 연산과 함께 유형을 일치시키는 지루한 부분 임). 그런 다음 다른 도구를 사용하여 서비스 클래스를 변환합니다 다시 완전한 wsdl로. xsd 및 wsdl로 변환 할 수있는 다양한 도구가 Java 또는 C# : wsgen, wsimport, xsd.exe, wsdl.exe에서 사용할 수 있습니다.

+0

에서 찾을 수 있습니다 http://stackoverflow.com/questions/920086/generating-a-wsdl-from-a-xsd-file – ewernli

+0

http : // www. theprogrammerfactory.com/ 그리고 제공된 XSD를 준수하는 WSDL을 만들지 않았습니다. 예를 들어, 입력 매개 변수를 무시할 때 메시지 요소를 적절하게 작성할 수 없습니다. – toc777

관련 문제