Как я могу поймать тайм-аут сеанса с Java?

Я изучал работу над Java понемногу всего 3 месяца.

Моя проблема в том, что я реализовал тайм-аут сеанса (1 минута для тестирования) в приложении Java / mvc, смонтированном на сервере Oracle WebLogic g11, вопрос в том, что когда сервер достигает тайм-аута, установленного в web.xml » «Умирает» или ничего не делает, пока я не обновлю URL браузера (из этого я понял, что отладка, ничего не описывает консоль, и отладчик не запускается через валидатор сеанса .java, который запускается при каждом взаимодействии с системой). Звонки на кнопки или системные взаимодействия совершаются в основном Ajax.

my web.xml:

 <filter>
    <filter-name>AjaxSessionExpirationFilter</filter-name>
    <filter-class>AjaxSessionExpirationFilter</filter-class>
        <init-param>
            <param-name>customSessionExpiredErrorCode</param-name>
            <param-value>901</param-value>
        </init-param>
 </filter>

 <filter-mapping>
    <filter-name>AjaxSessionExpirationFilter</filter-name>
    <url-pattern>/*</url-pattern>
 </filter-mapping>

 <session-config> 
   <session-timeout>1</session-timeout>
 </session-config> 

Класс Java:

public class AjaxSessionExpirationFilter implements Filter{

private int customSessionExpiredErrorCode = 901;

    @Override
public void init(FilterConfig arg0) throws ServletException
{
    // Property check here
}

    @Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filerChain) throws IOException, ServletException
{
    HttpSession currentSession = ((HttpServletRequest)request).getSession(false);
    if(currentSession == null)
    {
        String ajaxHeader = ((HttpServletRequest) request).getHeader("X-Requested-With");
        if("XMLHttpRequest".equals(ajaxHeader))
        {
            logger.info("Ajax call detected, send {} error code: "+ this.customSessionExpiredErrorCode);
            HttpServletResponse resp = (HttpServletResponse) response;
            resp.sendError(this.customSessionExpiredErrorCode);
        }
        else
        {
            // Redirect to login page
        }
    }
    else
    {
        filerChain.doFilter(request, response);
    }
}

    @Override
    public void destroy() {
        // TODO Auto-generated method stub}

}

Кто-нибудь мне помогает? Спасибо!

1
задан 04.01.2017, 17:35
0 ответов