복붙노트

[SPRING] Spring-ws : "Request"엘리먼트없이 xsd에서 Wsdl을 만드는 법

SPRING

Spring-ws : "Request"엘리먼트없이 xsd에서 Wsdl을 만드는 법

클라이언트 용 SOAP Webservice를 구현하려고하는데 soapUI로 서비스를 테스트하기 위해 wsdl 파일이 필요합니다. 그러나 아래에서 볼 수 있듯이이 xsd에는 요청 및 응답 메소드가 없으며 모든 요청과 응답은 기본 ServiceProvider 요소의 "유형"으로 정의됩니다. 그래서 스프링 wsdl 파일을 자동으로 생성하려고 할 때, 스프링 wsdl은 모든 요청과 응답 요소 이름이 "요청" "응답"으로 끝나야하기 때문에 적절한 wsdl을 생성하지 않습니다.

내가 무엇을 할 수 있을지?

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
   elementFormDefault="qualified" 
      attributeFormDefault="unqualified" targetNamespace="http://myurl" xmlns="http://myurl">

 <xs:element name="ServiceProviderT" nillable="false">
    <xs:annotation>
        <xs:documentation>ServiceProviderT is the message spec for data sent between TechX and service providers or
            vendors</xs:documentation>
                </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Version" type="xs:string" nillable="false"/>
                            <xs:choice>
                                <xs:element name="Request" type="RequestType" nillable="false"/>
                                <xs:element name="Response" type="ResponseType" nillable="false"/>
                                </xs:choice>
                                    </xs:sequence>
                                        </xs:complexType>
                                            </xs:element> 
                                                 ....

그리고 내가 wsdl 파일을 생성하는 방법

<sws:dynamic-wsdl id="myservice"
    portTypeName="MyService"
    locationUri="/myService"
    targetNamespace="http://myurl">
    <sws:xsd location="/schemas/my.xsd"/>
</sws:dynamic-wsdl>

해결법

  1. ==============================

    1.그러한 요구 사항은 단지 기본값입니다. 이것은 Spring-WS 레퍼런스 가이드에서 설명한다. 또한 이러한 기본값을 무시하도록 설정할 속성을 설명합니다.

    그러한 요구 사항은 단지 기본값입니다. 이것은 Spring-WS 레퍼런스 가이드에서 설명한다. 또한 이러한 기본값을 무시하도록 설정할 속성을 설명합니다.

    <sws:dynamic-wsdl id="myservice"
        portTypeName="MyService"
        locationUri="/myService"
        requestSuffix="YourRequestSuffixHere"
        responseSuffix="YourResponseSuffixHere"
        targetNamespace="http://myurl">
        <sws:xsd location="/schemas/my.xsd"/>
    </sws:dynamic-wsdl>
    
  2. from https://stackoverflow.com/questions/30620762/spring-ws-how-to-create-wsdl-from-an-xsd-with-no-request-element by cc-by-sa and MIT license