如何通过Filter和FORWARD调度使用jetty continuation?

时间:2011-02-25 23:33:24

标签: java jetty

我有一个servlet过滤器,它充当我的Web堆栈的基础。在我的web.xml中我有 指定我希望过滤器也充当FORWARD调度程序。

  <filter-mapping>
    <filter-name>MyFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>  
  </filter-mapping>

这是我框架中的另一个功能所必需的。

现在我正在尝试添加对异步延续的支持。我遇到的问题是 当继续恢复时(或延续期到期),jetty永远不会将“恢复”请求发送到我的过滤器。如果我编写一个servlet,那么它将获得“恢复”请求。 如果我从我的web.xml文件中删除<dispatcher>FORWARD</dispatcher>,那么过滤器获得“恢复”请求。无论如何,即使启用了FORWARD调度,我仍然可以将“恢复”请求分派到我的过滤器吗?

在玩了一下之后,每当我有<dispatcher>个条目时就会出现问题。即使只有<dispatcher>REQUEST</dispatcher>条目。为了使其工作,根本不能有dispatcher个条目。

1 个答案:

答案 0 :(得分:2)

在深入了解Jetty源代码后,我找到了答案。事实证明Jetty支持另一个 名为ASYNC的调度程序类型。因此,如果我将任何<dispatcher>行添加到web.xml的<filter-mapping>部分,我必须包含ASYNC的条目,因为当调度“恢复”延续时,即使用的调度程序类型。

<filter-mapping>
  <filter-name>MyFilter</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>REQUEST</dispatcher>
  <dispatcher>FORWARD</dispatcher>
  <dispatcher>ASYNC</dispatcher>
</filter-mapping>