Dolda2000 GitWeb
/
jsvc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Extended SCGI DirServer with some logging.
[jsvc.git]
/
src
/
dolda
/
jsvc
/
util
/
PerSession.java
diff --git
a/src/dolda/jsvc/util/PerSession.java
b/src/dolda/jsvc/util/PerSession.java
index
7973e0a
..
562e2c9
100644
(file)
--- a/
src/dolda/jsvc/util/PerSession.java
+++ b/
src/dolda/jsvc/util/PerSession.java
@@
-19,11
+19,11
@@
public class PerSession implements Responder {
private Object makedata(Session sess) {
try {
try {
private Object makedata(Session sess) {
try {
try {
- return(dcl.getConstructor(
).newInstance(
));
+ return(dcl.getConstructor(
Session.class).newInstance(sess
));
} catch(NoSuchMethodException e) {
}
try {
} catch(NoSuchMethodException e) {
}
try {
- return(dcl.getConstructor(
Session.class).newInstance(sess
));
+ return(dcl.getConstructor(
).newInstance(
));
} catch(NoSuchMethodException e) {
}
} catch(InstantiationException e) {
} catch(NoSuchMethodException e) {
}
} catch(InstantiationException e) {
@@
-88,11
+88,19
@@
public class PerSession implements Responder {
public void respond(Request req) {
Session sess = Session.get(req);
Responder resp;
public void respond(Request req) {
Session sess = Session.get(req);
Responder resp;
- synchronized(
ses
s) {
+ synchronized(
thi
s) {
resp = (Responder)sess.get(rcl, null);
if(resp == null) {
resp = create(sess);
sess.put(rcl, resp);
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);
}
}
resp.respond(req);