You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jg...@apache.org on 2005/11/14 00:36:29 UTC
svn commit: r344006 - in /geronimo/trunk/modules: assembly/
assembly/src/plan/ tomcat-builder/
tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/
tomcat-builder/src/schema/ tomcat/
tomcat/src/java/org/apache/geronimo/tomcat/ tomcat/src/java...
Author: jgenender
Date: Sun Nov 13 15:36:16 2005
New Revision: 344006
URL: http://svn.apache.org/viewcvs?rev=344006&view=rev
Log:
Clustering GBeans and for Tomcat
Added:
geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/
geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/CatalinaClusterGBean.java
geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/ClusterDeployerGBean.java
geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/MembershipServiceGBean.java
geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/MessageListenerGBean.java
geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/ReceiverGBean.java
geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/SenderGBean.java
Modified:
geronimo/trunk/modules/assembly/project.xml
geronimo/trunk/modules/assembly/src/plan/j2ee-deployer-plan.xml
geronimo/trunk/modules/assembly/src/plan/j2ee-tomcat-plan.xml
geronimo/trunk/modules/tomcat-builder/project.xml
geronimo/trunk/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
geronimo/trunk/modules/tomcat-builder/src/schema/geronimo-tomcat-1.0.xsd
geronimo/trunk/modules/tomcat-builder/src/schema/geronimo-tomcat-config-1.0.xsd
geronimo/trunk/modules/tomcat/project.xml
geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/EngineGBean.java
geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java
geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/HostGBean.java
geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/TomcatContext.java
geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java
Modified: geronimo/trunk/modules/assembly/project.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/assembly/project.xml?rev=344006&r1=344005&r2=344006&view=diff
==============================================================================
--- geronimo/trunk/modules/assembly/project.xml (original)
+++ geronimo/trunk/modules/assembly/project.xml Sun Nov 13 15:36:16 2005
@@ -975,7 +975,7 @@
</dependency>
<dependency>
<groupId>tomcat</groupId>
- <artifactId>catalina</artifactId>
+ <artifactId>catalina-cluster</artifactId>
<version>${tomcat_version}</version>
<url>http://jakarta.apache.org/tomcat/</url>
<properties>
Modified: geronimo/trunk/modules/assembly/src/plan/j2ee-deployer-plan.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/assembly/src/plan/j2ee-deployer-plan.xml?rev=344006&r1=344005&r2=344006&view=diff
==============================================================================
--- geronimo/trunk/modules/assembly/src/plan/j2ee-deployer-plan.xml (original)
+++ geronimo/trunk/modules/assembly/src/plan/j2ee-deployer-plan.xml Sun Nov 13 15:36:16 2005
@@ -165,6 +165,9 @@
<uri>tomcat/jars/catalina-${tomcat_version}.jar</uri>
</dependency>
<dependency>
+ <uri>tomcat/jars/catalina-cluster-${tomcat_version}.jar</uri>
+ </dependency>
+ <dependency>
<uri>tomcat/jars/catalina-optional-${tomcat_version}.jar</uri>
</dependency>
<dependency>
Modified: geronimo/trunk/modules/assembly/src/plan/j2ee-tomcat-plan.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/assembly/src/plan/j2ee-tomcat-plan.xml?rev=344006&r1=344005&r2=344006&view=diff
==============================================================================
--- geronimo/trunk/modules/assembly/src/plan/j2ee-tomcat-plan.xml (original)
+++ geronimo/trunk/modules/assembly/src/plan/j2ee-tomcat-plan.xml Sun Nov 13 15:36:16 2005
@@ -34,6 +34,9 @@
<uri>tomcat/jars/catalina-${tomcat_version}.jar</uri>
</dependency>
<dependency>
+ <uri>tomcat/jars/catalina-cluster-${tomcat_version}.jar</uri>
+ </dependency>
+ <dependency>
<uri>tomcat/jars/catalina-optional-${tomcat_version}.jar</uri>
</dependency>
<dependency>
Modified: geronimo/trunk/modules/tomcat-builder/project.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/project.xml?rev=344006&r1=344005&r2=344006&view=diff
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/project.xml (original)
+++ geronimo/trunk/modules/tomcat-builder/project.xml Sun Nov 13 15:36:16 2005
@@ -363,6 +363,16 @@
<dependency>
<groupId>tomcat</groupId>
+ <artifactId>catalina-cluster</artifactId>
+ <version>${tomcat_version}</version>
+ <url>http://jakarta.apache.org/tomcat/</url>
+ <properties>
+ <repository>true</repository>
+ </properties>
+ </dependency>
+
+ <dependency>
+ <groupId>tomcat</groupId>
<artifactId>catalina-optional</artifactId>
<version>${tomcat_version}</version>
<url>http://jakarta.apache.org/tomcat/</url>
Modified: geronimo/trunk/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java?rev=344006&r1=344005&r2=344006&view=diff
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java (original)
+++ geronimo/trunk/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java Sun Nov 13 15:36:16 2005
@@ -84,6 +84,7 @@
import org.apache.geronimo.tomcat.TomcatClassLoader;
import org.apache.geronimo.tomcat.TomcatWebAppContext;
import org.apache.geronimo.tomcat.ValveGBean;
+import org.apache.geronimo.tomcat.cluster.CatalinaClusterGBean;
import org.apache.geronimo.tomcat.util.SecurityHolder;
import org.apache.geronimo.transaction.context.OnlineUserTransaction;
import org.apache.geronimo.web.deployment.GenericToSpecificPlanConverter;
@@ -467,7 +468,12 @@
ObjectName valveName = NameFactory.getComponentName(null, null, null, null, valveChain, ValveGBean.J2EE_TYPE, moduleJ2eeContext);
webModuleData.setReferencePattern("TomcatValveChain", valveName);
}
-
+
+ if (tomcatWebApp.isSetCluster()) {
+ String cluster = tomcatWebApp.getCluster().trim();
+ ObjectName clusterName = NameFactory.getComponentName(null, null, null, null, cluster, CatalinaClusterGBean.J2EE_TYPE, moduleJ2eeContext);
+ webModuleData.setReferencePattern("Cluster", clusterName);
+ }
Map portMap = webModule.getPortMap();
Modified: geronimo/trunk/modules/tomcat-builder/src/schema/geronimo-tomcat-1.0.xsd
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/schema/geronimo-tomcat-1.0.xsd?rev=344006&r1=344005&r2=344006&view=diff
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/schema/geronimo-tomcat-1.0.xsd (original)
+++ geronimo/trunk/modules/tomcat-builder/src/schema/geronimo-tomcat-1.0.xsd Sun Nov 13 15:36:16 2005
@@ -48,7 +48,8 @@
<xs:element name="cross-context" type="tomcat:emptyType" minOccurs="0"/>
<xs:element name="valve-chain" type="xs:string" minOccurs="0"/>
<xs:element name="tomcat-realm" type="xs:string" minOccurs="0"/>
-
+ <xs:element name="cluster" type="xs:string" minOccurs="0"/>
+
<xs:group ref="naming:jndiEnvironmentRefsGroup"/>
<xs:element ref="naming:message-destination" minOccurs="0" maxOccurs="unbounded"/>
Modified: geronimo/trunk/modules/tomcat-builder/src/schema/geronimo-tomcat-config-1.0.xsd
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/schema/geronimo-tomcat-config-1.0.xsd?rev=344006&r1=344005&r2=344006&view=diff
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/schema/geronimo-tomcat-config-1.0.xsd (original)
+++ geronimo/trunk/modules/tomcat-builder/src/schema/geronimo-tomcat-config-1.0.xsd Sun Nov 13 15:36:16 2005
@@ -32,6 +32,7 @@
<xs:element name="cross-context" type="tomcat:emptyType" minOccurs="0"/>
<xs:element name="valve-chain" type="xs:string" minOccurs="0"/>
<xs:element name="tomcat-realm" type="xs:string" minOccurs="0"/>
+ <xs:element name="cluster" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
Modified: geronimo/trunk/modules/tomcat/project.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat/project.xml?rev=344006&r1=344005&r2=344006&view=diff
==============================================================================
--- geronimo/trunk/modules/tomcat/project.xml (original)
+++ geronimo/trunk/modules/tomcat/project.xml Sun Nov 13 15:36:16 2005
@@ -194,6 +194,15 @@
<geronimo.dependency>true</geronimo.dependency>
</properties>
</dependency>
+ <dependency>
+ <groupId>tomcat</groupId>
+ <artifactId>catalina-cluster</artifactId>
+ <version>${tomcat_version}</version>
+ <url>http://jakarta.apache.org/tomcat/</url>
+ <properties>
+ <geronimo.dependency>true</geronimo.dependency>
+ </properties>
+ </dependency>
<!--
- Required until any realm is provided to Tomcat
- See StandardEngine::getRealm()
Modified: geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/EngineGBean.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/EngineGBean.java?rev=344006&r1=344005&r2=344006&view=diff
==============================================================================
--- geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/EngineGBean.java (original)
+++ geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/EngineGBean.java Sun Nov 13 15:36:16 2005
@@ -20,10 +20,12 @@
import java.util.Iterator;
import java.util.Map;
+import org.apache.catalina.Cluster;
import org.apache.catalina.Engine;
import org.apache.catalina.Host;
import org.apache.catalina.Realm;
import org.apache.catalina.Valve;
+import org.apache.catalina.cluster.CatalinaCluster;
import org.apache.catalina.core.StandardEngine;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -34,6 +36,7 @@
import org.apache.geronimo.gbean.ReferenceCollectionListener;
import org.apache.geronimo.gbean.ReferenceCollectionEvent;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.tomcat.cluster.CatalinaClusterGBean;
/**
* @version $Rev$ $Date$
@@ -51,7 +54,8 @@
Map initParams,
Collection hosts,
ObjectRetriever realmGBean,
- ValveGBean tomcatValveChain) throws Exception {
+ ValveGBean tomcatValveChain,
+ CatalinaClusterGBean clusterGBean) throws Exception {
super(); // TODO: make it an attribute
if (className == null){
@@ -114,6 +118,11 @@
addHost(objRetriever);
}
+
+ //Add clustering
+ if (clusterGBean != null){
+ engine.setCluster((Cluster)clusterGBean.getInternalObject());
+ }
}
private void removeHost(ObjectRetriever objRetriever) {
@@ -156,8 +165,15 @@
infoFactory.addReference("Hosts", ObjectRetriever.class, HostGBean.J2EE_TYPE);
infoFactory.addReference("RealmGBean", ObjectRetriever.class, NameFactory.GERONIMO_SERVICE);
infoFactory.addReference("TomcatValveChain", ValveGBean.class, ValveGBean.J2EE_TYPE);
+ infoFactory.addReference("CatalinaCluster", CatalinaClusterGBean.class, CatalinaClusterGBean.J2EE_TYPE);
infoFactory.addOperation("getInternalObject");
- infoFactory.setConstructor(new String[] { "className", "initParams", "Hosts", "RealmGBean", "TomcatValveChain" });
+ infoFactory.setConstructor(new String[] {
+ "className",
+ "initParams",
+ "Hosts",
+ "RealmGBean",
+ "TomcatValveChain",
+ "CatalinaCluster" });
GBEAN_INFO = infoFactory.getBeanInfo();
}
Modified: geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java?rev=344006&r1=344005&r2=344006&view=diff
==============================================================================
--- geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java (original)
+++ geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java Sun Nov 13 15:36:16 2005
@@ -31,6 +31,7 @@
import org.apache.catalina.Valve;
import org.apache.catalina.Wrapper;
import org.apache.catalina.Pipeline;
+import org.apache.catalina.cluster.CatalinaCluster;
import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
import org.apache.catalina.valves.ValveBase;
@@ -165,6 +166,11 @@
addValve(valve);
}
}
+
+ CatalinaCluster cluster = ctx.getCluster();
+ if (cluster != null)
+ this.setCluster(cluster);
+
pipelineInitialized = true;
this.webServiceMap = ctx.getWebServices();
Modified: geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/HostGBean.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/HostGBean.java?rev=344006&r1=344005&r2=344006&view=diff
==============================================================================
--- geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/HostGBean.java (original)
+++ geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/HostGBean.java Sun Nov 13 15:36:16 2005
@@ -21,6 +21,7 @@
import java.util.Iterator;
import java.util.Map;
+import org.apache.catalina.Cluster;
import org.apache.catalina.Host;
import org.apache.catalina.Realm;
import org.apache.catalina.Valve;
@@ -31,6 +32,7 @@
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.gbean.GBeanLifecycle;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.tomcat.cluster.CatalinaClusterGBean;
/**
* @version $Rev$ $Date$
@@ -49,7 +51,8 @@
Map initParams,
ArrayList aliases,
ObjectRetriever realmGBean,
- ValveGBean tomcatValveChain) throws Exception {
+ ValveGBean tomcatValveChain,
+ CatalinaClusterGBean clusterGBean) throws Exception {
super(); // TODO: make it an attribute
//Validate
@@ -98,7 +101,11 @@
}
}
}
-
+
+ //Add clustering
+ if (clusterGBean != null){
+ host.setCluster((Cluster)clusterGBean.getInternalObject());
+ }
}
public Object getInternalObject() {
@@ -126,8 +133,15 @@
infoFactory.addAttribute("aliases", ArrayList.class, true);
infoFactory.addReference("RealmGBean", ObjectRetriever.class, NameFactory.GERONIMO_SERVICE);
infoFactory.addReference("TomcatValveChain", ValveGBean.class, ValveGBean.J2EE_TYPE);
+ infoFactory.addReference("CatalinaCluster", CatalinaClusterGBean.class, CatalinaClusterGBean.J2EE_TYPE);
infoFactory.addOperation("getInternalObject");
- infoFactory.setConstructor(new String[] { "className", "initParams", "aliases", "RealmGBean", "TomcatValveChain" });
+ infoFactory.setConstructor(new String[] {
+ "className",
+ "initParams",
+ "aliases",
+ "RealmGBean",
+ "TomcatValveChain",
+ "CatalinaCluster" });
GBEAN_INFO = infoFactory.getBeanInfo();
}
Modified: geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/TomcatContext.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/TomcatContext.java?rev=344006&r1=344005&r2=344006&view=diff
==============================================================================
--- geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/TomcatContext.java (original)
+++ geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/TomcatContext.java Sun Nov 13 15:36:16 2005
@@ -22,6 +22,7 @@
import org.apache.catalina.Context;
import org.apache.catalina.Realm;
+import org.apache.catalina.cluster.CatalinaCluster;
import org.apache.geronimo.kernel.Kernel;
import org.apache.geronimo.tomcat.util.SecurityHolder;
import org.apache.geronimo.transaction.TrackedConnectionAssociator;
@@ -61,6 +62,8 @@
public Realm getRealm();
public List getValveChain();
+
+ public CatalinaCluster getCluster();
public boolean isCrossContext();
Modified: geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java?rev=344006&r1=344005&r2=344006&view=diff
==============================================================================
--- geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java (original)
+++ geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java Sun Nov 13 15:36:16 2005
@@ -30,6 +30,7 @@
import org.apache.catalina.Context;
import org.apache.catalina.Realm;
import org.apache.catalina.Valve;
+import org.apache.catalina.cluster.CatalinaCluster;
import org.apache.catalina.core.StandardContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -37,13 +38,14 @@
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.gbean.GBeanLifecycle;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
-import org.apache.geronimo.management.J2EEApplication;
-import org.apache.geronimo.management.J2EEServer;
-import org.apache.geronimo.management.geronimo.WebModule;
import org.apache.geronimo.j2ee.management.impl.InvalidObjectNameException;
import org.apache.geronimo.kernel.Kernel;
import org.apache.geronimo.kernel.jmx.JMXUtil;
+import org.apache.geronimo.management.J2EEApplication;
+import org.apache.geronimo.management.J2EEServer;
+import org.apache.geronimo.management.geronimo.WebModule;
import org.apache.geronimo.security.jacc.RoleDesignateSource;
+import org.apache.geronimo.tomcat.cluster.CatalinaClusterGBean;
import org.apache.geronimo.tomcat.util.SecurityHolder;
import org.apache.geronimo.transaction.TrackedConnectionAssociator;
import org.apache.geronimo.transaction.context.OnlineUserTransaction;
@@ -75,6 +77,8 @@
private final Realm realm;
private final List valveChain;
+
+ private final CatalinaCluster catalinaCluster;
private final boolean crossContext;
@@ -124,6 +128,7 @@
RoleDesignateSource roleDesignateSource,
ObjectRetriever tomcatRealm,
ValveGBean tomcatValveChain,
+ CatalinaClusterGBean cluster,
boolean crossContext,
Map webServices,
J2EEServer server,
@@ -188,6 +193,12 @@
} else {
valveChain = null;
}
+
+ //Add the cluster
+ if (cluster != null)
+ catalinaCluster = (CatalinaCluster)cluster.getInternalObject();
+ else
+ catalinaCluster = null;
this.crossContext = crossContext;
@@ -311,6 +322,10 @@
return valveChain;
}
+ public CatalinaCluster getCluster() {
+ return catalinaCluster;
+ }
+
public boolean isCrossContext() {
return crossContext;
}
@@ -429,6 +444,7 @@
infoBuilder.addReference("RoleDesignateSource", RoleDesignateSource.class, NameFactory.JACC_MANAGER);
infoBuilder.addReference("TomcatRealm", ObjectRetriever.class);
infoBuilder.addReference("TomcatValveChain", ValveGBean.class);
+ infoBuilder.addReference("Cluster", CatalinaClusterGBean.class);
infoBuilder.addAttribute("crossContext", boolean.class, true);
infoBuilder.addAttribute("webServices", Map.class, true);
infoBuilder.addReference("J2EEServer", J2EEServer.class);
@@ -457,6 +473,7 @@
"RoleDesignateSource",
"TomcatRealm",
"TomcatValveChain",
+ "Cluster",
"crossContext",
"webServices",
"J2EEServer",
Added: geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/CatalinaClusterGBean.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/CatalinaClusterGBean.java?rev=344006&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/CatalinaClusterGBean.java (added)
+++ geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/CatalinaClusterGBean.java Sun Nov 13 15:36:16 2005
@@ -0,0 +1,153 @@
+/**
+*
+* Copyright 2003-2005 The Apache Software Foundation
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.geronimo.tomcat.cluster;
+
+import java.util.Map;
+
+import org.apache.catalina.Valve;
+import org.apache.catalina.cluster.CatalinaCluster;
+import org.apache.catalina.cluster.ClusterDeployer;
+import org.apache.catalina.cluster.ClusterReceiver;
+import org.apache.catalina.cluster.ClusterSender;
+import org.apache.catalina.cluster.MembershipService;
+import org.apache.catalina.cluster.MessageListener;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.gbean.GBeanLifecycle;
+import org.apache.geronimo.tomcat.BaseGBean;
+import org.apache.geronimo.tomcat.ObjectRetriever;
+import org.apache.geronimo.tomcat.ValveGBean;
+
+/**
+* @version $Rev: 233391 $ $Date: 2005-08-18 16:38:47 -0600 (Thu, 18 Aug 2005) $
+*/
+public class CatalinaClusterGBean extends BaseGBean implements GBeanLifecycle, ObjectRetriever {
+
+ private static final Log log = LogFactory.getLog(CatalinaClusterGBean.class);
+
+ public static final String J2EE_TYPE = "Cluster";
+
+ private final CatalinaCluster cluster;
+
+ public CatalinaClusterGBean(String className,
+ Map initParams,
+ MembershipServiceGBean membership,
+ ReceiverGBean receiver,
+ SenderGBean sender,
+ MessageListenerGBean messageListenerChain,
+ ValveGBean tomcatValveChain,
+ ClusterDeployerGBean deployer) throws Exception {
+
+ super(); // TODO: make it an attribute
+
+ //Validate
+ if (className == null){
+ throw new IllegalArgumentException("Must have a 'className' attribute.");
+ }
+
+ //Create the CatalinaCluster object
+ cluster = (CatalinaCluster)Class.forName(className).newInstance();
+
+ //Set the parameters
+ setParameters(cluster, initParams);
+
+ //Add the MembershipService
+ if (membership != null){
+ cluster.setMembershipService((MembershipService)membership.getInternalObject());
+ }
+
+ //Add Receiver
+ if (receiver != null){
+ cluster.setClusterReceiver((ClusterReceiver)receiver.getInternalObject());
+ }
+
+ //Add Sender
+ if (sender != null){
+ cluster.setClusterSender((ClusterSender)sender.getInternalObject());
+ }
+
+ //Add the message listeners list
+ if (messageListenerChain != null){
+ MessageListenerGBean messageListenerGBean = messageListenerChain;
+ while(messageListenerGBean != null){
+ cluster.addClusterListener((MessageListener)messageListenerGBean.getInternalObject());
+ messageListenerGBean = messageListenerGBean.getNextValve();
+ }
+ }
+
+ //Add the valve list
+ if (tomcatValveChain != null){
+ ValveGBean valveGBean = tomcatValveChain;
+ while(valveGBean != null){
+ cluster.addValve((Valve)valveGBean.getInternalObject());
+ valveGBean = valveGBean.getNextValve();
+ }
+ }
+
+ //Add deployer
+ if (deployer != null){
+ cluster.setClusterDeployer((ClusterDeployer)deployer.getInternalObject());
+ }
+ }
+
+ public Object getInternalObject() {
+ return cluster;
+ }
+
+ public void doFail() {
+ log.info("Failed");
+ }
+
+ public void doStart() throws Exception {
+ log.info("Started cluster gbean.");
+ }
+
+ public void doStop() throws Exception {
+ log.info("Stopped cluster gbean.");
+ }
+
+ public static final GBeanInfo GBEAN_INFO;
+
+ static {
+ GBeanInfoBuilder infoFactory = new GBeanInfoBuilder("CatalinaCluster", CatalinaClusterGBean.class, J2EE_TYPE);
+ infoFactory.addAttribute("className", String.class, true);
+ infoFactory.addAttribute("initParams", Map.class, true);
+ infoFactory.addReference("Membership", MembershipServiceGBean.class, MembershipServiceGBean.J2EE_TYPE);
+ infoFactory.addReference("Receiver", ReceiverGBean.class, ReceiverGBean.J2EE_TYPE);
+ infoFactory.addReference("Sender", SenderGBean.class, SenderGBean.J2EE_TYPE);
+ infoFactory.addReference("MessageListenerChain", MessageListenerGBean.class, MessageListenerGBean.J2EE_TYPE);
+ infoFactory.addReference("TomcatValveChain", ValveGBean.class, ValveGBean.J2EE_TYPE);
+ infoFactory.addReference("ClusterDeployer", ClusterDeployerGBean.class, ClusterDeployerGBean.J2EE_TYPE);
+ infoFactory.addOperation("getInternalObject");
+ infoFactory.setConstructor(new String[] {
+ "className",
+ "initParams",
+ "Membership",
+ "Receiver",
+ "Sender",
+ "MessageListenerChain",
+ "TomcatValveChain",
+ "ClusterDeployer" });
+ GBEAN_INFO = infoFactory.getBeanInfo();
+ }
+
+ public static GBeanInfo getGBeanInfo() {
+ return GBEAN_INFO;
+ }
+}
Added: geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/ClusterDeployerGBean.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/ClusterDeployerGBean.java?rev=344006&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/ClusterDeployerGBean.java (added)
+++ geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/ClusterDeployerGBean.java Sun Nov 13 15:36:16 2005
@@ -0,0 +1,89 @@
+/**
+*
+* Copyright 2003-2005 The Apache Software Foundation
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.geronimo.tomcat.cluster;
+
+import java.util.Map;
+
+import org.apache.catalina.cluster.ClusterDeployer;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.gbean.GBeanLifecycle;
+import org.apache.geronimo.tomcat.BaseGBean;
+import org.apache.geronimo.tomcat.ObjectRetriever;
+
+public class ClusterDeployerGBean extends BaseGBean implements
+ GBeanLifecycle, ObjectRetriever {
+
+ private static final Log log = LogFactory
+ .getLog(MembershipServiceGBean.class);
+
+ public static final String J2EE_TYPE = "MembershipService";
+
+ private final ClusterDeployer deployer;
+
+ public ClusterDeployerGBean(String className, Map initParams) throws Exception {
+
+ super(); // TODO: make it an attribute
+
+ // Validate
+ if (className == null) {
+ throw new IllegalArgumentException(
+ "Must have a 'className' attribute.");
+ }
+
+ // Create the CatalinaCluster object
+ deployer = (ClusterDeployer) Class.forName(className).newInstance();
+
+ // Set the parameters
+ setParameters(deployer, initParams);
+
+ }
+
+ public Object getInternalObject() {
+ return deployer;
+ }
+
+ public void doFail() {
+ log.info("Failed");
+ }
+
+ public void doStart() throws Exception {
+ log.info("Started ClusterDeployer gbean.");
+ }
+
+ public void doStop() throws Exception {
+ log.info("Stopped ClusterDeployer gbean.");
+ }
+
+ public static final GBeanInfo GBEAN_INFO;
+
+ static {
+ GBeanInfoBuilder infoFactory = new GBeanInfoBuilder("ClusterDeployer",
+ ClusterDeployerGBean.class, J2EE_TYPE);
+ infoFactory.addAttribute("className", String.class, true);
+ infoFactory.addAttribute("initParams", Map.class, true);
+ infoFactory.addOperation("getInternalObject");
+ infoFactory.setConstructor(new String[] { "className", "initParams" });
+ GBEAN_INFO = infoFactory.getBeanInfo();
+ }
+
+ public static GBeanInfo getGBeanInfo() {
+ return GBEAN_INFO;
+ }
+}
Added: geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/MembershipServiceGBean.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/MembershipServiceGBean.java?rev=344006&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/MembershipServiceGBean.java (added)
+++ geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/MembershipServiceGBean.java Sun Nov 13 15:36:16 2005
@@ -0,0 +1,89 @@
+/**
+*
+* Copyright 2003-2005 The Apache Software Foundation
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.geronimo.tomcat.cluster;
+
+import java.util.Map;
+
+import org.apache.catalina.cluster.MembershipService;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.gbean.GBeanLifecycle;
+import org.apache.geronimo.tomcat.BaseGBean;
+import org.apache.geronimo.tomcat.ObjectRetriever;
+
+public class MembershipServiceGBean extends BaseGBean implements
+ GBeanLifecycle, ObjectRetriever {
+
+ private static final Log log = LogFactory
+ .getLog(MembershipServiceGBean.class);
+
+ public static final String J2EE_TYPE = "MembershipService";
+
+ private final MembershipService membership;
+
+ public MembershipServiceGBean(String className, Map initParams) throws Exception {
+
+ super(); // TODO: make it an attribute
+
+ // Validate
+ if (className == null) {
+ throw new IllegalArgumentException(
+ "Must have a 'className' attribute.");
+ }
+
+ // Create the CatalinaCluster object
+ membership = (MembershipService) Class.forName(className).newInstance();
+
+ // Set the parameters
+ setParameters(membership, initParams);
+
+ }
+
+ public Object getInternalObject() {
+ return membership;
+ }
+
+ public void doFail() {
+ log.info("Failed");
+ }
+
+ public void doStart() throws Exception {
+ log.info("Started membership service gbean.");
+ }
+
+ public void doStop() throws Exception {
+ log.info("Stopped MembershipService gbean.");
+ }
+
+ public static final GBeanInfo GBEAN_INFO;
+
+ static {
+ GBeanInfoBuilder infoFactory = new GBeanInfoBuilder("MembershipService",
+ MembershipServiceGBean.class, J2EE_TYPE);
+ infoFactory.addAttribute("className", String.class, true);
+ infoFactory.addAttribute("initParams", Map.class, true);
+ infoFactory.addOperation("getInternalObject");
+ infoFactory.setConstructor(new String[] { "className", "initParams" });
+ GBEAN_INFO = infoFactory.getBeanInfo();
+ }
+
+ public static GBeanInfo getGBeanInfo() {
+ return GBEAN_INFO;
+ }
+}
Added: geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/MessageListenerGBean.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/MessageListenerGBean.java?rev=344006&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/MessageListenerGBean.java (added)
+++ geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/MessageListenerGBean.java Sun Nov 13 15:36:16 2005
@@ -0,0 +1,98 @@
+package org.apache.geronimo.tomcat.cluster;
+
+import java.util.Map;
+
+import org.apache.catalina.cluster.MessageListener;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.gbean.GBeanLifecycle;
+import org.apache.geronimo.tomcat.BaseGBean;
+import org.apache.geronimo.tomcat.ObjectRetriever;
+
+public class MessageListenerGBean extends BaseGBean implements GBeanLifecycle, ObjectRetriever {
+
+ private static final Log log = LogFactory.getLog(MessageListenerGBean.class);
+
+ public static final String J2EE_TYPE = "MessageListener";
+
+ private final MessageListener listener;
+ private final MessageListenerGBean nextListener;
+ private final String className;
+
+
+ public MessageListenerGBean(){
+ listener = null;
+ nextListener = null;
+ className = null;
+ }
+
+ public MessageListenerGBean(String className, Map initParams, MessageListenerGBean nextListener) throws Exception{
+
+ //Validate
+ if (className == null){
+ throw new IllegalArgumentException("className cannot be null.");
+ }
+
+ if (nextListener != null){
+ if (!(nextListener.getInternalObject() instanceof MessageListener)){
+ throw new IllegalArgumentException("nextListener is not of type MessageListener.");
+ }
+
+ this.nextListener = nextListener;
+ } else {
+ this.nextListener = null;
+ }
+
+ this.className = className;
+
+ //Create the Valve object
+ listener = (MessageListener)Class.forName(className).newInstance();
+
+ //Set the parameters
+ setParameters(listener, initParams);
+
+ }
+
+ public void doStart() throws Exception {
+ log.info(className + " started.");
+ }
+
+ public void doStop() throws Exception {
+ log.info(className + " stopped.");
+ }
+
+ public void doFail() {
+ log.info(className + " failed.");
+ }
+
+ public Object getInternalObject() {
+ return listener;
+ }
+
+ public MessageListenerGBean getNextValve() {
+ return nextListener;
+ }
+
+ public static final GBeanInfo GBEAN_INFO;
+
+ static {
+ GBeanInfoBuilder infoFactory = new GBeanInfoBuilder(MessageListenerGBean.class, J2EE_TYPE);
+ infoFactory.addAttribute("className", String.class, true);
+ infoFactory.addAttribute("initParams", Map.class, true);
+ infoFactory.addReference("NextListener", MessageListenerGBean.class, J2EE_TYPE);
+ infoFactory.addOperation("getInternalObject");
+ infoFactory.addOperation("getNextValve");
+ infoFactory.setConstructor(new String[] {
+ "className",
+ "initParams",
+ "NextListener" });
+ GBEAN_INFO = infoFactory.getBeanInfo();
+ }
+
+ public static GBeanInfo getGBeanInfo() {
+ return GBEAN_INFO;
+ }
+
+}
Added: geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/ReceiverGBean.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/ReceiverGBean.java?rev=344006&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/ReceiverGBean.java (added)
+++ geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/ReceiverGBean.java Sun Nov 13 15:36:16 2005
@@ -0,0 +1,89 @@
+/**
+*
+* Copyright 2003-2005 The Apache Software Foundation
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.geronimo.tomcat.cluster;
+
+import java.util.Map;
+
+import org.apache.catalina.cluster.ClusterReceiver;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.gbean.GBeanLifecycle;
+import org.apache.geronimo.tomcat.BaseGBean;
+import org.apache.geronimo.tomcat.ObjectRetriever;
+
+public class ReceiverGBean extends BaseGBean implements
+ GBeanLifecycle, ObjectRetriever {
+
+ private static final Log log = LogFactory
+ .getLog(MembershipServiceGBean.class);
+
+ public static final String J2EE_TYPE = "Receiver";
+
+ private final ClusterReceiver receiver;
+
+ public ReceiverGBean(String className, Map initParams) throws Exception {
+
+ super(); // TODO: make it an attribute
+
+ // Validate
+ if (className == null) {
+ throw new IllegalArgumentException(
+ "Must have a 'className' attribute.");
+ }
+
+ // Create the CatalinaCluster object
+ receiver = (ClusterReceiver) Class.forName(className).newInstance();
+
+ // Set the parameters
+ setParameters(receiver, initParams);
+
+ }
+
+ public Object getInternalObject() {
+ return receiver;
+ }
+
+ public void doFail() {
+ log.info("Failed");
+ }
+
+ public void doStart() throws Exception {
+ log.info("Started Receiver service gbean.");
+ }
+
+ public void doStop() throws Exception {
+ log.info("Stopped Receiver gbean.");
+ }
+
+ public static final GBeanInfo GBEAN_INFO;
+
+ static {
+ GBeanInfoBuilder infoFactory = new GBeanInfoBuilder("Receiver",
+ ReceiverGBean.class, J2EE_TYPE);
+ infoFactory.addAttribute("className", String.class, true);
+ infoFactory.addAttribute("initParams", Map.class, true);
+ infoFactory.addOperation("getInternalObject");
+ infoFactory.setConstructor(new String[] { "className", "initParams" });
+ GBEAN_INFO = infoFactory.getBeanInfo();
+ }
+
+ public static GBeanInfo getGBeanInfo() {
+ return GBEAN_INFO;
+ }
+}
Added: geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/SenderGBean.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/SenderGBean.java?rev=344006&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/SenderGBean.java (added)
+++ geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/cluster/SenderGBean.java Sun Nov 13 15:36:16 2005
@@ -0,0 +1,89 @@
+/**
+*
+* Copyright 2003-2005 The Apache Software Foundation
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.geronimo.tomcat.cluster;
+
+import java.util.Map;
+
+import org.apache.catalina.cluster.ClusterSender;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.gbean.GBeanLifecycle;
+import org.apache.geronimo.tomcat.BaseGBean;
+import org.apache.geronimo.tomcat.ObjectRetriever;
+
+public class SenderGBean extends BaseGBean implements
+ GBeanLifecycle, ObjectRetriever {
+
+ private static final Log log = LogFactory
+ .getLog(MembershipServiceGBean.class);
+
+ public static final String J2EE_TYPE = "Sender";
+
+ private final ClusterSender sender;
+
+ public SenderGBean(String className, Map initParams) throws Exception {
+
+ super(); // TODO: make it an attribute
+
+ // Validate
+ if (className == null) {
+ throw new IllegalArgumentException(
+ "Must have a 'className' attribute.");
+ }
+
+ // Create the CatalinaCluster object
+ sender = (ClusterSender) Class.forName(className).newInstance();
+
+ // Set the parameters
+ setParameters(sender, initParams);
+
+ }
+
+ public Object getInternalObject() {
+ return sender;
+ }
+
+ public void doFail() {
+ log.info("Failed");
+ }
+
+ public void doStart() throws Exception {
+ log.info("Started Sender service gbean.");
+ }
+
+ public void doStop() throws Exception {
+ log.info("Stopped Sender gbean.");
+ }
+
+ public static final GBeanInfo GBEAN_INFO;
+
+ static {
+ GBeanInfoBuilder infoFactory = new GBeanInfoBuilder("Sender",
+ SenderGBean.class, J2EE_TYPE);
+ infoFactory.addAttribute("className", String.class, true);
+ infoFactory.addAttribute("initParams", Map.class, true);
+ infoFactory.addOperation("getInternalObject");
+ infoFactory.setConstructor(new String[] { "className", "initParams" });
+ GBEAN_INFO = infoFactory.getBeanInfo();
+ }
+
+ public static GBeanInfo getGBeanInfo() {
+ return GBEAN_INFO;
+ }
+}