From b4f3d10b06c3bfa5b34ccfcd6b23957c56886b71 Mon Sep 17 00:00:00 2001 From: pero Date: Thu, 17 Jan 2008 21:34:33 +0000 Subject: [PATCH] Fix ManagerServlet.exipreSession throws Exceptions as iterate longer session lists at production servers. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@612988 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/manager/LocalStrings.properties | 1 + java/org/apache/catalina/manager/ManagerServlet.java | 13 ++++++++++--- webapps/docs/changelog.xml | 3 +++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/java/org/apache/catalina/manager/LocalStrings.properties b/java/org/apache/catalina/manager/LocalStrings.properties index d643e0e0c..85594f99b 100644 --- a/java/org/apache/catalina/manager/LocalStrings.properties +++ b/java/org/apache/catalina/manager/LocalStrings.properties @@ -73,6 +73,7 @@ managerServlet.noContext=FAIL - No context exists for path {0} managerServlet.noDirectory=FAIL - Non-directory document base for path {0} managerServlet.noDocBase=FAIL - Cannot undeploy document base for path {0} managerServlet.noGlobal=FAIL - No global JNDI resources are available +managerServlet.noManager=FAIL - No manager exists for path {0} managerServlet.noReload=FAIL - Reload not supported on WAR deployed at path {0} managerServlet.noRename=FAIL - Cannot deploy uploaded WAR for path {0} managerServlet.noRole=FAIL - User does not possess role {0} diff --git a/java/org/apache/catalina/manager/ManagerServlet.java b/java/org/apache/catalina/manager/ManagerServlet.java index 86c9767a7..0d2c40302 100644 --- a/java/org/apache/catalina/manager/ManagerServlet.java +++ b/java/org/apache/catalina/manager/ManagerServlet.java @@ -47,6 +47,7 @@ import org.apache.catalina.Engine; import org.apache.catalina.Globals; import org.apache.catalina.Host; import org.apache.catalina.Lifecycle; +import org.apache.catalina.Manager; import org.apache.catalina.Role; import org.apache.catalina.Server; import org.apache.catalina.ServerFactory; @@ -1115,8 +1116,14 @@ public class ManagerServlet RequestUtil.filter(displayPath))); return; } + Manager manager = context.getManager() ; + if(manager == null) { + writer.println(sm.getString("managerServlet.noManager", + RequestUtil.filter(displayPath))); + return; + } int maxCount = 60; - int maxInactiveInterval = context.getManager().getMaxInactiveInterval()/60; + int maxInactiveInterval = manager.getMaxInactiveInterval()/60; int histoInterval = maxInactiveInterval / maxCount; if ( histoInterval * maxCount < maxInactiveInterval ) histoInterval++; @@ -1127,13 +1134,13 @@ public class ManagerServlet writer.println(sm.getString("managerServlet.sessions", displayPath)); writer.println(sm.getString("managerServlet.sessiondefaultmax", "" + maxInactiveInterval)); - Session [] sessions = context.getManager().findSessions(); + Session [] sessions = manager.findSessions(); int [] timeout = new int[maxCount]; int notimeout = 0; int expired = 0; long now = System.currentTimeMillis(); for (int i = 0; i < sessions.length; i++) { - int time = (int)((now-sessions[i].getLastAccessedTime())/1000); + int time = (int)((now-sessions[i].getLastAccessedTimeInternal())/1000); if (idle >= 0 && time >= idle*60) { sessions[i].expire(); idle++; diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index e3384c3db..05833fb00 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -46,6 +46,9 @@ + + Fix ManagerServlet.exipreSession throws Exceptions as iterate longer session lists at production servers (pero) + Add ManagerBase session getLastAccessedTimestamp and getCreationTimestamp for better remote JMX access. (pero) -- 2.11.0