2013-03-18 11 views
9

Ich erhalte einen Fehler beim Aufruf eines Spring-CXF-Webservice von Spring Batch-Anwendung.Dieser Fehler tritt nur auf, wenn er von Batch aufrufen von der normalen Seife UI funktioniert es gut. Und sobald es aus dem Stapel ruft einige der Datensätze verarbeitet werden.Error passiert für ein paar Datensätze.Überprüft die SOAP-Version von Batch-und Webservice und seine gleichen.Eine SOAP 1.2-Nachricht ist nicht gültig, wenn sie an einen SOAP 1.1-Endpunkt gesendet wird

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) 

Batch-Konfiguration

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

Jede Hilfe oder Weg, um die Ursache zu identifizieren würde

+0

können Sie die spezifischen Teile Ihrer Konfiguration teilen? –

+0

@ SerkanArıkuşu bearbeitet Frage mit Batch-Konfiguration. – Sajith

+0

Sie haben uns nicht die Konfiguration/den Code gezeigt, der Ihr mainClient Jax WS-Client-Objekt in Spring Batch einklinkt. –

Antwort

2

Fügen Sie einfach die Soap-Bindung geschätzt.

<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

Die Angabe der Bindung hat in meinem Fall nicht geholfen. – Artem

+0

Wie macht man Seife 1.2 ohne Feder? Spring macht es nach ' irgendwie und ich muss das selbe ohne Feder machen (nur cxf) – 4ntoine

1

fügen diese Anmerkung auf Ihrem Service-Schnittstelle, habe ich versucht, seine für mich arbeiten

@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE) 

Die Klasse Hol- und Auslieferservice generiert:

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

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

begegne ich nur das gleiche Problem mit dem CXF Rahmen. Dies lag an einer fehlerhaften Konfiguration des Endpunkts: Die wsdlLocation zeigte nicht auf die wsdl-Datei ... Es gibt verschiedene Möglichkeiten, den wsdl-Speicherort zu definieren: Er kann während der Endpunktinitialisierung bereitgestellt werden (der Endpunktkonstruktor muss ein optional wsdlLocation als Parameter) oder indem Sie der wsdl2java-Task ein "wsdlLocation" -Argument geben (wenn Sie Ihre Klassen aus den wsdls generieren).

an einer falschen WSDLLocation Finger zeigen vielleicht die Ursache dieser Ausnahme ...

Verwandte Themen