【问题标题】:Jetty GZIP filter码头 GZIP 过滤器
【发布时间】:2014-03-27 21:55:23
【问题描述】:

您好,我使用带有 guice 和 jersey 的 jetty 9。如何使用 GZIP?

Server server = new Server(8080);
ServletContextHandler handler = new ServletContextHandler();
handler.addFilter(GuiceFilter.class, "/*", EnumSet.allOf(DispatcherType.class));
handler.addFilter(CORSFilter.class, "/*", EnumSet.allOf(DispatcherType.class));

FilterHolder holder = new FilterHolder(GzipFilter.class);
holder.setInitParameter("deflateCompressionLevel", "9");
holder.setInitParameter("minGzipSize", "0");
holder.setInitParameter("mimeTypes", "application/json");

handler.addFilter(holder, "/*", EnumSet.of(DispatcherType.REQUEST));

handler.addEventListener(new GuiceServletConfig());

server.setHandler(handler);

server.start();
server.join();

当我在调试中请求时,我没有调用“doFilter”方法

【问题讨论】:

  • 我不确定,但过滤器不应该也在 Guice 中配置吗?

标签: java jersey jetty gzip guice


【解决方案1】:

首先添加 GzipFilter,在 GuiceFitler 和 CORSFilter 之前

【讨论】:

    【解决方案2】:

    但是当使用安装在注入器上的 ServletModule 时,您可以像这样将其添加到模块的 configureServlets() 函数中。

        final Map<String, String> params = Maps.newHashMap();
        params.put("mimeTypes", "text/html,text/xml,text/plain,application/javascript,application/json");
        params.put("methods", "GET,PUT,POST,DELETE");
        params.put("deflateCompressionLevel", "9");
        bind(GzipFilter.class).in(Singleton.class);
        filter("/*").through(GzipFilter.class, params);
    

    更多信息见Guice ServletModule#dispatch-order

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-08
      • 2019-01-08
      • 2013-01-05
      • 2011-12-04
      • 2012-10-08
      • 2011-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多