如何在jBoss EAP服务器

时间:2015-06-01 06:32:48

标签: jboss compression jboss-eap-6 http-compression

我正在使用jBoss EAP 6.1 sevrer,我想在其中为我的HTML,CSS和javaScript文件启用GZIP压缩。

我对这种压缩技术完全陌生,任何人都可以向我推荐一个教程,或者可以直接给我一个步骤,以便在Jboss EAP 6.1服务器上启用压缩。

除此之外,我有以下疑问:

1)我是否需要压缩工作区中的文件,或者如果我的jboss服务器将启用压缩,它将负责压缩,我只需要部署战争。

2)当服务器响应我的请求时,我是否需要显式转换或解码或解压缩文件以使用它们或解释它们?

2 个答案:

答案 0 :(得分:2)

Web资源的GZIP压缩是可选的,因此您无法压缩所有这些资源,然后希望每个Web客户端都能够处理它。这就是为什么它通常在运行时启用时客户端(可能是一个Web浏览器)使用Accept-Encoding: gzip, deflate标题说“gzip对我来说没问题”。见https://en.wikipedia.org/wiki/HTTP_compression

在服务器端,魔术是由HTTP Filter处理,它拦截请求,记下标题,然后将请求发送到应用程序的其余部分,截获响应并相应地压缩。

JBoss有一些内置支持:Enabling gzip compression for Jboss

如果您想自己动手,则需要撰写Filter并在web.xml中对其进行配置。

Java2s has an implementation

  public void doFilter(ServletRequest req, ServletResponse res,
      FilterChain chain) throws IOException, ServletException {
    if (req instanceof HttpServletRequest) {
      HttpServletRequest request = (HttpServletRequest) req;
      HttpServletResponse response = (HttpServletResponse) res;
      String ae = request.getHeader("accept-encoding");
      if (ae != null && ae.indexOf("gzip") != -1) {        
        GZIPResponseWrapper wrappedResponse = new GZIPResponseWrapper(response);
        chain.doFilter(req, wrappedResponse);
        wrappedResponse.finishResponse();
        return;
      }
      chain.doFilter(req, res);
    }
  }

或者您可以使用WebUtilities等性能优化库来启用此处所述的压缩https://github.com/rpatil26/webutilities/wiki/Enable-Compression

另见:

答案 1 :(得分:1)

在Jboss EAP 7.0中,这对我有用:

编辑:Standalone.xml

<subsystem xmlns="urn:jboss:domain:undertow:1.2">   <!-- SEARCH FOR THIS: urn:jboss:domain:undertow -->
  <buffer-cache name="default"/>  
  <server name="default-server">  
  <http-listener name="default" socket-binding="http"/>  
  <host name="default-host" alias="localhost">  
  (...)

  <!-- ADD THIS FOR GZIP COMPRESSION -->
  <filter-ref name="gzipFilter" predicate="exists['%{o,Content-Type}'] and regex[pattern='(?:application/javascript|text/css|text/html|text/xml|application/json)(;.*)?', value=%{o,Content-Type}, full-match=true]"/>  
  <!-- /GZIP COMPRESSION -->

  </host>  
  </server>  
(...)  
  <filters>  
  (...)  

  <!-- ADD THIS FOR GZIP COMPRESSION -->
  <gzip name="gzipFilter"/>  
  <!-- /GZIP COMPRESSION -->

  </filters>  
</subsystem>

重新启动服务器