11

从spring批处理应用程序调用spring-cxf-webservice时出现错误。此错误仅在从批处理调用时发生。从普通soap UI调用时,它工作正常。一旦从批处理调用一些正在处理的记录。一些记录发生错误。检查了批处理和 Web 服务的 SOAP 版本及其相同。

org.apache.cxf.binding.soap.SoapFault: A SOAP 1.2 message is not valid when sent to a SOAP 1.1 only endpoint.
                at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:144)
                at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:60)
                at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
                at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:799)
                at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1627)
                at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1494)
                at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1402)
                at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
                at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:649)
                at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
                at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
                at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:533)
                at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:463)
                at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:366)
                at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:319)
                at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:88)
                at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134)

批量配置

<jaxws:client id="mainClient"
              serviceClass="com.batch.service.MainSoap"
              address="${url}" />

任何帮助或确定根本原因的方法将不胜感激

4

3 回答 3

2

只需添加肥皂绑定。

<jaxws:endpoint id="mainClient" serviceClass="com.batch.service.MainSoap"
  address="${url}">

  <jaxws:binding>
    <soap:soapBinding version="1.2" mtomEnabled="true" />
  </jaxws:binding>
</jaxws:endpoint>
于 2013-10-22T12:01:21.630 回答
1

在您的服务接口上添加此注释,我尝试了它为我工作

@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)

生成类 DeliveryService:

 @WebService(targetNamespace = "http://...", name = "ServiceInterface")
 @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)

 public interface ServiceInterface {
 @WebResult(name = "response", targetNamespace = "http:///", partName = "response")
于 2015-07-08T09:10:04.960 回答
0

我只是在使用 CXF 框架时遇到了同样的问题。这是由于端点的错误配置:wsdlLocation 没有指向 wsdl 文件...有多种方法可以定义 wsdl 位置:它可以在端点初始化期间提供(端点构造函数采用可选的wsdlLocation 作为参数)或通过给 wsdl2java 任务一个“wsdlLocation”参数(如果您从 wsdls 生成类)。

指向错误的 wsdlLocation 可能是导致此异常的原因...

于 2015-07-20T23:15:08.133 回答