2011-02-25 30 views
0

我有一個servlet過濾器,充當我的web堆棧的基礎。在我的web.xml中,我有 指定我希望過濾器也充當FORWARD調度程序。如何通過Filter和FORWARD調度使用jetty continuation?

<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條目。

回答

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> 
相關問題