Использование класса carttistener
Поскольку процессор сервлетов во многом определяет поведение объекта HttpSession, решение проблем отладки, связанных с сеансами, может оказаться непростым делом. API сервлетов предоставляет интерфейс HttpSessionBindingListener и класс HttpSessionBindingEvent для решения проблем отладки и для управления ресурсами, которые могут быть присоединены к объекту HttpSession.
В листинге 4.13 показан простой пример использования этого интерфейса в классе CartLi stener, который является внутренним по отношению к классу Catalog- Serv. В этом примере мы просто записываем системное время присоединения объекта к объекту HttpSession, и затем, когда сеанс закрывается, печатаем время жизни объекта. Объект CartLi stener присоединяется к объекту ShoppigCart, когда он создается в первый раз методом doPost (см. листинг 4.5).
Листинг 4.13. Внутренний класс CartListener (CatalogServ.java)
class CartListener implements
HttpSessionBindingListener {
long created ;
public void valueBound( HttpSessionBindingEvent evt ){
created = System.currentTimeMillis();
}
public void valueUnbound( HttpSessionBindingEvent evt ){
long del = System.currentTimeMillis() - created ;
System.out.println( "Session lifetime: " + ( del / 1000 )
+ " seconds ");
}
}
}