CXF之Features

来源:互联网 发布:网络传播的缺点是 编辑:程序博客网 时间:2024/05/16 08:08

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.} 


 

原创粉丝点击