1

次のような入力メッセージを持つ操作があります。

InputMessageType

  • messageType:文字列
  • その他のプロパティ..。

このmessageTypeがターゲットWSメソッドに到達する前に変更したいので、Phase.USER_LOGICALのインターセプターを作成しました。ただし、handleMessageで次のことを実行しようとすると、次のようになります。

message.getContent(InputMessageType.class)nullを返します。

InputMessageTypeへの参照を取得し、そのmessageTypeプロパティを変更してから、変更された入力パラメーターを使用してCXFにWSを呼び出させるにはどうすればよいですか?

4

1 に答える 1

2

私はあなたと同じ問題を抱えていました: message.getContent(xxx.class) は null を返します。理由はわかりませんが、後でこの動​​作を確認します。

代わりに、次のようなインターセプターを使用します (MessageContentsList を取得します)。

public class ApiSoapActionInInterceptorService extends AbstractPhaseInterceptor<Message> {

public ApiSoapActionInInterceptorService(){
    super(Phase.PRE_INVOKE);
}

@Override
public void handleMessage(Message message) throws Fault {
    MessageContentsList inObjects = MessageContentsList.getContentsList(message);
    if (inObjects != null && !inObjects.isEmpty()){
        for (Iterator<Object> it = inObjects.iterator(); it.hasNext() ;){
            Object ob = it.next();
            if (ob instanceof InputMessageType){
                //TODO
            }
        }
    } else {
        //TODO 
    }
}

}

于 2013-02-11T09:17:26.553 に答える