2016-06-17 9 views
0

ラクダメッセージの石鹸のヘッダーを修正しようとしています。私はメッセージの本文に触れない限り、私は石鹸のヘッダーを変更することができます。メッセージに新しい本文を設定すると、すべてのSOAPヘッダが削除されます。ここで私が使用するコードです。私は同じメッセージを出すメッセージにボディとソープのヘッダーを設定しようとしました。また、setDirectionの部分をコメント解除しても効果はありません。ラクダ石鹸のヘッダーを変更する

Message in = exchange.getIn(); 
if (in.getHeader(Header.HEADER_LIST) == null) { 
    in.setHeader(Header.HEADER_LIST, new ArrayList<SoapHeader>()); 
} 

List<SoapHeader> headers = CastUtils.cast((List<?>)in.getHeader(Header.HEADER_LIST)); 

Pagination pagination = new Pagination(); 

SoapHeader newHeader = new SoapHeader(new QName("http://de.company.local", "local"), "newHaeder", new JAXBDataBinding(String.class)); 
SoapHeader pageinationHeader = new SoapHeader(new QName("http://de.company.local", "pagination"), pagination, new JAXBDataBinding(Pagination.class)); 

//newHeader.setDirection(Direction.DIRECTION_OUT); 
headers.clear(); 
headers.add(newHeader); 
headers.add(pageinationHeader); 

//exchange.getOut().setHeader("org.apache.cxf.headers.Header.list", headers); 
exchange.getIn().setBody("<newContent>test</newContent>"); 

答えて

0

新しい本文にINメッセージを設定しても、ヘッダーは削除されません。

exchange.getOut().setBody()は、以前のヘッダを削除し、新しいボディを設定し、exchange.getIn().setBody()は、ヘッダの値を保存し、既存のヘッダーを変更するため

使用getIn()新しい本体をセットするだろう。

関連する問題