2013-03-18 84 views
9

從Spring批處理應用程序調用spring-cxf-webservice時出現錯誤。僅在從batch調用時發生此錯誤。調用從正常的肥皂用戶界面其工作正常。一旦它從批處理調用一些記錄得到處理。錯誤正在發生的幾條記錄。檢查SOAP版本的批處理和Web服務及其相同。發送到SOAP 1.1唯一端點時,SOAP 1.2消息無效

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}" /> 

任何幫助或方法來確定根本原因,將不勝感激

+0

您能分享您的配置的特定部分嗎? – 2013-03-18 08:57:40

+0

@SerkanArıkuşu編輯與批處理配置的問題。 – Sajith 2013-03-18 09:34:22

+0

您沒有向我們展示將您的mainClient Jax WS客戶端對象掛接到Spring Batch的配置/代碼。 – 2013-03-19 18:30:25

回答

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> 
+0

指定綁定在我的情況下沒有幫助。 – Artem 2014-04-22 22:09:50

+0

如何在沒有彈簧的情況下製作裝訂肥皂1.2? Spring根據'做了某事,而且我不需要彈簧就可以做同樣的事情(僅限於cxf) – 4ntoine 2014-12-01 11:12:36

1

您的服務接口上添加此註釋,我想它的工作對我來說

@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE) 

時生成的類別提交服務:

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

public interface ServiceInterface { 
@WebResult(name = "response", targetNamespace = "http:///", partName = "response") 
0

我只是用CXF遇到同樣的問題框架。這是由於端點的配置錯誤:wsdlLocation沒有指向wsdl文件...有多種方法可以定義wsdl位置:它可以在端點初始化過程中提供(端點構造函數需要可選的wsdlLocation作爲參數),或者通過給wsdl2java任務提供一個「wsdlLocation」參數(如果您從wsdls生成類)。

指向錯誤的wsdlLocation可能是此例外的原因...

相關問題