X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fdolda%2Fjsvc%2Futil%2FPerSession.java;h=0bb1ab03f0dbb63d8acb832d6c6f9498b2db2b7e;hb=0fc245dfd4f7bb5f5c3ffbdfe0b1df37430ddc1d;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..0bb1ab0 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 Destroyable) { + final Destroyable cr = (Destroyable)resp; + sess.listen(new Session.Listener() { + public void destroy(Session sess) { + cr.destroy(); + } + }); + } } } resp.respond(req);