我试图在Spring-mvc中超时HttpSession。 当会话超时时,我必须释放使用的资源。 为此,我需要在应用程序中调用其他一些方法。
myService.releaseResources(id,name);
myService是服务类的自动对象。
当会话超时时,会调用sessionDestroyed方法。 但是在这个方法中,myService方法的值为null。 我想知道我应该在哪里调用上面的代码。 提前谢谢。
答案 0 :(得分:0)
您需要实施HttpSessionListener。
public class SessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent sessionEvent) {
// TODO Auto-generated method stub
}
@Override
public void sessionDestroyed(HttpSessionEvent sessionEvent) {
// TODO Auto-generated method stub
}
}
将其条目添加到web.xml
<listener>
<listener-class>
yourpacakage.SessionListener
</listener-class>
</listener>
然后在sessionDestroyed
方法中调用所需的代码。就服务而言,您可以通过访问当前的applicationContext来获取服务对象。
ServletContext ctx = event.getSession().getServletContext();
WebApplicationContext springContext=WebApplicationContextUtils.getWebApplicationContext(ctx);
springContext.getBean("yourService");
答案 1 :(得分:0)
如果要处理特定会话bean的本地事务,可以使用@Predestroy
注释releaseResources方法。这将告诉Spring你希望在会话结束时调用该方法。
请注意,您的MyService bean必须注释为会话作用域。