Cxf拦截器中获取当前请求的参数
Cxf拦截器中获取当前请求的参数 ? ?????????有的时候我们的工程里面会有很多的Webservice服务,我们可能出于某种原因可能需要对每个请求实现特定的逻辑,比如说对参数的有效性进行校验,这种逻辑往往是通过Cxf的拦截器来实现的,这个时候就需要获取Webservice服务的当前请求参数。Cxf中用MessageContentsList来封装一次请求的所有参数,它是继承自java.util.ArrayList的。MessageContentsList提供了一个静态方法getContentsList(Message message)用于从Message中获取对应请求的参数。其核心实现代码如下。 ? ????public?static?MessageContentsList getContentsList(Message?msg) { ??????? List<Object>?o?= CastUtils.cast(msg.getContent(List.class)); ????????if?(o?==?null) { ????????????returnnull; ??????? } ????????if?(!(oinstanceof?MessageContentsList)) { ??????????? MessageContentsList?l2?=?new?MessageContentsList(o); ????????????msg.setContent(List.class,?l2); ????????????returnl2; ??????? } ????????return?(MessageContentsList)o; ??? } ? ?????????所以通常我们需要对Webservice服务的请求参数进行统一处理时,我们会定义一个对应的拦截器,然后在拦截器的handleMessage方法中进行如下处理。 ???@Override ???void?handleMessage(SoapMessage?message)?throws?Fault { ??????//... ??????//请求参数中包含的参数 ????? MessageContentsList?list?= MessageContentsList.getContentsList(message); ??????对请求参数进行处理 ??????//... ?? } ? (注:本文是基于Cxf2.7.6所写) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |