我有一个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
个条目。
答案 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>