Vaadin Session not Expiring

Hello,

It seems my Vaadin session never expires. I set heartbeatInterval to 30 seconds, and session-timeout to 2 minutes. I also turned on closeIdleSessions flag. It seems every 2.5 minutes my TestUI class is destroyed, but then it is recreated, keeping the same Vaadion Session ID. On the browser side I notice the browser screen goes grey, showing a message “Loading Application…”, then the screen is refreshed. This sequence of action goes on and on, so my browser session never expires. I put a breakpoint in init method of my TestUI, following is the stack trace when it stopped at the break point. (The VaadinRequest object passed to init() is an instance of ServletSaveToSessionRequest.)

Can someone please tell me what is causing this behavior? Thanks in advance.

TestUI.init(VaadinRequest) line: 102    
TestUI(UI).doInit(VaadinRequest, int, String) line: 641    
ServletUIInitHandler(UIInitHandler).getBrowserDetailsUI(VaadinRequest, VaadinSession) line: 217    
ServletUIInitHandler(UIInitHandler).synchronizedHandleRequest(VaadinSession, VaadinRequest, VaadinResponse) line: 74    
ServletUIInitHandler(SynchronizedRequestHandler).handleRequest(VaadinSession, VaadinRequest, VaadinResponse) line: 41    
VaadinServletService(VaadinService).handleRequest(VaadinRequest, VaadinResponse) line: 1406    
DebtAuctionServlet(VaadinServlet).service(HttpServletRequest, HttpServletResponse) line: 305    
DebtAuctionServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 727    
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 303    
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 208    
WsFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 52    
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 241    
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 208    
CharacterEncodingFilter.doFilterInternal(HttpServletRequest, HttpServletResponse, FilterChain) line: 88    
CharacterEncodingFilter(OncePerRequestFilter).doFilter(ServletRequest, ServletResponse, FilterChain)line: 108    
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 241    
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 208    
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 330    
FilterSecurityInterceptor.invoke(FilterInvocation) line: 118    
FilterSecurityInterceptor.doFilter(ServletRequest, ServletResponse, FilterChain) line: 84    
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342    
ExceptionTranslationFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 113    
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342    
SessionManagementFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 103    
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342    
AnonymousAuthenticationFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 113    
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342    
SecurityContextHolderAwareRequestFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line:154    
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342    
RequestCacheAwareFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 45    
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342    
BasicAuthenticationFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 150    
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342    
UsernamePasswordAuthenticationFilter(AbstractAuthenticationProcessingFilter).doFilter(ServletRequest, ServletResponse, FilterChain) line: 199    
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342    
LogoutFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 110    
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342    
WebAsyncManagerIntegrationFilter.doFilterInternal(HttpServletRequest, HttpServletResponse,FilterChain)line: 50    
WebAsyncManagerIntegrationFilter(OncePerRequestFilter).doFilter(ServletRequest, ServletResponse,FilterChain) line: 108    
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342    
ConcurrentSessionFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 125    
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342    
SecurityContextPersistenceFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 87    
FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest, ServletResponse) line: 342    
FilterChainProxy.doFilterInternal(ServletRequest, ServletResponse, FilterChain) line: 192    
FilterChainProxy.doFilter(ServletRequest, ServletResponse, FilterChain) line: 160    
DelegatingFilterProxy.invokeDelegate(Filter, ServletRequest, ServletResponse, FilterChain) line: 344    
DelegatingFilterProxy.doFilter(ServletRequest, ServletResponse, FilterChain) line: 261    
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 241    
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 208    
StandardWrapperValve.invoke(Request, Response) line: 220    
StandardContextValve.invoke(Request, Response) line: 122    
NonLoginAuthenticator(AuthenticatorBase).invoke(Request, Response) line: 501    
StandardHostValve.invoke(Request, Response) line: 171    
ErrorReportValve.invoke(Request, Response) line: 103    
AccessLogValve.invoke(Request, Response) line: 950    
StandardEngineValve.invoke(Request, Response) line: 116    
CoyoteAdapter.service(Request, Response) line: 408    
Http11Processor(AbstractHttp11Processor<S>).process(SocketWrapper<S>) line: 1070    Http11Protocol$Http11ConnectionHandler(AbstractProtocol$AbstractConnectionHandler<S,P>).process(SocketWrapper<S>, SocketStatus) line: 611    
JIoEndpoint$SocketProcessor.run() line: 314    
ThreadPoolExecutor(ThreadPoolExecutor).runWorker(ThreadPoolExecutor$Worker) line: 1145    
ThreadPoolExecutor$Worker.run() line: 615    
TaskThread$WrappingRunnable.run() line: 61    
TaskThread(Thread).run() line: 745