有的时候我们的工程里面会有很多的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
public void handleMessage(SoapMessage message) throws Fault {
//...
//请求参数中包含的参数
MessageContentsList list = MessageContentsList.getContentsList(message);
//对请求参数进行处理
//...
}
(注:本文是基于Cxf2.7.6所写)
(注:原创文章,转载请注明出处,原文地址:http://haohaoxuexi.iteye.com/blog/2264489)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。