11

スプリングバッチアプリケーションから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

Soap-Binding を追加するだけです。

<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-file を指していませんでした... wsdl の場所を定義するにはさまざまな方法があります: エンドポイントの初期化中に提供できます (エンドポイント コンストラクターはオプションのwsdlLocation をパラメーターとして)、または wsdl2java タスクに "wsdlLocation" 引数を指定する (wsdl からクラスを生成する場合)。

間違った wsdlLocation を指していることが、この例外の原因である可能性があります...

于 2015-07-20T23:15:08.133 に答える