2009-07-20 14 views
9

Spring-WS génère un WSDL sans opération de liaison ... Savez-vous pourquoi?Spring-WS génère un WSDL sans opérations

Il est mon printemps-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> 

Et il fait partie de liaison wsdl de WSDL:

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

Merci à l'avance, Etam. DefaultWsdl11Definition tente de générer automatiquement le WSDL en examinant les types dans votre schéma.

+0

Pourriez-vous s'il vous plaît ajouter le WSDL généré? –

Répondre

26

Si votre schéma ne correspond pas à ses modèles attendus, il ne fera pas un bon travail.

De the documentation:

Le DefaultWsdl11Definition qui construit un WSDL à partir d'un schéma XSD. Cette définition itère sur tous les éléments éléments trouvés dans le schéma, et crée un message pour tous les éléments. Ensuite, il crée une opération WSDL pour tous les messages se terminant par le suffixe de demande ou de réponse défini. Le suffixe de demande par défaut est Request; le suffixe de réponse par défaut est Réponse, bien que ceux-ci puissent être modifiés en définissant les propriétés requestSuffix et responseSuffix , respectivement. Il construit également un portType, une liaison et un service en fonction des opérations.

Par exemple, si notre schéma Orders.xsd définit la GetOrdersRequest et éléments GetOrdersResponse, le XsdBasedSoap11Wsdl4jDefinitionBuilder va créer un GetOrdersRequest et message GetOrdersResponse, et une opération GetOrders, qui est mis dans un type de port Commandes .

+0

Merci !!! Maintenant ça marche :). – Etam

+0

Merci d'avoir mentionné 'requestSuffix' et' responseSuffix' –