【问题标题】:Resteasy generally enable GZIPResteasy 一般启用 GZIP
【发布时间】:2013-07-25 05:11:04
【问题描述】:

我有一个 RestEasy + Java EE 应用程序。当我将@GZIP 添加到组件类时,如果客户端发送“accepts:gzip”

,则会压缩服务器答案

有没有办法为所有组件启用 gzip?我不喜欢给每个类都加注解。

我正在使用 RestEasy JAX-RS 3.0.1

【问题讨论】:

    标签: resteasy gzipstream


    【解决方案1】:

    如果您在接口后面实现 API,那么您的所有接口都可能继承自一个接口,我们将其命名为“BaseAPI” 从逻辑上讲,如果您在 BaseAPI 上设置 @Gzip,那么它将对所有继承的接口和方法应用 Content-Encoding。

    @GZIP
    public interface BaseAPI
    {
    }
    
    
    public interface APIX extends BaseAPI
    {
       @GET
       Response getSomething() {
    }
    

    【讨论】:

      【解决方案2】:

      不,注释无法为所有资源启用 gzip。如果您想放弃为每个类添加注释,您可以创建一个 servlet 过滤器,该过滤器查看传入的标头并在输出时压缩响应。

      【讨论】:

        【解决方案3】:

        您可以使用自定义 JAX-RS 2.0 过滤器和拦截器来做到这一点,一旦您知道如何操作,这甚至不是特别难。

        您需要做的是添加一个过滤器来修改 GZIP 的现有过滤器,以便它检查注释是否存在以支持编码,它只查找 Accept -编码头。

        看看 RestEasy GZIP 编码是如何实现的: https://github.com/resteasy/Resteasy/tree/master/jaxrs/resteasy-jaxrs/src/main/java/org/jboss/resteasy/plugins/interceptors/encoding

        您需要添加具有 configure(ResourceInfo resourceInfo, FeatureContext configurable) 方法的功能,该方法总是添加 GZIP 过滤器,无论是否存在注释。您将需要一项为服务器注册自定义过滤器的功能,以及一项为客户端注册的功能。

        有了这些,预先存在的 GZIP 拦截器应该完成剩下的工作。

        我使用类似的机制来创建自定义压缩过滤器(尽管我最终将其设置为通过注释应用以限制范围)。

        【讨论】:

          【解决方案4】:

          为此使用 Apache。 Apache 可以自动处理它并优化(在您的情况下为 gzip)您对客户端的所有响应。它不仅会 gzip 它,还会附加所有必要的响应标头,允许客户端识别,内容是 zippid,让他们解压缩。

          此问题无需更改代码。

          【讨论】:

            【解决方案5】:

            Reasteasy 有这个 GZIPDecodingInterceptor。因此,您可以在创建客户端时执行此操作:

            import org.jboss.resteasy.plugins.interceptors.GZIPDecodingInterceptor;
            import org.jboss.resteasy.client.jaxrs.internal.ResteasyClientBuilderImpl;
            
            ResteasyClient client = new ResteasyClientBuilderImpl().build();
            client.register(GZIPDecodingInterceptor.class);
            

            【讨论】:

              猜你喜欢
              • 2018-03-07
              • 2010-10-16
              • 2017-02-08
              • 2011-06-10
              • 2013-12-29
              • 2011-07-18
              • 2013-05-05
              • 2011-10-11
              • 1970-01-01
              相关资源
              最近更新 更多