2016-03-23 138 views
0

我有2個應用程序在struts中,另一個在春天。從struts應用程序,我有一個鏈接,將通過ajax調用彈簧應用程序控制器,返回模型使用ajax會話超時問題

在struts應用程序中,我有20分鐘的會話超時,並且在struts應用程序中呈現的spring應用程序的任何事務處理期間,struts應用程序中的會話超時保持不變,20分鐘後它將註銷。

struts application jsp page。

<body> 
<div id="content"></div> 
</body> 
<script type="text/javascript"> 

    $(document).ready(function() { 
     var sessionId = '<%= sessionId %>' 

     $.ajax({ 
     type: "GET", 
     url: '/springapp/index.app?id='+sessionId, 
     data: "" , 
     success: function(response){ 
      $('#content').html(response); 
     }, 
     error: function(e){ 
     alert('Error: ' + e); 
     console.log(e) 
     } 
    }); 


    }); 
</script> 

Spring應用程序控制器。

@RequestMapping(value = "/*.app", method = {RequestMethod.GET, RequestMethod.POST}) 
    public String jspController(ServletRequest req, ServletResponse res) throws exception { 
     LOGGER.debug("inside jspController() start"); 
     HttpServletRequest request = (HttpServletRequest) req; 
     String model = request.getRequestURI(); 
     if (model.endsWith("index.app")) { 
      String sessionKey = request.getParameter("employeeId"); 
      SpringStrutsHandshake springStrutsHandshake = securityDelegate.getUserId(sessionKey); 
      User user = userDelegate.getUserByEmployeeId(springStrutsHandshake.getUserId()); 
      user.setSessionKey(sessionKey); 
      request.setAttribute("USER", user); 
      model = "candidateList"; 
     } else { 
      model = model.substring(model.lastIndexOf("/") + 1, model.lastIndexOf(".")); 
     } 
     return model; 
    } 

請問如何解決在渲染彈簧應用程序頁面中有任何事務時的超時問題?

回答

0

如果你不想在struts應用程序中超時,爲什麼不直接向struts應用程序發送請求(可能每隔15分鐘),struts應用程序什麼都不做,只是爲了避免會話空閒,直到春季應用回撥。

也可以添加動態設置會話超時時間這樣

request.getSession.setMaxInactiveInterval(60*60); //in seconds 
的方法