[jboss-cvs] JBossAS SVN: r75563 - in branches/JBPAPP_4_2_0_GA_CP: server/src/resources/43specific/org/jboss/metadata and 5 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jul 9 15:34:15 EDT 2008


Author: bstansberry at jboss.com
Date: 2008-07-09 15:34:15 -0400 (Wed, 09 Jul 2008)
New Revision: 75563

Modified:
   branches/JBPAPP_4_2_0_GA_CP/server/src/resources/42specific/org/jboss/metadata/WebMetaData.java
   branches/JBPAPP_4_2_0_GA_CP/server/src/resources/43specific/org/jboss/metadata/WebMetaData.java
   branches/JBPAPP_4_2_0_GA_CP/testsuite/src/main/org/jboss/test/cluster/test/JBossWebXmlParsingTestCase.java
   branches/JBPAPP_4_2_0_GA_CP/testsuite/src/main/org/jboss/test/cluster/web/util/WebSessionTestUtil.java
   branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/DeployerConfig.java
   branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/JBossWeb.java
   branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/JBossWebMBean.java
   branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/TomcatDeployer.java
   branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/session/JBossCacheManager.java
   branches/JBPAPP_4_2_0_GA_CP/tomcat/src/resources/webserver-xmbean.xml
Log:
[JBPAPP-944] Remove max-unreplicated-interval from DTD, expose global config via jboss-web.deployer

Modified: branches/JBPAPP_4_2_0_GA_CP/server/src/resources/42specific/org/jboss/metadata/WebMetaData.java
===================================================================
--- branches/JBPAPP_4_2_0_GA_CP/server/src/resources/42specific/org/jboss/metadata/WebMetaData.java	2008-07-09 18:03:28 UTC (rev 75562)
+++ branches/JBPAPP_4_2_0_GA_CP/server/src/resources/42specific/org/jboss/metadata/WebMetaData.java	2008-07-09 19:34:15 UTC (rev 75563)
@@ -201,7 +201,7 @@
    
    /** By default replicate clustered session metadata at least every 60 seconds */
    public static final int DEFAULT_MAX_UNREPLICATED_INTERVAL = 60;   
-   private int maxUnreplicatedInterval = DEFAULT_MAX_UNREPLICATED_INTERVAL;
+   private Integer maxUnreplicatedInterval = null;
 
    /** Should the context use session cookies or use default */
    private int sessionCookies = SESSION_COOKIES_DEFAULT;
@@ -853,12 +853,12 @@
       this.replicationFieldBatchMode = batchMode;
    }
 
-   public int getMaxUnreplicatedInterval()
+   public Integer getMaxUnreplicatedInterval()
    {
       return maxUnreplicatedInterval;
    }
 
-   public void setMaxUnreplicatedInterval(int maxUnreplicatedInterval)
+   public void setMaxUnreplicatedInterval(Integer maxUnreplicatedInterval)
    {
       this.maxUnreplicatedInterval = maxUnreplicatedInterval;
    }
@@ -1381,8 +1381,7 @@
             String maxUnrep =  MetaData.getElementContent(maxUnreplicatedIntervalElement);
             try
             {
-               Integer interval = Integer.valueOf(maxUnrep);
-               maxUnreplicatedInterval = interval.intValue();
+               maxUnreplicatedInterval = Integer.valueOf(maxUnrep);
             }
             catch (NumberFormatException e)
             {

Modified: branches/JBPAPP_4_2_0_GA_CP/server/src/resources/43specific/org/jboss/metadata/WebMetaData.java
===================================================================
--- branches/JBPAPP_4_2_0_GA_CP/server/src/resources/43specific/org/jboss/metadata/WebMetaData.java	2008-07-09 18:03:28 UTC (rev 75562)
+++ branches/JBPAPP_4_2_0_GA_CP/server/src/resources/43specific/org/jboss/metadata/WebMetaData.java	2008-07-09 19:34:15 UTC (rev 75563)
@@ -201,7 +201,7 @@
    
    /** By default replicate clustered session metadata at least every 60 seconds */
    public static final int DEFAULT_MAX_UNREPLICATED_INTERVAL = 60;   
-   private int maxUnreplicatedInterval = DEFAULT_MAX_UNREPLICATED_INTERVAL;
+   private Integer maxUnreplicatedInterval = null;
 
    /** Should the context use session cookies or use default */
    private int sessionCookies = SESSION_COOKIES_DEFAULT;
@@ -853,12 +853,12 @@
       this.replicationFieldBatchMode = batchMode;
    }
 
