CXF之Features

1. 什么是Feature?

Feature能定制服务端,客户端或Bus , 通常添加功能。例如,LoggingFeature配置记录他们的每一个日志消息。

默认情况下,初始化方法都委托给initializeProvider(InterceptorProvider). 如果你简单地添加拦截器到

服务端,客户端,或Bus, Feature使你可以轻松地添加他们。

2. 编写feature并配置feature

CXF为配置不同的功能提供几个不同的features. 如日志处理。。等

--编写一个feature

很容易编写一个新的feature, 你的feature仅只需要扩展AbstractFeature并实现initializeProvider().

下面是一个执行日志功能的例子:

 

01.public class LoggingFeature extends AbstractFeature {  
02.    private static final int DEFAULT_LIMIT = 100 * 1024;  
03.    private static final LoggingInInterceptor IN = new LoggingInInterceptor(DEFAULT_LIMIT);  
04.    private static final LoggingOutInterceptor OUT = new LoggingOutInterceptor(DEFAULT_LIMIT);  
05.      
06.    int limit = DEFAULT_LIMIT;  
07.      
08.    @Override  
09.    protected void initializeProvider(InterceptorProvider provider, Bus bus) {  
10.        if (limit == DEFAULT_LIMIT) {  
11.            provider.getInInterceptors().add(IN);  
12.            provider.getInFaultInterceptors().add(IN);  
13.            provider.getOutInterceptors().add(OUT);  
14.            provider.getOutFaultInterceptors().add(OUT);  
15.        } else {  
16.            LoggingInInterceptor in = new LoggingInInterceptor(limit);  
17.            LoggingOutInterceptor out = new LoggingOutInterceptor(limit);  
18.            provider.getInInterceptors().add(in);  
19.            provider.getInFaultInterceptors().add(in);  
20.            provider.getOutInterceptors().add(out);  
21.            provider.getOutFaultInterceptors().add(out);  
22.        }  
23.    }  
24.    /** 
25.     * This function has no effect at this time. 
26.     * @param lim 
27.     */  
28.    public void setLimit(int lim) {  
29.        limit = lim;  
30.    }  
31.      
32.    /** 
33.     * Retrieve the value set with {@link #setLimit(int)}. 
34.     * @return 
35.     */  
36.    public int getLimit() {  
37.        return limit;  
38.    }      
39.} 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值