会话API提供跟踪对象何时被加入和删除的方式。要收到这些事件通知的对象可以实现HttpSessionBindingListener接口。实现类必须提供两个方法,在两个方法中,均收到一个HttpSessionBindingEvent的实例。事件参数具有检索会话和判断对象捆绑到会话的名字的方法。通过会话捆绑侦听者得到的主要优点是它们可以释放其获得的资源。而不管客户端显式关闭应用或会话超时。这使得此接口对管理数据库连接非常有用。JDBC提供连接池,但许多驱动器还没有实现它。这样的话,一种替换方式是使用一个知道使自己断连的会话驻留的连接。
当会话开始时,给定一个新打开的数据库连接,使用BoundConnection的一个JSP页面就可以调用该对象。当BoundConnection保存在会话中,其valueBound()方法被激发。在同一会话中的后续请求可以检索来自会话的BoundConnection并调用其getConnection()方法以得到底层的java.sql.connection。需要注意的是BoundConnection对象实现了serializable,因为会话可以被序列化,特别是在分布式应用中。这样就可以将connection实例变量标记为transient,结果是servlet容器不会试图对其序列化。因此getConection()调用者需要检测返回值是否为null,并在必要时创建一个新的BoundConnection。
会话捆绑侦听者:目前有0条评论