在CXF API和拦截器中添加Gzip压缩
生活随笔
收集整理的這篇文章主要介紹了
在CXF API和拦截器中添加Gzip压缩
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如今,由于我們在響應中發送大量數據,因此必須對API響應執行Gzip壓縮。 它節省了網絡帶寬和交付時間,當然還節省了Internet上的空間。
CXF提供了以多種方式使用Gzip壓縮的選項。
藍圖:
<bean id="gZipInterceptor" class="org.apache.cxf.transport.common.gzip.GZIPOutInterceptor" /><jaxrs:server id="rsServer" address="/gZip"><jaxrs:outInterceptors><ref component-id="gZipInterceptor" /></jaxrs:outInterceptors></jaxrs:server>注解:
首先,您需要在out攔截器列表中注冊GZIPOutInterceptor 。 為此,您需要加入CXF初始化類。
public class InterceptorManager extends AbstractFeature {private static final Logger LOGGER = Logger.getLogger( "simcore" );private static final Interceptor< Message > GZIP = new GZIPOutInterceptor();//private static final Interceptor< Message > GZIP = new GZIPOutInterceptor(512);/* (non-Javadoc)* @see org.apache.cxf.feature.AbstractFeature#initializeProvider(org.apache.cxf.interceptor.InterceptorProvider, org.apache.cxf.Bus)*/@Overrideprotected void initializeProvider( InterceptorProvider provider, Bus bus ) {/*** Adding Gzip interceptor to all outbound requests/responses*/LOGGER.debug( " ############## Adding Gzip as OUT Interceptor ##############" );provider.getOutInterceptors().add( GZIP );} }GZIPOutInterceptor帶有一個選項,用于將閾值設置為字節數。 如果響應大小低于此閾值,則將不會對其進行壓縮。 當我們僅發送空列表和狀態消息/代碼時,這將非常有用,因為壓縮這些小的響應將在服務器端增加開銷。
但是,我們還必須考慮另一個因素,即請求響應的用戶數量。 因此,請考慮可能出現的所有情況,以適當地設置此值。
@GZIP現在,我們可以在任何Web服務控制器上使用此批注,以對該類中提供的所有API實施壓縮。
@WebService @Consumes ( { MediaType.TEXT_PLAIN, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON } ) @Produces ( MediaType.APPLICATION_JSON ) @GZIP public interface WebServicesController {@GET@Path ( "/myGzipData" )@Produces ( { MediaType.APPLICATION_JSON } )Response getZipData( );}此外,我們可以在Gzip注釋中設置不同的參數。
@GZIP ( force = true, threshold = 512 )翻譯自: https://www.javacodegeeks.com/2014/11/adding-gzip-compression-in-cxf-apis-and-interceptors.html
總結
以上是生活随笔為你收集整理的在CXF API和拦截器中添加Gzip压缩的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (ftp命令linux)
- 下一篇: Devoxx Hackergarten的