Cri*_*sio 18 java tomcat servlets
在开发JSP应用程序时,可以定义会话超时值,比如30分钟.
超时后,会话对象被销毁.此外,我可以通过编程方式使会话调用session.invalidate()无效.
由于我在HTTP会话中保存了一个复杂的Java对象,在使会话无效或让tomcat app服务器过期之前,我需要调用一个保存的对象方法来释放一些内存.当然,当用户单击注销按钮时,我可以以编程方式执行此操作.
我想要做的是拦截Tomcat应用服务器,当它要销毁所有过期的会话(30分钟或自定义)时,这样我就可以预处理保存在会话中的Java对象,调用特定的方法来释放内存.
可能吗?
Bal*_*usC 37
是的,这是可能的.你可以HttpSessionListener
在sessionDestroyed()
方法中使用和完成工作,
@WebListener
public class MyHttpSessionListener implements HttpSessionListener {
@Override
public void sessionDestroyed(HttpSessionEvent event) {
// Do here the job.
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
或者你可以让作为会话属性存储的复杂对象实现HttpSessionBindingListener
并在valueUnbound()
方法中完成工作.
public class YourComplexObject implements HttpSessionBindingListener {
@Override
public void valueUnbound(HttpSessionBindingEvent event) {
// Do here the job.
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
每当要从会话中删除对象时(无论是通过会话HttpSession#removeAttribute()
的无效/过期,还是通过会话的无效/过期),都会调用它.
归档时间: |
|
查看次数: |
19785 次 |
最近记录: |