【问题标题】:CXF interceptor to preprocess incoming messageCXF 拦截器预处理传入消息
【发布时间】:2013-02-08 17:43:10
【问题描述】:

我有一个输入消息如下的操作:

输入消息类型

  • 消息类型:字符串
  • 其他属性 ...

我想在它到达目标 WS 方法之前修改这个 messageType,并且我为 Phase.USER_LOGICAL 编写了一个拦截器。但是,如果我尝试在 handleMessage 中这样做:

message.getContent(InputMessageType.class) 它返回 null。

如何获取 InputMessageType 的引用,更改它的 messageType 属性,然后让 CXF 使用修改后的输入参数调用 WS?

【问题讨论】:

    标签: cxf


    【解决方案1】:

    我遇到了和你一样的问题: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 
        }
    }
    

    }

    【讨论】:

      猜你喜欢
      • 2012-04-21
      • 2023-03-26
      • 2017-08-02
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2017-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多