-   public int getMaxUnreplicatedInterval()
+   public Integer getMaxUnreplicatedInterval()
    {
       return maxUnreplicatedInterval;
    }
 
-   public void setMaxUnreplicatedInterval(int maxUnreplicatedInterval)
+   public void setMaxUnreplicatedInterval(Integer maxUnreplicatedInterval)
    {
       this.maxUnreplicatedInterval = maxUnreplicatedInterval;
    }
@@ -1381,8 +1381,7 @@
             String maxUnrep =  MetaData.getElementContent(maxUnreplicatedIntervalElement);
             try
             {
-               Integer interval = Integer.valueOf(maxUnrep);
-               maxUnreplicatedInterval = interval.intValue();
+               maxUnreplicatedInterval = Integer.valueOf(maxUnrep);
             }
             catch (NumberFormatException e)
             {

Modified: branches/JBPAPP_4_2_0_GA_CP/testsuite/src/main/org/jboss/test/cluster/test/JBossWebXmlParsingTestCase.java
===================================================================
--- branches/JBPAPP_4_2_0_GA_CP/testsuite/src/main/org/jboss/test/cluster/test/JBossWebXmlParsingTestCase.java	2008-07-09 18:03:28 UTC (rev 75562)
+++ branches/JBPAPP_4_2_0_GA_CP/testsuite/src/main/org/jboss/test/cluster/test/JBossWebXmlParsingTestCase.java	2008-07-09 19:34:15 UTC (rev 75563)
@@ -67,7 +67,8 @@
    public void testDefault() throws Exception
    {      
       WebMetaData metadata = getWebMetaData(DEFAULT);
-      defaultCheck(metadata);      
+      assertEquals("Max unreplicated", new Integer(WebMetaData.DEFAULT_MAX_UNREPLICATED_INTERVAL), metadata.getMaxUnreplicatedInterval());
+      defaultCheck(metadata, Element.MAX);
    }
    
    public void testEmpty() throws Exception
@@ -124,7 +125,7 @@
    public void testMaxUnreplicatedInterval() throws Exception
    {
       WebMetaData metadata = getWebMetaData(NO_MAX);
-      assertEquals("Max unreplicated", -1, metadata.getMaxUnreplicatedInterval());
+      assertEquals("Max unreplicated", new Integer(-1), metadata.getMaxUnreplicatedInterval());
       defaultCheck(metadata, Element.MAX);
    }
    
@@ -176,7 +177,7 @@
       }
       if (!ignore.contains(Element.MAX))
       {
-         assertEquals("Max unreplicated", WebMetaData.DEFAULT_MAX_UNREPLICATED_INTERVAL, metadata.getMaxUnreplicatedInterval());
+         assertEquals("Max unreplicated", null, metadata.getMaxUnreplicatedInterval());
       }
    }
 }

Modified: branches/JBPAPP_4_2_0_GA_CP/testsuite/src/main/org/jboss/test/cluster/web/util/WebSessionTestUtil.java
===================================================================
--- branches/JBPAPP_4_2_0_GA_CP/testsuite/src/main/org/jboss/test/cluster/web/util/WebSessionTestUtil.java	2008-07-09 18:03:28 UTC (rev 75562)
+++ branches/JBPAPP_4_2_0_GA_CP/testsuite/src/main/org/jboss/test/cluster/web/util/WebSessionTestUtil.java	2008-07-09 19:34:15 UTC (rev 75563)
@@ -175,7 +175,7 @@
       metadata.setReplicationGranularity(granularity);
       metadata.setInvalidateSessionPolicy(trigger);
       metadata.setReplicationFieldBatchMode(batchMode);
-      metadata.setMaxUnreplicatedInterval(maxUnreplicated);
+      metadata.setMaxUnreplicatedInterval(new Integer(maxUnreplicated));
       
       return metadata;
    }

