X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fdolda%2Fjsvc%2Futil%2FPerSession.java;h=562e2c9618ae878ea3580b32b59780a9fe5d143b;hb=f0f0cfd1377d5134bd1c466f88f2583615f65b6b;hp=1cbc0d73241cce926f75f207d685c0ca22df0f15;hpb=8eafb5c6ccc150d1a6d0991780a262e389d9e424;p=jsvc.git diff --git a/src/dolda/jsvc/util/PerSession.java b/src/dolda/jsvc/util/PerSession.java index 1cbc0d7..562e2c9 100644 --- a/src/dolda/jsvc/util/PerSession.java +++ b/src/dolda/jsvc/util/PerSession.java @@ -88,11 +88,19 @@ public class PerSession implements Responder { 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 destroy(Session sess) { + cr.destroy(); + } + }); + } } } resp.respond(req);