You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by gd...@apache.org on 2006/10/05 15:50:52 UTC

svn commit: r453239 - in /geronimo/sandbox/javaee5/modules-jee5: geronimo-jetty6-clustering-builder-wadi/src/main/java/org/apache/geronimo/jetty6/cluster/wadi/builder/ geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/

Author: gdamour
Date: Thu Oct  5 06:50:51 2006
New Revision: 453239

URL: http://svn.apache.org/viewvc?view=rev&rev=453239
Log:
Mirror GERONIMO-2469 - Allow sharing of a single WADI group communication instance between multiple Web-app updates.

Modified:
    geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6-clustering-builder-wadi/src/main/java/org/apache/geronimo/jetty6/cluster/wadi/builder/WADIJettyClusteringBuilder.java
    geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyWebAppContext.java

Modified: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6-clustering-builder-wadi/src/main/java/org/apache/geronimo/jetty6/cluster/wadi/builder/WADIJettyClusteringBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6-clustering-builder-wadi/src/main/java/org/apache/geronimo/jetty6/cluster/wadi/builder/WADIJettyClusteringBuilder.java?view=diff&rev=453239&r1=453238&r2=453239
==============================================================================
--- geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6-clustering-builder-wadi/src/main/java/org/apache/geronimo/jetty6/cluster/wadi/builder/WADIJettyClusteringBuilder.java (original)
+++ geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6-clustering-builder-wadi/src/main/java/org/apache/geronimo/jetty6/cluster/wadi/builder/WADIJettyClusteringBuilder.java Thu Oct  5 06:50:51 2006
@@ -23,6 +23,7 @@
 import javax.xml.namespace.QName;
 
 import org.apache.geronimo.clustering.wadi.BasicWADISessionManager;
+import org.apache.geronimo.clustering.wadi.WADISessionManagerConfigInfo;
 import org.apache.geronimo.common.DeploymentException;
 import org.apache.geronimo.deployment.DeploymentContext;
 import org.apache.geronimo.deployment.NamespaceDrivenBuilder;
@@ -33,8 +34,6 @@
 import org.apache.geronimo.gbean.GBeanData;
 import org.apache.geronimo.gbean.GBeanInfo;
 import org.apache.geronimo.gbean.GBeanInfoBuilder;
-import org.apache.geronimo.j2ee.deployment.EARContext;
-import org.apache.geronimo.j2ee.deployment.WebModule;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
 import org.apache.geronimo.jetty6.JettyWebAppContext;
 import org.apache.geronimo.jetty6.cluster.ClusteredSessionHandlerFactory;
