1 16 package org.mortbay.j2ee.session; 17 18 20 import org.jfox.ioc.logger.Logger; 21 22 24 25 public class ValidatingInterceptor 26 extends AroundInterceptor 27 { 28 protected static final Logger _log=Logger.getLogger(ValidatingInterceptor.class); 29 30 protected void before() throws IllegalStateException {if (_running) checkValid();} 31 protected void after() {} 32 33 35 protected boolean _running=false; 36 37 public void start() {_log.trace("start()");_running=true;} 38 public void stop() {_log.trace("stop()"); _running=false;} 39 40 protected void 41 checkValid() 42 throws IllegalStateException 43 { 44 boolean valid=false; 45 State state=getState(); 46 try 47 { 48 int mii=state.getMaxInactiveInterval(); int keep=mii; 50 mii=mii<1?getManager().getStore().getActualMaxInactiveInterval():mii; long lat=state.getLastAccessedTime(); long now=System.currentTimeMillis(); 54 int age=(int)((now-lat)/1000); 56 valid=(age<mii); 57 if (_log.isTraceEnabled()) _log.trace("session keep="+keep+", mii="+mii+", lat="+lat+", now="+now+", age="+age+", valid="+valid); 58 } 59 catch (java.rmi.NoSuchObjectException ignore) 60 { 61 } 63 catch (javax.ejb.NoSuchEntityException ignore) 64 { 65 } 67 catch (Exception e) 68 { 69 _log.error("couldn't determine validity of HttpSession", e); 70 } 71 72 if (!valid) 73 throw new IllegalStateException ("invalid HttpSession - timed out"); 74 } 75 76 } 78 | Popular Tags |