1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
package fr.pitivier.valve;
import java.io.IOException;
import java.util.Vector;
import javax.servlet.ServletException;
import org.apache.catalina.SessionEvent;
import org.apache.catalina.SessionListener;
import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
import org.apache.catalina.valves.ValveBase;
import org.apache.catalina.Session;
public class PitivierValve extends ValveBase implements SessionListener {
Vector sessions = new Vector();
public void invoke(Request request, Response response)
throws IOException, ServletException {
System.out.println("fr.pitivier.valve.PitivierValve - Invoke -> Webapp = " + request.getContext().getDisplayName());
System.out.println("fr.pitivier.valve.PitivierValve - Invoke -> Session ID = " + request.getSession().getId());
System.out.println("fr.pitivier.valve.PitivierValve - Invoke -> Requested URI = " + request.getRequestURI());
boolean found = false;
for (int i = 0; i < sessions.size(); i++) {
if (request.getSessionInternal() == (Session)sessions.get(i)) {
found = true;
break;
}
}
if (!found) {
sessions.add(request.getSessionInternal());
request.getSessionInternal().addSessionListener(this);
}
getNext().invoke(request, response);
}
public void sessionEvent(SessionEvent event) {
System.out.println("fr.pitivier.valve.PitivierValve - SessionEvent -> Event = " + event.getType());
System.out.println("fr.pitivier.valve.PitivierValve - SessionEvent -> Session ID = " + event.getSession().getId());
if (!Session.SESSION_DESTROYED_EVENT.equals(event.getType())
&& (!Session.SESSION_PASSIVATED_EVENT.equals(event.getType())))
return;
for (int i = 0; i < sessions.size(); i++) {
if (event.getSession() == (Session)sessions.get(i)) {
sessions.remove(event.getSession());
break;
}
}
}
} |