You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2017/02/28 15:55:44 UTC

svn commit: r1784767 - in /tomcat/trunk: java/javax/servlet/ java/org/apache/catalina/core/ java/org/apache/jasper/servlet/ test/org/apache/tomcat/unittest/

Author: markt
Date: Tue Feb 28 15:55:44 2017
New Revision: 1784767

URL: http://svn.apache.org/viewvc?rev=1784767&view=rev
Log:
Add the new ServletContext methods to set and get the default session timeout

Modified:
    tomcat/trunk/java/javax/servlet/ServletContext.java
    tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java
    tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java
    tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties
    tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
    tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java
    tomcat/trunk/test/org/apache/tomcat/unittest/TesterServletContext.java

Modified: tomcat/trunk/java/javax/servlet/ServletContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/ServletContext.java?rev=1784767&r1=1784766&r2=1784767&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/ServletContext.java (original)
+++ tomcat/trunk/java/javax/servlet/ServletContext.java Tue Feb 28 15:55:44 2017
@@ -962,4 +962,39 @@ public interface ServletContext {
      * @since Servlet 3.1
      */
     public String getVirtualServerName();
+
+    /**
+     * Get the default session timeout.
+     *
+     * @throws UnsupportedOperationException    If called from a
+     *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
+     *    method of a {@link ServletContextListener} that was not defined in a
+     *    web.xml file, a web-fragment.xml file nor annotated with
+     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link ServletContextListener} defined in a TLD would not be able to
+     *    use this method.
+     *
+     * @since Servlet 4.0
+     */
+    public int getSessionTimeout();
+
+    /**
+     * Set the default session timeout. This method may only be called before
+     * the ServletContext is initialised.
+     *
+     * @param sessionTimeoutMins The new default session timeout in minutes.
+     *
+     * @throws UnsupportedOperationException    If called from a
+     *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
+     *    method of a {@link ServletContextListener} that was not defined in a
+     *    web.xml file, a web-fragment.xml file nor annotated with
+     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link ServletContextListener} defined in a TLD would not be able to
+     *    use this method.
+     * @throws IllegalStateException If the ServletContext has already been
+     *         initialised
+     *
+     * @since Servlet 4.0
+     */
+    public void setSessionTimeout(int sessionTimeout);
 }

Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java?rev=1784767&r1=1784766&r2=1784767&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java Tue Feb 28 15:55:44 2017
@@ -1227,6 +1227,24 @@ public class ApplicationContext implemen
     }
 
 
+    @Override
+    public int getSessionTimeout() {
+        return context.getSessionTimeout();
+    }
+
+
+    @Override
+    public void setSessionTimeout(int sessionTimeout) {
+        if (!context.getState().equals(LifecycleState.STARTING_PREP)) {
+            throw new IllegalStateException(
+                    sm.getString("applicationContext.setSessionTimeout.ise",
+                            getContextPath()));
+        }
+
+        context.setSessionTimeout(sessionTimeout);
+    }
+
+
     // -------------------------------------------------------- Package Methods
     protected StandardContext getContext() {
         return this.context;

Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java?rev=1784767&r1=1784766&r2=1784767&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java Tue Feb 28 15:55:44 2017
@@ -769,6 +769,26 @@ public class ApplicationContextFacade im
     }
 
 
+    @Override
+    public int getSessionTimeout() {
+        if (SecurityUtil.isPackageProtectionEnabled()) {
+            return ((Integer) doPrivileged("getSessionTimeout", null)).intValue();
+        } else  {
+            return context.getSessionTimeout();
+        }
+    }
+
+
+    @Override
+    public void setSessionTimeout(int sessionTimeout) {
+        if (SecurityUtil.isPackageProtectionEnabled()) {
+            doPrivileged("getSessionTimeout", new Object[] { Integer.valueOf(sessionTimeout) });
+        } else  {
+            context.setSessionTimeout(sessionTimeout);
+        }
+    }
+
+
     /**
      * Use reflection to invoke the requested method. Cache the method object
      * to speed up the process

Modified: tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties?rev=1784767&r1=1784766&r2=1784767&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties (original)
+++ tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties Tue Feb 28 15:55:44 2017
@@ -32,6 +32,7 @@ applicationContext.role.iae=An individua
 applicationContext.roles.iae=Array of roles to declare for context [{0}] cannot be null
 applicationContext.setAttribute.namenull=Name cannot be null
 applicationContext.setInitParam.ise=Initialization parameters cannot be set after the context has been initialized
+applicationContext.setSessionTimeout.ise=The session timeout cannot be set for context {0} as the context has been initialised
 applicationContext.setSessionTracking.ise=The session tracking modes for context {0} cannot be set whilst the context is running
 applicationContext.setSessionTracking.iae.invalid=The session tracking mode {0} requested for context {1} is not supported by that context
 applicationContext.setSessionTracking.iae.ssl=The session tracking modes requested for context {0} included SSL and at least one other mode. SSL may not be configured with other modes.

Modified: tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardContext.java?rev=1784767&r1=1784766&r2=1784767&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardContext.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardContext.java Tue Feb 28 15:55:44 2017
@@ -6697,5 +6697,17 @@ public class StandardContext extends Con
         public String getVirtualServerName() {
             return sc.getVirtualServerName();
         }
+
+        @Override
+        public int getSessionTimeout() {
+            throw new UnsupportedOperationException(
+                    sm.getString("noPluggabilityServletContext.notAllowed"));
+        }
+
+        @Override
+        public void setSessionTimeout(int sessionTimeout) {
+            throw new UnsupportedOperationException(
+                    sm.getString("noPluggabilityServletContext.notAllowed"));
+        }
     }
 }

Modified: tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java?rev=1784767&r1=1784766&r2=1784767&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java (original)
+++ tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java Tue Feb 28 15:55:44 2017
@@ -690,4 +690,14 @@ public class JspCServletContext implemen
     public String getVirtualServerName() {
         return null;
     }
+
+    @Override
+    public int getSessionTimeout() {
+        return 0;
+    }
+
+    @Override
+    public void setSessionTimeout(int sessionTimeout) {
+        // NO-OP
+    }
 }

Modified: tomcat/trunk/test/org/apache/tomcat/unittest/TesterServletContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/unittest/TesterServletContext.java?rev=1784767&r1=1784766&r2=1784767&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/unittest/TesterServletContext.java (original)
+++ tomcat/trunk/test/org/apache/tomcat/unittest/TesterServletContext.java Tue Feb 28 15:55:44 2017
@@ -342,4 +342,14 @@ public class TesterServletContext implem
     public String getVirtualServerName() {
         return "localhost";
     }
+
+    @Override
+    public int getSessionTimeout() {
+        throw new RuntimeException("Not implemented");
+    }
+
+    @Override
+    public void setSessionTimeout(int sessionTimeout) {
+        throw new RuntimeException("Not implemented");
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org