public class LazySessionInvalidationFilter
extends java.lang.Object
implements javax.servlet.Filter
HttpSession.invalidate()の呼び出しを遅延させるFilter実装クラス。
 HttpRequestTestSupportHandlerでは、
 テストクラスとJetty上で実行されるテスト対象間でのExecutionContextのコピーを行っている。
 テスト実行中にセッションがinvalidateされた場合、Jetty 9ではExecutionContextの
 書き戻し時にIllegalStateExceptionがスローされてしまう。
 これを回避するためには、HttpSession.invalidate()が実行されるタイミングを遅らせる必要がある。
 サーブレットフィルタ(本クラス)を差し込んで、ここでHttpServletRequestをラップする。
 ラップしたHttpServletRequestは、セッションを要求されると、やはりラップしたHttpSessionを返却する。
 このラップしたHttpSessionではHttpSession.invalidate()が呼び出されても、実際にはinvalidateをせず、
 invalidateが要求されたことを記録しておく。
 後続のすべての処理が終わった後、invalidateが要求された場合、実際にinvalidateを実行する。| Constructor and Description | 
|---|
LazySessionInvalidationFilter()  | 
| Modifier and Type | Method and Description | 
|---|---|
void | 
destroy()  | 
void | 
doFilter(javax.servlet.ServletRequest request,
        javax.servlet.ServletResponse response,
        javax.servlet.FilterChain chain)
HttpSessionのラップを行う。
 後続処理終了後に遅延してHttpSession.invalidate()を行う。 | 
void | 
init(javax.servlet.FilterConfig filterConfig)  | 
public void init(javax.servlet.FilterConfig filterConfig)
          throws javax.servlet.ServletException
init in interface javax.servlet.Filterjavax.servlet.ServletExceptionpublic void doFilter(javax.servlet.ServletRequest request,
                     javax.servlet.ServletResponse response,
                     javax.servlet.FilterChain chain)
              throws java.io.IOException,
                     javax.servlet.ServletException
HttpSessionのラップを行う。
 後続処理終了後に遅延してHttpSession.invalidate()を行う。doFilter in interface javax.servlet.Filterjava.io.IOExceptionjavax.servlet.ServletExceptionpublic void destroy()
destroy in interface javax.servlet.Filter