0

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

我正在尝试通过以下命令使用 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 过滤器的过滤器标签是未知标签。

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

4

1 回答 1

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

于 2013-08-06T20:00:23.833 回答