2009-07-20 2 views
9

Spring-WS는 바인딩 태그에서 작업하지 않고 WSDL을 생성합니다 ... 왜 그런지 알고 있습니까?Spring-WS는 작업없이 WSDL을 생성합니다.

내 스프링 WS-service.xml 있습니다 :

<import resource="classpath*:application-context.xml" /> 

    <!-- Register PayloadRootAnnotationMethodEndpointMapping --> 
    <bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping" /> 

    <!-- Register Endpoint --> 
    <bean id="tasktablerServiceEndpoint" class="tasktabler.mpk.service.TasktablerServiceEndpoint" /> 

    <!-- Configure XML Marshaller --> 
    <bean class="org.springframework.ws.server.endpoint.adapter.GenericMarshallingMethodEndpointAdapter"> 
     <constructor-arg ref="marshaller" /> 
    </bean> 

    <bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> 
     <property name="classesToBeBound"> 
      <list> 
       <value>tasktabler.mpk.databinding.OptimizeRequest</value> 
      </list> 
     </property> 
    </bean> 

    <!-- Add automatic WSDL generation support --> 
    <bean id="tasktabler" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition"> 
     <property name="schema" ref="schema" /> 
     <property name="portTypeName" value="tasktabler" /> 
     <property name="locationUri" value="http://localhost:8080/tasktabler" /> 
     <property name="targetNamespace" value="http://tasktabler" /> 
    </bean> 

    <bean id="schema" class="org.springframework.xml.xsd.SimpleXsdSchema"> 
     <property name="xsd" value="/WEB-INF/schema.xsd" /> 
    </bean> 

그리고 WSDL의 일부를 결합 WSDL이 : 사전에

<wsdl:binding name="tasktablerSoap11" type="tns:tasktabler"> 
     <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 
    </wsdl:binding> 

감사합니다, 에담는.

+0

생성 된 WSDL을 추가 할 수 있습니까? –

답변

26

DefaultWsdl11Definition은 스키마의 유형을 검사하여 WSDL을 자동 생성하려고 시도합니다. 스키마가 예상 패턴에 맞지 않으면 잘 수행되지 않습니다. the documentation에서

:

는 XSD 스키마에서 WSDL을 토대로 만들어진 DefaultWsdl11Definition. 이 정의는 스키마에서 모든 요소 요소를 반복하고 은 모든 요소에 대한 메시지를 만듭니다. 그런 다음 정의 된 요청 또는 응답 접미사로 끝나는 모든 메시지를 에 대한 WSDL 작업을 만듭니다. 기본 요청 접미사는 Request입니다. 기본 응답 접미어는 각각 입니다. 응답자는 requestSuffix 및 responseSuffix 속성을 각각 설정하여 변경할 수 있습니다. 또한 은 작업을 기반으로 portType, binding 및 서비스를 작성합니다. 예를 들어

, 우리 Orders.xsd 스키마 는 GetOrdersRequest 및 GetOrdersResponse 요소의 XsdBasedSoap11Wsdl4jDefinitionBuilder 를 정의하는 경우 주문 포트 유형에 넣어하는 GetOrdersRequest 및 GetOrdersResponse 메시지 및 GetOrders 작업을 만듭니다 .

+0

감사합니다 !!! 이제 작동 :). – Etam

+0

'requestSuffix'와'responseSuffix'에 대해 고마워요. –

관련 문제