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>
提前致谢, 艾格。
答案 0 :(得分:27)
DefaultWsdl11Definition尝试通过检查架构中的类型来自动生成WSDL。如果您的架构不符合其预期的模式,它将无法很好地完成它。
DefaultWsdl11Definition哪个 从XSD架构构建WSDL。这个 定义迭代所有元素 模式中找到的元素,和 为所有元素创建消息。 接下来,它为。创建WSDL操作 所有以定义的结尾的消息 请求或响应后缀。该 默认请求后缀是Request;该 默认响应后缀是Response, 虽然这些可以通过设置来改变 requestSuffix和responseSuffix 属性,分别。它也是 构建一个portType,绑定和 基于运营的服务。
例如,如果我们的Orders.xsd架构 定义GetOrdersRequest和 GetOrdersResponse元素, XsdBasedSoap11Wsdl4jDefinitionBuilder 将创建一个GetOrdersRequest和 GetOrdersResponse消息,和 GetOrders操作,放在一个 订单端口类型。