Modified: branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/DeployerConfig.java
===================================================================
--- branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/DeployerConfig.java	2008-07-09 18:03:28 UTC (rev 75562)
+++ branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/DeployerConfig.java	2008-07-09 19:34:15 UTC (rev 75563)
@@ -108,6 +108,12 @@
     * if it detects a failover.
     */
    private boolean useJK = false;
+   
+   /**
+    * Maximum interval a clustered session should allow request to not
+    * replicate the session timestamp. 
+    */
+   private int maxUnreplicatedInterval;
 
    /**
     * Get the request attribute name under which the JAAS Subject is store
@@ -287,6 +293,16 @@
       this.useJK = useJK;
    }
 
+   public int getMaxUnreplicatedInterval()
+   {
+      return maxUnreplicatedInterval;
+   }
+
+   public void setMaxUnreplicatedInterval(int maxUnreplicatedInterval)
+   {
+      this.maxUnreplicatedInterval = maxUnreplicatedInterval;
+   }
+
    public String getSubjectAttributeName()
    {
       return subjectAttributeName;

Modified: branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/JBossWeb.java
===================================================================
--- branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/JBossWeb.java	2008-07-09 18:03:28 UTC (rev 75562)
+++ branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/JBossWeb.java	2008-07-09 19:34:15 UTC (rev 75563)
@@ -41,6 +41,7 @@
 import org.apache.tomcat.util.modeler.Registry;
 import org.jboss.deployment.DeploymentInfo;
 import org.jboss.deployment.SubDeployerExt;
+import org.jboss.metadata.WebMetaData;
 import org.jboss.mx.util.MBeanProxyExt;
 import org.jboss.security.plugins.JaasSecurityManagerServiceMBean;
 import org.jboss.system.ServiceControllerMBean;
@@ -130,6 +131,12 @@
     * Whether we are using Apache MOD_JK(2) module or not
     */
    private boolean useJK = false;
+   
+   /**
+    * Maximum interval a clustered session should allow request to not
+    * replicate the session timestamp. 
+    */
+   private int maxUnreplicatedInterval = WebMetaData.DEFAULT_MAX_UNREPLICATED_INTERVAL;
 
    /**
     * A flag indicating if the JBoss Loader should be used
@@ -301,8 +308,18 @@
    public void setUseJK(boolean useJK)
    {
       this.useJK = useJK;
-   } 
+   }
 
+   public int getMaxUnreplicatedInterval()
+   {
+      return maxUnreplicatedInterval;
+   }
+
+   public void setMaxUnreplicatedInterval(int maxUnreplicatedInterval)
+   {
+      this.maxUnreplicatedInterval = maxUnreplicatedInterval;
+   }
+
    public boolean getDeleteWorkDirOnContextDestroy()
    {
       return deleteWorkDirOnContextDestroy;
@@ -647,6 +664,7 @@
       config.setSnapshotMode(this.snapshotMode);
       config.setUseLocalCache(this.useLocalCache);
       config.setUseJK(this.useJK);
+      config.setMaxUnreplicatedInterval(this.maxUnreplicatedInterval);
       config.setSubjectAttributeName(this.subjectAttributeName);
       config.setUseJBossWebLoader(this.useJBossWebLoader);
       config.setAllowSelfPrivilegedWebApps(this.allowSelfPrivilegedWebApps);

Modified: branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/JBossWebMBean.java
===================================================================
--- branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/JBossWebMBean.java	2008-07-09 18:03:28 UTC (rev 75562)
+++ branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/JBossWebMBean.java	2008-07-09 19:34:15 UTC (rev 75563)
@@ -124,6 +124,45 @@
    public void setCacheName(String cacheName);
 
    /**
+    * Get the maximum interval between requests, in seconds, after which a
+    * request will trigger replication of the session's metadata regardless
+    * of whether the request has otherwise made the session dirty. Such 
+    * replication ensures that other nodes in the cluster are aware of a 
+    * relatively recent value for the session's timestamp and won't incorrectly
+    * expire an unreplicated session upon failover.
+    * <p/>
+    * Default value is {@link #DEFAULT_MAX_UNREPLICATED_INTERVAL}.
+    * <p/>
+    * The cost of the metadata replication depends on the configured
+    * {@link #setReplicationGranularityString(String) replication granularity}.
+    * With <code>SESSION</code>, the sesssion's attribute map is replicated 
+    * along with the metadata, so it can be fairly costly.  With other 
+    * granularities, the metadata object is replicated separately from the
+    * attributes and only contains a String, and a few longs, ints and booleans.
+    * 
+    * @return the maximum interval since last replication after which a request
+    *         will trigger session metadata replication. A value of 
+    *         <code>0</code> means replicate metadata on every request; a value 
+    *         of <code>-1</code> means never replicate metadata unless the 
+    *         session is otherwise dirty.
+    */
+   public int getMaxUnreplicatedInterval();
+
+   /**
+    * Sets the maximum interval between requests, in seconds, after which a
+    * request will trigger replication of the session's metadata regardless
+    * of whether the request has otherwise made the session dirty.
+    * 
+    * @param  maxUnreplicatedInterval  
+    *         the maximum interval since last replication after which a request
+    *         will trigger session metadata replication. A value of 
+    *         <code>0</code> means replicate metadata on every request; a value 
+    *         of <code>-1</code> means never replicate metadata unless the 
+    *         session is otherwise dirty.
+    */
+   public void setMaxUnreplicatedInterval(int maxUnreplicatedInterval);
+
+   /**
     * Get the JBoss UCL use flag
     */
    public boolean getUseJBossWebLoader();

