在spring-mvc生命周期中会话失效之前调用哪个方法?

时间:2014-04-08 06:35:03

标签: spring-mvc session-timeout

我试图在Spring-mvc中超时HttpSession。 当会话超时时,我必须释放使用的资源。 为此,我需要在应用程序中调用其他一些方法。

myService.releaseResources(id,name);

myService是服务类的自动对象。

当会话超时时,会调用sessionDestroyed方法。 但是在这个方法中,myService方法的值为null。 我想知道我应该在哪里调用上面的代码。 提前谢谢。

2 个答案:

答案 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必须注释为会话作用域。