public void respond(Request req) {
Session sess = Session.get(req);
Responder resp;
- synchronized(sess) {
+ synchronized(this) {
resp = (Responder)sess.get(rcl, null);
if(resp == null) {
resp = create(sess);
sess.put(rcl, resp);
+ if(resp instanceof ContextResponder) {
+ final ContextResponder cr = (ContextResponder)resp;
+ sess.listen(new Session.Listener() {
+ public void expire(Session sess) {
+ cr.destroy();
+ }
+ });
+ }
}
}
resp.respond(req);