使用Jetty 9(或7)和Grails设置Gzip过滤器

时间:2013-08-06 17:53:54

标签: xml grails jetty gzip

我一直在网上搜索类似我的帖子,但我发现没有人有同样的问题。

我正在尝试使用Jetty 9启动Grails服务器,通过以下命令:

  

java -Xmx384m -Xss512k -XX:+ UserCompressedOops -jar server / jetty-runner.rar --port 8080 target / * .war

在目标文件夹中,我有一个在Grails生产环境下编译的.war文件,我在Grails配置文件中指定了该环境。我没有使用grails run-app命令进行测试。

我按照Jetty网站上的说明http://www.eclipse.org/jetty/documentation/current/gzip-filter.html无效。

我的jetty-web.xml文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!-- File: web-app/WEB-INF/jetty-web.xml -->

<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">

<Set name="contextPath">/workpad</Set>

<Call name="setInitParameter">
  <Arg>org.eclipse.jetty.servlet.SessionIdPathParameterName</Arg>
  <Arg>none</Arg>
</Call>

<filter>
  <filter-name>GzipFilter</filter-name>
  <filter-class>org.eclipse.jetty.servlets.GzipFilter</filter-class>
  <init-param>
    <param-name>mimeTypes</param-name>
    <param-value>text/html,text/plain,text/xml,application/xhtml+xml,text/css,application/javascript,image/svg+xml</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>GzipFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

</Configure>

不幸的是,当我尝试使用上面发布的命令启动服务器时,服务器启动,但仅在抛出IllegalStateException之后,说明在XML文件中定义Gzip过滤器的过滤器标记是未知标记。 / p>

如果是必要的信息,我使用的是Grails 1.3.7。 任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您的过滤器的剪切和粘贴需要位于web.xml文件中,而不是位于jetty-web.xml文件中...

换句话说,那就是应该在Web应用程序描述符文件中定义的servlet过滤器。 (WEB-INF / web.xml)中

它抱怨成为一个未知标记的原因是jetty-web.xml文件比java更薄,并且不是有效的jetty xml标记。这是该文件的文档:

http://www.eclipse.org/jetty/documentation/current/reference-section.html#jetty-xml-syntax