【问题标题】:cxf interceptor intercept the request, but i can not find out the request params in the messagecxf拦截器拦截请求,但我在消息中找不到请求参数
【发布时间】:2014-03-04 08:52:17
【问题描述】:

我的母语不是英语,而且我的英语很差,所以如果有任何不清楚的地方,我深表歉意。 我已经搜索过,但没有帮助。
我有一个使用 cxf 框架的 Web 服务,我想使用拦截器来拦截服务调用程序传递的请求。我可以拦截请求,但找不到请求参数。

  1. 这是我的服务接口:

    public int modCredenceForUser(@WebParam(name = "operatorId", mode = WebParam.Mode.IN) String operatorId,
                                      @WebParam(name = "userCredenceVO", mode = WebParam.Mode.IN) Holder<UserCredenceVO> userCredenceVO,
                                      @WebParam(name = "res", mode = WebParam.Mode.OUT) Holder<Response> res)
    
  2. 这是我的服务调用程序代码的一部分:

        userCredenceVO = new UserCredenceVO();
        ......
        ......
        Holder<UserCredenceVO> userCredenceVOHolder = new Holder<UserCredenceVO>(userCredenceVO);
        String operatorId = ServiceInvokeUtil.getOperatorId();
        int result = service.modCredenceForUser(operatorId, userCredenceVOHolder, res);
    
  3. 这是我的服务提供商代码的一部分:

    public class AuthenticationInterceptor extends
            AbstractPhaseInterceptor {
        public AuthenticationInterceptor(){
            super(Phase.RECEIVE);
        }
        /*
        @Override
        public void handleFault(Message message) {
            super.handleFault(message);
        }
        */
        public void handleMessage(Message message) {
            ......
            ......
        }
    
    }
    

我想找出请求参数“userCredenceVO”,但我怎么能在消息中找到它。 这个问题困扰了我一天,如果有任何帮助,我将不胜感激。

【问题讨论】:

  • 非常感谢!@Karthik Prasad

标签: java web-services cxf interceptor


【解决方案1】:

问题已经解决,正确代码如下:

public class AuthenticationInterceptor extends
        AbstractPhaseInterceptor<SoapMessage> {

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

    @Override
    public void handleFault(SoapMessage message) {
        super.handleFault(message);
    }

    @Override
    public void handleMessage(SoapMessage message) throws Fault {
        Set _set = message.getContentFormats();
        Iterator classIterator = _set.iterator();
        while (classIterator.hasNext()) {
            Class _class = (Class) classIterator.next();
            Object _obj = message.getContent(_class);
        }    
    }

}

_obj 包含服务调用者传递的请求参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2015-02-01
    • 2013-03-17
    • 2019-07-14
    • 2018-05-31
    相关资源
    最近更新 更多