有时我们希望创建一个作为缓存或者资源的对象,这个对象的生存期贯穿于用户servlet或者jsp session的始终。但是如果我们同时还希望这个对象可以被另一个地方所使用,那么这就成为了一个问题。因为我们不希望这个对象在session结束的时候被垃圾收集机制清理。我们可以通过实现HttpSessionBindingListener监听类来避免这个问题。
public class SomeObject implements HttpSessionBindingListener {
private Connection someDbConnection = null;
.... various bits of code ....
public void valueBound(HttpSessionBindingEvent event) {
// open the Connection
this.someDbConnection = ....
}
public void valueUnbound(HttpSessionBindingEvent event) {
// close the Connection
this.someDbConnection.close();
}
}
要将这个对象绑定到session中,我们只需要将它添加到session即可。如果一个放置到session中的对象实现了 HttpSessionBindingListener接口类,那么sesssion会自动的为它创建一个监听者(listener),在绑定解除的时候通知它。
通过实现HttpSessionBindingListener,我们可以将我们的对象放在sesssion域中,并且可以管理它们的创建和撤销。
