【问题标题】:How to use jetty continuations with a Filter and FORWARD dispatching?如何使用带有过滤器和转发调度的码头延续?
【发布时间】:2011-02-25 23:33:24
【问题描述】:

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

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

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

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

玩了一会儿之后,只要我有任何 &lt;dispatcher&gt; 条目,就会出现问题。即使只有一个&lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt; 条目。为了让它工作,根本不能有 dispatcher 条目。

【问题讨论】:

    标签: java jetty


    【解决方案1】:

    在挖掘了 Jetty 源代码后,我找到了答案。原来 Jetty 支持另一个 调度程序类型称为ASYNC。因此,如果我将任何&lt;dispatcher&gt; 行添加到web.xml 的&lt;filter-mapping&gt; 部分,我必须包含ASYNC 的条目,因为当调度“恢复的”延续时,这就是使用的调度程序类型。

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

    【讨论】:

      猜你喜欢
      • 2011-09-24
      • 2015-12-08
      • 2017-11-28
      • 2013-01-05
      • 2023-03-12
      • 1970-01-01
      • 2014-05-05
      • 2011-08-06
      • 1970-01-01
      相关资源
      最近更新 更多