2016-09-16 6 views
0

cxfサービスのSoapメッセージでSoapHeaderタグが呼び出されません。SoapMessageからCXFサービスへのsoapHeadersがapache camelで渡されない

私はCXFを定義しています:サービスのcxfEndpoint:私の現在のコードは以下の通りです

<cxf:cxfEndpoint id="testService" address="${testserviceurl}" 
    serviceClass="com.test.service.class" wsdlURL="test.wsdl" 
    endpointName="ns:test" serviceName="ns:TestService" 
    xmlns:ns="target.name.space.of.the.service"> 
    <cxf:properties> 
     <entry key="dataFormat" value="PAYLOAD" /> 
    </cxf:properties> 
</cxf:cxfEndpoint> 

そして、私のCXFエンドポイントを呼び出す前に、私はとSoapHeaderはを設定している:

CxfPayload<SoapHeader> payload = exchange.getIn().getBody(
     CxfPayload.class); 
List<SoapHeader> headers = payload.getHeaders(); 
SoapHeader header = new SoapHeader(new QName("HeaderName"), "Test"); 
headers.add(header); 

私はまたアプローチを試みた:

List<SoapHeader> soapHeaders = CastUtils.cast((List<?>) exchange 
     .getIn().getHeader(Header.HEADER_LIST)); 
if (soapHeaders == null) { 
    // we just create a new soap headers in case the header is null 
    soapHeaders = new ArrayList<SoapHeader>(); 
} 
SoapHeader header = new SoapHeader(new QName("HeaderName"), 
     "Test"); 
header.setDirection(Direction.DIRECTION_OUT); 
soapHeaders.add(header); 

誰でも助けてもらえますか?

答えて

0

cxfクライアントから同期要求を行う場合。これは、HTTP経由で通信するためにjdkのHttp接続クライアントを使用します。 この通りjira defect jdkはヘッダーを設定できません。あなたは非同期モードでCXFを使用している場合は、VMパラメータ

sun.net.http.allowRestrictedHeaders=true 

を設定することにより、あなたがそれを行うことができますヘッダーを設定したい場合 は、それは、ApacheのHttpAsyncClient使用しています。これにより、リクエストヘッダを設定することができます。

これが役に立ちます。

+0

こんにちはVijendra、ご回答いただきありがとうございます。リクエストヘッダーを設定することはできますが、この問題は、ペイロードメッセージの ''タグの下にあるSOAPヘッダーにあります。 – Prasann

関連する問題