我在struts中有两个应用程序,另一个在spring中。从struts应用程序我有一个链接,它将通过ajax调用调用spring应用程序控制器,返回模型。
在struts应用程序中,我有20分钟的会话超时,并且在执行struts应用程序中呈现的spring应用程序的任何事务时,struts应用程序中的会话超时保持不变,并且在20分钟后它将退出。
struts应用程序jsp页面。
<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;
}
如果渲染的spring应用程序页面中有任何事务,你能帮我解决一下如何修复超时问题吗?
答案 0 :(得分:0)
如果您不希望struts应用程序中的会话超时,为什么不继续定期(可能每15分钟)向struts应用程序发送请求,它只会阻止会话空闲,直到春天应用程序回电。
或者你可以像这样添加一个动态设置会话超时时间的方法
request.getSession.setMaxInactiveInterval(60*60); //in seconds