在CXF API和拦截器中添加Gzip压缩

如今,由于我们在响应中发送大量数据,因此必须对API响应执行Gzip压缩。 它节省了网络带宽和交付时间,当然还节省了Internet上的空间。

CXF提供了以多种方式使用Gzip压缩的选项。

  1. 蓝图
  2. 注解



蓝图:

<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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zTree树形菜单交互选项卡效果实现

1、 添加自定义属性 page 2、 为 ztree 每个树形节点&#xff0c;添加点击事件 1 <!DOCTYPE html>2 <html>3 4 <head>5 <meta charset"UTF-8">6 <title>ztree树形菜单的使用</title>7 <!-- 导入…

windows 服务部署管理

通过创建bat文件&#xff0c;能够快速的对服务进行部署和卸载。 部署的命令如下&#xff1a; $SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe [exename] Net Start [servicename] sc config [servicename] startauto 卸载的命令如下: $SystemRoot%\Microsof…

oracle中sql语句的优化(转帖)

一、执行顺序及优化细则 1.表名顺序优化 (1) 基础表放下面,当两表进行关联时数据量少的表的表名放右边 表或视图: Student_info (30000条数据) Description_info (30条数据) select * from description_info di ,student_info si --学生信息表 where si.student…

Devoxx Hackergarten的企业Web应用程序原型

我已经连续10年参加DevoxxBe了 。 这是我最喜欢的Java会议&#xff0c;但是谈话时间表并不总是最佳的&#xff1a;有时我想同时看2个精彩的谈话&#xff01; 因此&#xff0c;在Devoxx的Hackergarten&#xff0c;在参加讲座之间&#xff0c;我们中的一些人开始构建Web应用程序以…

C# 加载C++的dll

[DllImport("kernel32")] private static extern IntPtr LoadLibrary([MarshalAs(UnmanagedType.LPStr)]string fileName) 转载于:https://www.cnblogs.com/sky-jyq/p/11509059.html

谈一谈Http Request 与 Http Response

谈一谈Http Request 与 Http Response   写在前面的话&#xff1a;最近帮朋友弄弄微信商城&#xff0c;对于微信的基础开发&#xff0c;基本上就是各种post、get&#xff0c;有时是微信服务器向我们的服务器post、get数据&#xff0c;有时需要我们自己的服务器向微信服务器各…

Linux常用命令和vi,gdb的使用

1.ls 命令 --------------------------------------------------------------------- ls以默认方式显示当前目录文件列表 ls -a显示所有文件包括隐藏文件 ls -l显示文件属性&#xff0c;包括大小&#xff0c;日期&#xff0c;符号连接&#xff0c;是否可读写及是否可执行 -----…

增压的jstack:如何以100mph的速度调试服务器

使用jstack调试实时Java生产服务器的指南 jstack就像U2一样-从时间的黎明就一直在我们身边&#xff0c;我们似乎无法摆脱它 。 除了笑话&#xff0c;到目前为止&#xff0c;jstack是您调试军用生产服务器中最方便的工具之一。 即便如此&#xff0c;我仍然认为它在情况恶化时能够…

(网页)css和js的版本号问题

HTML页面自动清理js、css文件的缓存,之前用的是?v11每次都要找寻到网页进行更改,非常的麻烦. <script type"text/javascript"> document.write("<script typetext/javascript srcjs/xxxx?v" new Date().getTime() ">"); </s…

wchar_t 的输出问题

wchar_t 定义的变量之所以不能输出呢&#xff1f;我查了一下资料&#xff0c;就是说宽字符类型要本地化&#xff0c;否则输不出想要结果。本地化有三条语句可以使用&#xff0c;任取其一。最后一句是全局函数&#xff0c;前两个是wcout的一个成员函数的两种表达方式。std::wcou…

Apache Cassandra和Java入门(第二部分)

要求 要遵循本教程&#xff0c;您应该已经有一个正在运行的Cassandra实例&#xff08; 一个小型集群会很好 &#xff0c;但不是必需的&#xff09;&#xff0c;已安装Datastax Java驱动程序&#xff08; 请参阅第I部分 &#xff09;&#xff0c;并且已经在这里进行了10分钟的演…

Zabbix监控多个JVM进程

一、场景说明&#xff1a; 我们这边的环境用的是微服务&#xff0c;每个程序都是有单独的进程及单独的端口号&#xff0c;但用jps查询出来的结果有些还会有重名的情况&#xff0c;所以某些脚本不太适用本场景&#xff1b; 二、需求说明&#xff1a; 需使用Zabbix-server监控每个…

(网页)swiper.js轮播图插件

Swiper4.x使用方法 1.首先加载插件&#xff0c;需要用到的文件有swiper.min.js和swiper.min.css文件。可下载Swiper文件或使用CDN。 <!DOCTYPE html> <html> <head>...<link rel"stylesheet" href"path/to/swiper.min.css"> <…

Android 4.0 Launcher源码分析系列(二)

原文&#xff1a;http://mobile.51cto.com/hot-314700.htm 上一节我们研究了Launcher的整体结构&#xff0c;这一节我们看看整个Laucher的入口点&#xff0c;同时Laucher在加载了它的布局文件Laucher.xml时都干了些什么。 我们在源代码中可以找到LauncherApplication&#xff0…

使用JFace Viewer延迟获取模型元素

Eclipse JFace Viewers显示的模型元素有时需要花费大量时间来加载。 因此&#xff0c; 工作台提供了IDeferredWorkbenchAdapter类型以在后台获取此类模型元素。 不幸的是&#xff0c;似乎仅通过DeferredTreeContentManager派生的AbstractTreeViewer支持此机制。 因此&#xff…

架构设计

好的架构是进化出来的 &#xff0c;不是设计出来的&#xff1b; 不同时期和不同环境有着不同的最佳架构&#xff1b; 存在即合理&#xff0c;合适的才是最好的&#xff1b; 转载于:https://www.cnblogs.com/sky-jyq/p/11527254.html

(网页)js每隔5分钟执行一次ajax请求的实现方法(转)

转自脚本之家: 一个页面好像只能有一个 window.οnlοadfunction(){}&#xff0c;所以要有多个事件&#xff0c;这样写就好了 window.onloadfunction(){ //假设这里每个五分钟执行一次test函数 publicBusi(); personBusi(); } function publicBusi(){ setTimeout(perso…

Flash网站流量统计的方法

在我印象中&#xff0c;一般的免费流量统计代码是不允许嵌套在Flash中使用的&#xff0c;而且也不允许在内置IFrame中嵌套使用&#xff0c;网上检索了一下&#xff0c;找到了Flash网站的流量统计办法&#xff0c;其实就是使用内置IFrame的办法&#xff0c;使用的是51啦&#xf…

从浏览器端JavaScript代码进行服务器端日志记录

应用程序日志记录是我们在部署到应用程序服务器上的应用程序中都要做的事情&#xff0c;对吗&#xff1f; 对于大多数Java开发人员而言&#xff0c;使用Log4J或Logback之类的框架似乎都是理所当然的。 但是&#xff0c;我们编写的在那些讨厌的浏览器中运行的代码又如何呢&#…

Oracle连接字符串记录

<?xml version"1.0" encoding"utf-8"?> <!--有关如何配置 ASP.NET 应用程序的详细信息&#xff0c;请访问https://go.microsoft.com/fwlink/?LinkId301879--> <configuration><configSections><!-- For more information on…