@@ -96,7 +95,7 @@
         if (clusteringWadiType != null) {
             GBeanData webModuleData = extractWebModule(moduleContext);
             try {
-                AbstractName sessionManagerName = addSessionManager(clusteringWadiType, moduleContext);
+                AbstractName sessionManagerName = addSessionManager(clusteringWadiType, webModuleData, moduleContext);
                 addSessionHandlerFactory(moduleContext, webModuleData, sessionManagerName);
                 addPreHandlerFactory(moduleContext, webModuleData, sessionManagerName);
             } catch (GBeanAlreadyExistsException e) {
@@ -131,42 +130,14 @@
         return null;
     }
 
-    public boolean canConfigure(XmlObject clusteringXmlObject) {
-        return null == clusteringXmlObject || clusteringXmlObject instanceof GerClusteringWadiType;
-    }
-
-    public void configureEnvironment(XmlObject clusteringXmlObject, Environment environment) throws DeploymentException {
-        if (false == canConfigure(clusteringXmlObject)) {
-            throw new DeploymentException("Builder does not support [" + clusteringXmlObject + "]");
-        }
-
-        EnvironmentBuilder.mergeEnvironments(environment, defaultEnvironment);
-    }
-
-    public void configureJettyWebAppContext(XmlObject clusteringXmlObject, WebModule module, GBeanData webModuleData)
-        throws DeploymentException, GBeanAlreadyExistsException {
-        if (null == clusteringXmlObject) {
-            clusteringXmlObject = GerClusteringWadiType.Factory.newInstance();
-        }
-        if (!(clusteringXmlObject instanceof GerClusteringWadiType)) {
-            throw new DeploymentException("Builder does not support [" + clusteringXmlObject + "]");
-        }
-        GerClusteringWadiType clustering = (GerClusteringWadiType) clusteringXmlObject;
-
-        EARContext moduleContext = module.getEarContext();
-
-        AbstractName sessionManagerName = addSessionManager(clustering, moduleContext);
-        addSessionHandlerFactory(moduleContext, webModuleData, sessionManagerName);
-        addPreHandlerFactory(moduleContext, webModuleData, sessionManagerName);
-    }
-
-    private AbstractName addSessionManager(GerClusteringWadiType clustering, DeploymentContext moduleContext) throws GBeanAlreadyExistsException {
+    private AbstractName addSessionManager(GerClusteringWadiType clustering, GBeanData webModuleData,
+            DeploymentContext moduleContext) throws GBeanAlreadyExistsException {
         AbstractName name = moduleContext.getNaming().createChildName(moduleContext.getModuleName(),
                 "WADISessionManager", NameFactory.GERONIMO_SERVICE);
 
         GBeanData beanData = new GBeanData(name, BasicWADISessionManager.GBEAN_INFO);
-        setSweepInterval(clustering, beanData);
-        setNumPartitions(clustering, beanData);
+
+        setConfigInfo(clustering, webModuleData, beanData);
         setReplicationManagerFactory(clustering, beanData);
         setReplicaStorageFactory(clustering, beanData);
         setBackingStrategyFactory(clustering, beanData);
@@ -176,6 +147,28 @@
 
         return name;
     }
+    
+    private void setConfigInfo(GerClusteringWadiType clustering, GBeanData webModuleData, GBeanData beanData) {
+        int sweepInterval = defaultSweepInterval;
+        if (clustering.isSetSweepInterval()) {
+            sweepInterval = clustering.getSweepInterval().intValue();
+        }
+        int numPartitions = defaultNumPartitions;
+        if (clustering.isSetNumPartitions()) {
+            numPartitions = clustering.getNumPartitions().intValue();
+        }
+        Integer sessionTimeout = (Integer) webModuleData.getAttribute(JettyWebAppContext.GBEAN_ATTR_SESSION_TIMEOUT);
+        if (null == sessionTimeout) {
+            throw new AssertionError();
+        }
+        
+        WADISessionManagerConfigInfo configInfo = new WADISessionManagerConfigInfo(
+                beanData.getAbstractName().toURI(),
+                sweepInterval,
+                numPartitions,
+                sessionTimeout.intValue());
+        beanData.setAttribute(BasicWADISessionManager.GBEAN_ATTR_WADI_CONFIG_INFO, configInfo);
+    }
 
     private void setDispatcher(GerClusteringWadiType clustering, GBeanData beanData) {
         Set patterns = new HashSet();
@@ -215,22 +208,6 @@
             patterns.add(defaultRepManagerFactoryName);
         }
         beanData.setReferencePatterns(BasicWADISessionManager.GBEAN_REF_REPLICATION_MANAGER_FACTORY, patterns);
-    }
-
-    private void setNumPartitions(GerClusteringWadiType clustering, GBeanData beanData) {
-        int numPartitions = defaultNumPartitions;
-        if (clustering.isSetNumPartitions()) {
-            numPartitions = clustering.getNumPartitions().intValue();
-        }
-        beanData.setAttribute(BasicWADISessionManager.GBEAN_ATTR_NUM_PARTITIONS, new Integer(numPartitions));
-    }
-
-    private void setSweepInterval(GerClusteringWadiType clustering, GBeanData beanData) {
-        int sweepInterval = defaultSweepInterval;
-        if (clustering.isSetSweepInterval()) {
-            sweepInterval = clustering.getSweepInterval().intValue();
-        }
-        beanData.setAttribute(BasicWADISessionManager.GBEAN_ATTR_SWEEP_INTERVAL, new Integer(sweepInterval));
     }
 
     private AbstractName addPreHandlerFactory(DeploymentContext moduleContext,

Modified: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyWebAppContext.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyWebAppContext.java?view=diff&rev=453239&r1=453238&r2=453239
==============================================================================
--- geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyWebAppContext.java (original)
+++ geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyWebAppContext.java Thu Oct  5 06:50:51 2006
@@ -491,6 +491,9 @@
     }
 
     public static final GBeanInfo GBEAN_INFO;
+    
+    public static final String GBEAN_ATTR_SESSION_TIMEOUT = "sessionTimeoutSeconds";
+    
     public static final String GBEAN_REF_SESSION_HANDLER_FACTORY = "SessionHandlerFactory";
     public static final String GBEAN_REF_PRE_HANDLER_FACTORY = "PreHandlerFactory";
 
@@ -511,7 +514,7 @@
         infoBuilder.addAttribute("authenticator", Authenticator.class, true);
         infoBuilder.addAttribute("realmName", String.class, true);
         infoBuilder.addAttribute("tagLibMap", Map.class, true);
-        infoBuilder.addAttribute("sessionTimeoutSeconds", int.class, true);
+        infoBuilder.addAttribute(GBEAN_ATTR_SESSION_TIMEOUT, int.class, true);
         infoBuilder.addReference(GBEAN_REF_SESSION_HANDLER_FACTORY, SessionHandlerFactory.class,
                 NameFactory.GERONIMO_SERVICE);
         infoBuilder.addReference(GBEAN_REF_PRE_HANDLER_FACTORY, PreHandlerFactory.class, NameFactory.GERONIMO_SERVICE);
@@ -569,7 +572,7 @@
                 "authenticator",
                 "realmName",
                 "tagLibMap",
-                "sessionTimeoutSeconds",
+                GBEAN_ATTR_SESSION_TIMEOUT,
                 GBEAN_REF_SESSION_HANDLER_FACTORY,
                 GBEAN_REF_PRE_HANDLER_FACTORY,