Modified: branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/TomcatDeployer.java
===================================================================
--- branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/TomcatDeployer.java	2008-07-09 18:03:28 UTC (rev 75562)
+++ branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/TomcatDeployer.java	2008-07-09 19:34:15 UTC (rev 75563)
@@ -332,6 +332,13 @@
                jbcm.setSnapshotInterval(snapshotInterval);
             }
             
+            // JBAS-5706 -- use the DeployerConfig value as a default for
+            // WebMetaData.maxUnreplicatedInterval
+            if (metaData.getMaxUnreplicatedInterval() == null)
+            {
+               metaData.setMaxUnreplicatedInterval(new Integer(config.getMaxUnreplicatedInterval()));
+            }
+            
             String name = "//" + ((hostName == null) ? "localhost" : hostName) + ctxPath;
             manager.init(name, metaData, config.isUseJK(), config.isUseLocalCache());
             

Modified: branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/session/JBossCacheManager.java
===================================================================
--- branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/session/JBossCacheManager.java	2008-07-09 18:03:28 UTC (rev 75562)
+++ branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/session/JBossCacheManager.java	2008-07-09 19:34:15 UTC (rev 75563)
@@ -167,7 +167,11 @@
       this.replicationFieldBatchMode_ =
          webMetaData.getReplicationFieldBatchMode() ? Boolean.TRUE : Boolean.FALSE;
       
-      this.maxUnreplicatedInterval_ = webMetaData.getMaxUnreplicatedInterval();
+      Integer maxUnrep = webMetaData.getMaxUnreplicatedInterval();
+      if (maxUnrep != null)
+      {
+         this.maxUnreplicatedInterval_ = maxUnrep.intValue();
+      }
       
       if (proxy_ == null)
          proxy_ = new JBossCacheService(cacheObjectNameString_);

Modified: branches/JBPAPP_4_2_0_GA_CP/tomcat/src/resources/webserver-xmbean.xml
===================================================================
--- branches/JBPAPP_4_2_0_GA_CP/tomcat/src/resources/webserver-xmbean.xml	2008-07-09 18:03:28 UTC (rev 75562)
+++ branches/JBPAPP_4_2_0_GA_CP/tomcat/src/resources/webserver-xmbean.xml	2008-07-09 19:34:15 UTC (rev 75563)
@@ -87,6 +87,11 @@
      <type>boolean</type>
    </attribute>
 
+   <attribute access="read-write" getMethod="getMaxUnreplicatedInterval" setMethod="setMaxUnreplicatedInterval">
+     <name>MaxUnreplicatedInterval</name>
+     <type>int</type>
+   </attribute>
+
    <attribute access="read-write" getMethod="getDomain" setMethod="setDomain">
      <name>Domain</name>
      <type>java.lang.String</type>




More information about the jboss-cvs-commits mailing list