Spring-WS генерирует WSDL без операций - PullRequest
10 голосов
/ 21 июля 2009

Spring-WS генерирует WSDL без операций в теге привязки ... Знаете почему?

Вот мой spring-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>

Заранее спасибо, Etam.

1 Ответ

27 голосов
/ 21 июля 2009

DefaultWsdl11Definition пытается автоматически сгенерировать WSDL, изучая типы в вашей схеме. Если ваша схема не соответствует ожидаемым шаблонам, она не сработает.

С документация :

Определение DefaultWsdl11, которое создает WSDL из схемы XSD. это определение повторяется по всему элементу элементы, найденные в схеме, и создает сообщение для всех элементов. Затем он создает операцию WSDL для все сообщения, которые заканчиваются определенным суффикс запроса или ответа. суффикс запроса по умолчанию - Запрос; суффиксом ответа по умолчанию является Response, хотя их можно изменить, установив requestSuffix и responseSuffix свойства соответственно. Это также создает portType, привязку и сервис на основе операций.

Например, если наша схема Orders.xsd определяет GetOrdersRequest и GetOrdersResponse элементы, XsdBasedSoap11Wsdl4jDefinitionBuilder создаст GetOrdersRequest и GetOrdersResponse сообщение и Операция GetOrders, которая помещается в Тип порта для заказов.

...