2011-02-25 2 views
0

웹 스택의 기초 역할을하는 서블릿 필터가 있습니다. 내 web.xml에는 이 지정되어있어 필터가 앞으로 전달자 역할을하도록하고 싶습니다.부두 진입과 함께 필터 및 순항 급송을 사용하는 방법은 무엇입니까?

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

내 프레임 워크의 다른 기능에 필요합니다.

이제 비동기 연속성에 대한 지원을 추가하려고합니다. 내가 겪은 문제는 으로, 연속이 다시 시작될 때 (또는 계속이 만료 될 때) 부두가 결코 "재개 된"요청을 내 필터로 발송하지 않는다는 것입니다. 서블릿을 작성하면 "다시 시작한"요청을 받게됩니다. 그리고 내 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> 
관련 문제