Me gustaría caducar todas mis sesiones en Tomcat. Probamos nuestro producto bajo Fitnesse y algunas sesiones permanecen y el final de la sesión causa dependencia entre las pruebas. Lo hago a mano con el siguiente código, pero se mantienen algunas sesiones (puedo comprobar con el http://localhost:8080/manager/html/list url)¿Cómo puedo caducar todas mis sesiones en Tomcat?
public static void expireAllSessions() {
String[] applications = { "a", "b", "c", "d", "e" };
for (String application : applications) {
try {
expireAllSessions(application);
} catch (Exception e) {
logger.error(e);
}
}
}
private static void expireAllSessions(final String application) throws Exception {
// cf doc http://hc.apache.org/httpclient-3.x/authentication.html
HttpClient client = new HttpClient();
client.getParams().setAuthenticationPreemptive(true);
Credentials userPassword = new UsernamePasswordCredentials("tomcat", "tomcat");
client.getState().setCredentials(AuthScope.ANY, userPassword);
String url = "http://localhost:8080/manager/html/expire";
NameValuePair[] parametres = new NameValuePair[] {
new NameValuePair("path", "/" + application),
new NameValuePair("idle", "0")
};
HttpMethod method = new GetMethod(url);
method.setQueryString(parametres);
client.executeMethod(method);
}
¿Hay una manera de hacerlo más eficiente e inmediata con ninguna sesión restante?
Class SessionMap no es seguro para subprocesos –