春天-WS生成无操作WSDL(Spring-WS generates WSDL without op

2019-09-19 19:13发布

春天-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>

在此先感谢,艾格。

Answer 1:

DefaultWsdl11Definition试图通过在您的架构检查类型自动生成WSDL。 如果你的方案不符合其预期的模式,它不会做它的一个好工作。

从文档 :

它建立从XSD模式的WSDL的DefaultWsdl11Definition。 这个定义遍历所有元件要素在架构中发现,并创建用于所有元素的消息。 接着,针对与所定义的请求或响应后缀结束的所有消息产生WSDL操作。 默认请求后缀是请求; 默认响应后缀是响应,虽然这些可通过分别设置requestSuffix和responseSuffix性质,来改变。 它还建立一个端口类型,绑定,并根据业务服务。

举例来说,如果我们的Orders.xsd架构定义GetOrdersRequest和GetOrdersResponse元素时,XsdBasedSoap11Wsdl4jDefinitionBuilder将创建一个GetOrdersRequest和GetOrdersResponse消息和GetOrders操作,这是摆在订单端口类型。



文章来源: Spring-WS generates WSDL without operations