You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ge...@apache.org on 2010/02/25 03:07:07 UTC
svn commit: r916085 - in /geronimo/server/branches/2.2/plugins/openejb:
geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/
geronimo-openejb-clustering-builder-wadi/src/test/java/org/apache/geronimo/op...
Author: genspring
Date: Thu Feb 25 02:07:06 2010
New Revision: 916085
URL: http://svn.apache.org/viewvc?rev=916085&view=rev
Log:
GERONIMO-5059 unicast-based support failover for stateless session bean.
1, Added a clusterdStatelessContainer for SLSB failover.
2, Modified the openejb cluster wadi builder to handle the stateless bean.
3, Reorg the package for easier extensions.
Added:
geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/MapSessionBeanToContainerIDDeployer.java
- copied, changed from r899548, geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/MapSFSBToContainerIDDeployer.java
geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/test/java/org/apache/geronimo/openejb/deployment/cluster/MapSessionBeanToContainerIDDeployerTest.java
- copied, changed from r899548, geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/test/java/org/apache/geronimo/openejb/deployment/cluster/MapSFSBToContainerIDDeployerTest.java
geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/container/
geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/container/stateful/
geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/container/stateful/ClusteredStatefulContainer.java
- copied, changed from r899548, geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/container/ClusteredStatefulContainer.java
geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/container/stateful/WadiCache.java
- copied, changed from r899548, geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/container/WadiCache.java
geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/container/
geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/container/stateful/
- copied from r899548, geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/stateful/container/
geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/container/stateless/
geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/container/stateless/ClusteredStatelessContainerTest.java (with props)
Removed:
geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/MapSFSBToContainerIDDeployer.java
geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/test/java/org/apache/geronimo/openejb/deployment/cluster/MapSFSBToContainerIDDeployerTest.java
geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/container/
geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/deployment/
geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/stateful/container/
Modified:
geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/WADIOpenEJBClusteringBuilder.java
geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/resources/META-INF/org.apache.geronimo.openejb.cluster/service-jar.xml
geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/container/stateful/ClusteredStatefulContainerTest.java
geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/container/stateful/WadiCacheTest.java
geronimo/server/branches/2.2/plugins/openejb/openejb-clustering-builder-wadi/src/main/plan/plan.xml
geronimo/server/branches/2.2/plugins/openejb/openejb-clustering-wadi/src/main/plan/plan.xml
Copied: geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/MapSessionBeanToContainerIDDeployer.java (from r899548, geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/MapSFSBToContainerIDDeployer.java)
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/MapSessionBeanToContainerIDDeployer.java?p2=geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/MapSessionBeanToContainerIDDeployer.java&p1=geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/MapSFSBToContainerIDDeployer.java&r1=899548&r2=916085&rev=916085&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/MapSFSBToContainerIDDeployer.java (original)
+++ geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/MapSessionBeanToContainerIDDeployer.java Thu Feb 25 02:07:06 2010
@@ -25,6 +25,7 @@
import org.apache.openejb.jee.EjbJar;
import org.apache.openejb.jee.EnterpriseBean;
import org.apache.openejb.jee.SessionBean;
+import org.apache.openejb.jee.SessionType;
import org.apache.openejb.jee.oejb3.EjbDeployment;
import org.apache.openejb.jee.oejb3.OpenejbJar;
@@ -32,15 +33,17 @@
*
* @version $Rev:$ $Date:$
*/
-public class MapSFSBToContainerIDDeployer implements DynamicDeployer {
+public class MapSessionBeanToContainerIDDeployer implements DynamicDeployer {
private final String containerId;
+ private final SessionType containerSessionType;
- public MapSFSBToContainerIDDeployer(String containerId) {
+ public MapSessionBeanToContainerIDDeployer(String containerId,SessionType containerSessionType) {
if (null == containerId) {
throw new IllegalArgumentException("containerId is required");
}
this.containerId = containerId;
+ this.containerSessionType=containerSessionType;
}
public AppModule deploy(AppModule appModule) throws OpenEJBException {
@@ -51,13 +54,24 @@
if (enterpriseBean instanceof SessionBean) {
SessionBean sessionBean = (SessionBean) enterpriseBean;
switch (sessionBean.getSessionType()) {
- case STATEFUL:
+ case STATEFUL:
+ if (this.containerSessionType == SessionType.STATEFUL) {
String ejbName = sessionBean.getEjbName();
EjbDeployment ejbDeployment = openejbJar.getDeploymentsByEjbName().get(ejbName);
if (null == ejbDeployment) {
throw new OpenEJBException("No ejbDeployment for ejbName [" + ejbName + "]");
}
ejbDeployment.setContainerId(containerId);
+ }
+ case STATELESS:
+ if (this.containerSessionType == SessionType.STATELESS) {
+ String ejbName = sessionBean.getEjbName();
+ EjbDeployment ejbDeployment = openejbJar.getDeploymentsByEjbName().get(ejbName);
+ if (null == ejbDeployment) {
+ throw new OpenEJBException("No ejbDeployment for ejbName [" + ejbName + "]");
+ }
+ ejbDeployment.setContainerId(containerId);
+ }
}
}
}
Modified: geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/WADIOpenEJBClusteringBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/WADIOpenEJBClusteringBuilder.java?rev=916085&r1=916084&r2=916085&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/WADIOpenEJBClusteringBuilder.java (original)
+++ geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/WADIOpenEJBClusteringBuilder.java Thu Feb 25 02:07:06 2010
@@ -43,6 +43,8 @@
import org.apache.geronimo.gbean.GBeanData;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.gbean.annotation.GBean;
+import org.apache.geronimo.gbean.annotation.ParamAttribute;
import org.apache.geronimo.j2ee.deployment.EARContext;
import org.apache.geronimo.j2ee.deployment.Module;
import org.apache.geronimo.j2ee.deployment.ModuleBuilderExtension;
@@ -53,9 +55,9 @@
import org.apache.geronimo.kernel.config.ConfigurationStore;
import org.apache.geronimo.kernel.repository.Environment;
import org.apache.geronimo.naming.deployment.ENCConfigBuilder;
+import org.apache.geronimo.openejb.cluster.deployment.ClusteredDeployment;
import org.apache.geronimo.openejb.cluster.infra.BasicNetworkConnectorTrackerServiceHolder;
import org.apache.geronimo.openejb.cluster.infra.NetworkConnectorMonitor;
-import org.apache.geronimo.openejb.cluster.stateful.deployment.ClusteredStatefulDeployment;
import org.apache.geronimo.openejb.deployment.BasicEjbDeploymentGBeanNameBuilder;
import org.apache.geronimo.openejb.deployment.EjbDeploymentGBeanNameBuilder;
import org.apache.geronimo.openejb.deployment.EjbModule;
@@ -69,6 +71,7 @@
import org.apache.openejb.jee.EjbJar;
import org.apache.openejb.jee.EnterpriseBean;
import org.apache.openejb.jee.SessionBean;
+import org.apache.openejb.jee.SessionType;
import org.apache.openejb.jee.oejb2.GeronimoEjbJarType;
import org.apache.xmlbeans.QNameSet;
import org.apache.xmlbeans.XmlObject;
@@ -77,6 +80,7 @@
*
* @version $Rev:$ $Date:$
*/
+@GBean(j2eeType = NameFactory.MODULE_BUILDER)
public class WADIOpenEJBClusteringBuilder implements ModuleBuilderExtension {
private static final QName BASE_CLUSTERING_QNAME = GerClusteringDocument.type.getDocumentElementName();
private static final QName CLUSTERING_WADI_QNAME = GerOpenejbClusteringWadiDocument.type.getDocumentElementName();
@@ -89,6 +93,8 @@
}
private final String defaultClusteredStatefulContainerId;
+ private final String defaultClusteredStatelessContainerId;
+
private final EjbDeploymentGBeanNameBuilder beanNameBuilder;
private final int defaultSweepInterval;
private final int defaultSessionTimeout;
@@ -97,17 +103,22 @@
private final AbstractNameQuery defaultClusterName;
private final AbstractNameQuery defaultNetworkConnectorName;
private final Environment defaultEnvironment;
+
- public WADIOpenEJBClusteringBuilder(String defaultClusteredStatefulContainerId,
- int defaultSweepInterval,
- int defaultSessionTimeout,
- int defaultNumPartitions,
- AbstractNameQuery defaultBackingStrategyFactoryName,
- AbstractNameQuery defaultClusterName,
- AbstractNameQuery defaultNetworkConnectorName,
- Environment defaultEnvironment) {
+ public WADIOpenEJBClusteringBuilder(
+ @ParamAttribute(name = "defaultClusteredStatefulContainerId") String defaultClusteredStatefulContainerId,
+ @ParamAttribute(name = "defaultClusteredStatelessContainerId") String defaultClusteredStatelessContainerId,
+ @ParamAttribute(name = "defaultSweepInterval") int defaultSweepInterval,
+ @ParamAttribute(name = "defaultSessionTimeout") int defaultSessionTimeout,
+ @ParamAttribute(name = "defaultNumPartitions") int defaultNumPartitions,
+ @ParamAttribute(name = "defaultBackingStrategyFactoryName") AbstractNameQuery defaultBackingStrategyFactoryName,
+ @ParamAttribute(name = "defaultClusterName") AbstractNameQuery defaultClusterName,
+ @ParamAttribute(name = "defaultNetworkConnectorName") AbstractNameQuery defaultNetworkConnectorName,
+ @ParamAttribute(name = "defaultEnvironment") Environment defaultEnvironment) {
if (null == defaultClusteredStatefulContainerId) {
throw new IllegalArgumentException("defaultClusteredStatefulContainerId is required");
+ } else if (null == defaultClusteredStatelessContainerId) {
+ throw new IllegalArgumentException("defaultClusteredStatelessContainerId is required");
} else if (defaultSweepInterval < 1) {
throw new IllegalArgumentException("defaultSweepInterval is lower than 1");
} else if (defaultSessionTimeout < 1) {
@@ -124,6 +135,7 @@
throw new IllegalArgumentException("defaultNetworkConnectorName is required");
}
this.defaultClusteredStatefulContainerId = defaultClusteredStatefulContainerId;
+ this.defaultClusteredStatelessContainerId = defaultClusteredStatelessContainerId;
this.defaultSweepInterval = defaultSweepInterval;
this.defaultSessionTimeout = defaultSessionTimeout;
this.defaultNumPartitions = defaultNumPartitions;
@@ -170,16 +182,13 @@
EjbJar ejbJar = ejbModule.getEjbJar();
for (EnterpriseBean enterpriseBean : ejbJar.getEnterpriseBeans()) {
+
if (enterpriseBean instanceof SessionBean) {
- SessionBean sessionBean = (SessionBean) enterpriseBean;
- switch (sessionBean.getSessionType()) {
- case STATEFUL:
- replaceByClusteredDeploymentGBean(earContext,
- ejbModule,
- sessionManagerName,
- enterpriseBean);
- }
+
+ replaceByClusteredDeploymentGBean(earContext, ejbModule, sessionManagerName, enterpriseBean);
+
}
+
}
}
}
@@ -197,14 +206,15 @@
throw new DeploymentException("No GBean [" + name + "]", e);
}
GBeanData clusteredDeploymentGBean = new GBeanData(beanInstance);
- clusteredDeploymentGBean.setGBeanInfo(ClusteredStatefulDeployment.GBEAN_INFO);
- clusteredDeploymentGBean.setReferencePattern(ClusteredStatefulDeployment.GBEAN_REF_SESSION_MANAGER, sessionManagerName);
+ clusteredDeploymentGBean.setGBeanInfo(ClusteredDeployment.GBEAN_INFO);
+ clusteredDeploymentGBean.setReferencePattern(ClusteredDeployment.GBEAN_REF_SESSION_MANAGER, sessionManagerName);
try {
earContext.addGBean(clusteredDeploymentGBean);
} catch (GBeanAlreadyExistsException e) {
throw new DeploymentException("See nested", e);
}
}
+
public void createModule(Module module,
Object plan,
@@ -226,7 +236,8 @@
EnvironmentBuilder.mergeEnvironments(environment, defaultEnvironment);
- ejbModule.getPreAutoConfigDeployer().add(new MapSFSBToContainerIDDeployer(defaultClusteredStatefulContainerId));
+ ejbModule.getPreAutoConfigDeployer().add(new MapSessionBeanToContainerIDDeployer(defaultClusteredStatefulContainerId,SessionType.STATEFUL));
+ ejbModule.getPreAutoConfigDeployer().add(new MapSessionBeanToContainerIDDeployer(defaultClusteredStatelessContainerId,SessionType.STATELESS));
}
public void initContext(EARContext earContext, Module module, ClassLoader cl) throws DeploymentException {
@@ -275,7 +286,7 @@
networkConnectorMonitor.setReferencePattern(NetworkConnectorMonitor.GBEAN_REF_NETWORK_CONNECTORS,
defaultNetworkConnectorName);
networkConnectorMonitor.setReferencePattern(NetworkConnectorMonitor.GBEAN_REF_EJB_DEP_ID_ACCESSOR,
- new AbstractNameQuery(ClusteredStatefulDeployment.class.getName()));
+ new AbstractNameQuery(ClusteredDeployment.class.getName()));
networkConnectorMonitor.setReferencePattern(NetworkConnectorMonitor.GBEAN_REF_WADI_SESSION_MANAGER,
sessionManagerName);
@@ -390,45 +401,5 @@
return null;
}
- public static final GBeanInfo GBEAN_INFO;
-
- public static final String GBEAN_ATTR_DFT_CLUSTERED_SFSB_CONT_ID = "defaultClusteredStatefulContainerId";
- public static final String GBEAN_ATTR_DFT_SWEEP_INTERVAL = "defaultSweepInterval";
- public static final String GBEAN_ATTR_DFT_SESSION_TIMEOUT = "defaultSessionTimeout";
- public static final String GBEAN_ATTR_DFT_NUM_PARTITIONS = "defaultNumPartitions";
- public static final String GBEAN_ATTR_DFT_BACKING_STRATEGY_FACTORY_NAME = "defaultBackingStrategyFactoryName";
- public static final String GBEAN_ATTR_DFT_CLUSTER_NAME = "defaultClusterName";
- public static final String GBEAN_ATTR_DFT_NETWORK_CONNECTOR_NAME = "defaultNetworkConnectorName";
- public static final String GBEAN_ATTR_DFT_ENVIRONMENT = "defaultEnvironment";
-
- static {
- GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic("WADI OpenEJB Clusteting Builder",
- WADIOpenEJBClusteringBuilder.class,
- NameFactory.MODULE_BUILDER);
-
- infoBuilder.addAttribute(GBEAN_ATTR_DFT_CLUSTERED_SFSB_CONT_ID, String.class, true);
- infoBuilder.addAttribute(GBEAN_ATTR_DFT_SWEEP_INTERVAL, int.class, true);
- infoBuilder.addAttribute(GBEAN_ATTR_DFT_SESSION_TIMEOUT, int.class, true);
- infoBuilder.addAttribute(GBEAN_ATTR_DFT_NUM_PARTITIONS, int.class, true);
- infoBuilder.addAttribute(GBEAN_ATTR_DFT_BACKING_STRATEGY_FACTORY_NAME, AbstractNameQuery.class, true);
- infoBuilder.addAttribute(GBEAN_ATTR_DFT_CLUSTER_NAME, AbstractNameQuery.class, true);
- infoBuilder.addAttribute(GBEAN_ATTR_DFT_NETWORK_CONNECTOR_NAME, AbstractNameQuery.class, true);
- infoBuilder.addAttribute(GBEAN_ATTR_DFT_ENVIRONMENT, Environment.class, true);
-
- infoBuilder.setConstructor(new String[] { GBEAN_ATTR_DFT_CLUSTERED_SFSB_CONT_ID,
- GBEAN_ATTR_DFT_SWEEP_INTERVAL,
- GBEAN_ATTR_DFT_SESSION_TIMEOUT,
- GBEAN_ATTR_DFT_NUM_PARTITIONS,
- GBEAN_ATTR_DFT_BACKING_STRATEGY_FACTORY_NAME,
- GBEAN_ATTR_DFT_CLUSTER_NAME,
- GBEAN_ATTR_DFT_NETWORK_CONNECTOR_NAME,
- GBEAN_ATTR_DFT_ENVIRONMENT });
-
- GBEAN_INFO = infoBuilder.getBeanInfo();
- }
-
- public static GBeanInfo getGBeanInfo() {
- return GBEAN_INFO;
- }
-
+
}
Copied: geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/test/java/org/apache/geronimo/openejb/deployment/cluster/MapSessionBeanToContainerIDDeployerTest.java (from r899548, geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/test/java/org/apache/geronimo/openejb/deployment/cluster/MapSFSBToContainerIDDeployerTest.java)
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/test/java/org/apache/geronimo/openejb/deployment/cluster/MapSessionBeanToContainerIDDeployerTest.java?p2=geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/test/java/org/apache/geronimo/openejb/deployment/cluster/MapSessionBeanToContainerIDDeployerTest.java&p1=geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/test/java/org/apache/geronimo/openejb/deployment/cluster/MapSFSBToContainerIDDeployerTest.java&r1=899548&r2=916085&rev=916085&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/test/java/org/apache/geronimo/openejb/deployment/cluster/MapSFSBToContainerIDDeployerTest.java (original)
+++ geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/test/java/org/apache/geronimo/openejb/deployment/cluster/MapSessionBeanToContainerIDDeployerTest.java Thu Feb 25 02:07:06 2010
@@ -28,6 +28,7 @@
import org.apache.openejb.jee.EjbJar;
import org.apache.openejb.jee.EntityBean;
import org.apache.openejb.jee.MessageDrivenBean;
+import org.apache.openejb.jee.SessionType;
import org.apache.openejb.jee.StatefulBean;
import org.apache.openejb.jee.StatelessBean;
import org.apache.openejb.jee.oejb3.EjbDeployment;
@@ -37,7 +38,7 @@
*
* @version $Rev:$ $Date:$
*/
-public class MapSFSBToContainerIDDeployerTest extends TestCase {
+public class MapSessionBeanToContainerIDDeployerTest extends TestCase {
public void testContainerIdAreSetForSFSB() throws Exception {
AppModule appModule = new AppModule(getClass().getClassLoader(), "dummy.jar");
@@ -75,7 +76,7 @@
ejbModules.add(ejbModule);
String targetContainerId = "targetContainerId";
- MapSFSBToContainerIDDeployer deployer = new MapSFSBToContainerIDDeployer(targetContainerId);
+ MapSessionBeanToContainerIDDeployer deployer = new MapSessionBeanToContainerIDDeployer(targetContainerId,SessionType.STATEFUL);
deployer.deploy(appModule);
assertEquals(targetContainerId, sfsbDeployment.getContainerId());
Copied: geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/container/stateful/ClusteredStatefulContainer.java (from r899548, geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/container/ClusteredStatefulContainer.java)
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/container/stateful/ClusteredStatefulContainer.java?p2=geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/container/stateful/ClusteredStatefulContainer.java&p1=geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/container/ClusteredStatefulContainer.java&r1=899548&r2=916085&rev=916085&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/container/ClusteredStatefulContainer.java (original)
+++ geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/container/stateful/ClusteredStatefulContainer.java Thu Feb 25 02:07:06 2010
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.geronimo.openejb.cluster.stateful.container;
+package org.apache.geronimo.openejb.cluster.container.stateful;
import java.net.URI;
import java.util.HashMap;
Copied: geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/container/stateful/WadiCache.java (from r899548, geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/container/WadiCache.java)
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/container/stateful/WadiCache.java?p2=geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/container/stateful/WadiCache.java&p1=geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/container/WadiCache.java&r1=899548&r2=916085&rev=916085&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/container/WadiCache.java (original)
+++ geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/container/stateful/WadiCache.java Thu Feb 25 02:07:06 2010
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.geronimo.openejb.cluster.stateful.container;
+package org.apache.geronimo.openejb.cluster.container.stateful;
import java.rmi.dgc.VMID;
import java.util.Iterator;
@@ -122,6 +122,11 @@
}
wadiInstance.lock.lock();
+
+ if(wadiInstance.getState()==null){
+ wadiInstance.setState(WadiInstanceState.AVAILABLE);
+ }
+
try {
// verfiy state
switch (wadiInstance.getState()) {
@@ -161,6 +166,11 @@
}
wadiInstance.lock.lock();
+
+ if(wadiInstance.getState()==null){
+ wadiInstance.setState(WadiInstanceState.CHECKED_OUT);
+ }
+
try {
// verfiy state
switch (wadiInstance.getState()) {
Modified: geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/resources/META-INF/org.apache.geronimo.openejb.cluster/service-jar.xml
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/resources/META-INF/org.apache.geronimo.openejb.cluster/service-jar.xml?rev=916085&r1=916084&r2=916085&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/resources/META-INF/org.apache.geronimo.openejb.cluster/service-jar.xml (original)
+++ geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/resources/META-INF/org.apache.geronimo.openejb.cluster/service-jar.xml Thu Feb 25 02:07:06 2010
@@ -31,7 +31,48 @@
service="Container"
types="STATEFUL"
constructor="id, securityService"
- class-name="org.apache.geronimo.openejb.cluster.stateful.container.ClusteredStatefulContainer">
+ class-name="org.apache.geronimo.openejb.cluster.container.stateful.ClusteredStatefulContainer">
+
+ </ServiceProvider>
+
+ <!--
+ # ==========================================================
+ # Default Clustered Stateless Container
+ # ==========================================================
+ -->
+ <ServiceProvider
+ id="Default Clustered Stateless Container"
+ service="Container"
+ types="STATELESS"
+ constructor="id, securityService, TimeOut, PoolSize, StrictPooling"
+ class-name="org.apache.geronimo.openejb.cluster.container.stateless.ClusteredStatelessContainer">
+
+ # Specifies the time to wait between invocations. This
+ # value is measured in milliseconds. A value of 5 would
+ # result in a time-out of 5 milliseconds between invocations.
+ # A value of zero would mean no timeout.
+
+ TimeOut 0
+
+ # Specifies the size of the bean pools for this
+ # stateless SessionBean container.
+
+ PoolSize 10
+
+ # StrictPooling tells the container what to do when the pool
+ # reaches it's maximum size and there are incoming requests
+ # that need instances.
+ #
+ # With strict pooling, requests will have to wait for instances
+ # to become available. The pool size will never grow beyond the
+ # the set PoolSize value.
+ #
+ # Without strict pooling, the container will create temporary
+ # instances to meet demand. The instances will last for just one
+ # method invocation and then are removed.
+
+ StrictPooling true
+
</ServiceProvider>
Modified: geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/container/stateful/ClusteredStatefulContainerTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/container/stateful/ClusteredStatefulContainerTest.java?rev=916085&r1=899548&r2=916085&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/container/stateful/ClusteredStatefulContainerTest.java (original)
+++ geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/container/stateful/ClusteredStatefulContainerTest.java Thu Feb 25 02:07:06 2010
@@ -16,12 +16,13 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.geronimo.openejb.cluster.stateful.container;
+package org.apache.geronimo.openejb.cluster.container.stateful;
import java.net.URI;
import java.util.Collections;
import org.apache.geronimo.clustering.wadi.WADISessionManager;
+import org.apache.geronimo.openejb.cluster.container.stateful.ClusteredStatefulContainer;
import org.apache.geronimo.openejb.cluster.infra.NetworkConnectorTracker;
import org.apache.openejb.core.CoreDeploymentInfo;
import org.apache.openejb.core.DeploymentContext;
Modified: geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/container/stateful/WadiCacheTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/container/stateful/WadiCacheTest.java?rev=916085&r1=899548&r2=916085&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/container/stateful/WadiCacheTest.java (original)
+++ geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/container/stateful/WadiCacheTest.java Thu Feb 25 02:07:06 2010
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.geronimo.openejb.cluster.stateful.container;
+package org.apache.geronimo.openejb.cluster.container.stateful;
import java.io.IOException;
import java.rmi.dgc.VMID;
@@ -34,7 +34,8 @@
import org.apache.geronimo.clustering.Session;
import org.apache.geronimo.clustering.SessionListener;
import org.apache.geronimo.clustering.wadi.WADISessionManager;
-import org.apache.geronimo.openejb.cluster.stateful.container.ClusteredStatefulContainerTest.SFSB;
+import org.apache.geronimo.openejb.cluster.container.stateful.WadiCache;
+import org.apache.geronimo.openejb.cluster.container.stateful.ClusteredStatefulContainerTest.SFSB;
import org.apache.openejb.core.CoreDeploymentInfo;
import org.apache.openejb.core.DeploymentContext;
import org.apache.openejb.core.ThreadContext;
Added: geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/container/stateless/ClusteredStatelessContainerTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/container/stateless/ClusteredStatelessContainerTest.java?rev=916085&view=auto
==============================================================================
--- geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/container/stateless/ClusteredStatelessContainerTest.java (added)
+++ geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/container/stateless/ClusteredStatelessContainerTest.java Thu Feb 25 02:07:06 2010
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.openejb.cluster.container.stateless;
+
+import java.net.URI;
+import java.util.Collections;
+
+import org.apache.geronimo.clustering.wadi.WADISessionManager;
+import org.apache.geronimo.openejb.cluster.infra.NetworkConnectorTracker;
+import org.apache.openejb.core.CoreDeploymentInfo;
+import org.apache.openejb.core.DeploymentContext;
+import org.apache.openejb.spi.SecurityService;
+import org.codehaus.wadi.servicespace.ServiceRegistry;
+import org.codehaus.wadi.servicespace.ServiceSpace;
+
+import com.agical.rmock.extension.junit.RMockTestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ClusteredStatelessContainerTest extends RMockTestCase {
+
+ private WADISessionManager sessionManager;
+ private ClusteredStatelessContainer container;
+ private CoreDeploymentInfo deploymentInfo;
+ private String deploymentId;
+ private NetworkConnectorTracker tracker;
+
+ @Override
+ protected void setUp() throws Exception {
+ sessionManager = (WADISessionManager) mock(WADISessionManager.class);
+ sessionManager.getManager();
+ modify().multiplicity(expect.from(0));
+
+ sessionManager.registerListener(null);
+ modify().multiplicity(expect.from(0)).args(is.NOT_NULL);
+
+ ServiceSpace serviceSpace = sessionManager.getServiceSpace();
+ modify().multiplicity(expect.from(0));
+ ServiceRegistry serviceRegistry = serviceSpace.getServiceRegistry();
+ modify().multiplicity(expect.from(0));
+ serviceRegistry.getStartedService(NetworkConnectorTracker.NAME);
+ modify().multiplicity(expect.from(0));
+ tracker = (NetworkConnectorTracker) mock(NetworkConnectorTracker.class);
+ modify().returnValue(tracker);
+
+ SecurityService securityService = (SecurityService) mock(SecurityService.class);
+ container = (ClusteredStatelessContainer) intercept(ClusteredStatelessContainer.class, new Object[] {"id",
+ securityService,500,10,true});
+ deploymentId = "deploymentId";
+ deploymentInfo = new CoreDeploymentInfo(new DeploymentContext(deploymentId, null, null),
+ SFSB.class,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null) {
+ @Override
+ public Object getDeploymentID() {
+ return deploymentId;
+ }
+ };
+ }
+
+
+ public void testGetLocationsRetunsNullWhenDeploymentIsNotRegistered() throws Exception {
+ startVerification();
+
+ assertNull(container.getLocations(deploymentInfo));
+ }
+
+ public void testGetLocationsOK() throws Exception {
+ tracker.getConnectorURIs(deploymentId);
+ URI location = new URI("ejbd://host:1");
+ modify().returnValue(Collections.singleton(location));
+
+ startVerification();
+
+ container.addSessionManager(deploymentId, sessionManager);
+
+ URI[] actualLocations = container.getLocations(deploymentInfo);
+ assertEquals(1, actualLocations.length);
+ assertSame(location, actualLocations[0]);
+ }
+
+ public static class SFSB implements Runnable {
+ public void run() {
+ }
+ }
+
+}
Propchange: geronimo/server/branches/2.2/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/container/stateless/ClusteredStatelessContainerTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: geronimo/server/branches/2.2/plugins/openejb/openejb-clustering-builder-wadi/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/openejb/openejb-clustering-builder-wadi/src/main/plan/plan.xml?rev=916085&r1=916084&r2=916085&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/openejb/openejb-clustering-builder-wadi/src/main/plan/plan.xml (original)
+++ geronimo/server/branches/2.2/plugins/openejb/openejb-clustering-builder-wadi/src/main/plan/plan.xml Thu Feb 25 02:07:06 2010
@@ -22,6 +22,7 @@
<gbean name="OpenEJBClusteringBuilder" class="org.apache.geronimo.openejb.deployment.cluster.WADIOpenEJBClusteringBuilder">
<attribute name="defaultClusteredStatefulContainerId">DefaultClusteredStatefulContainer</attribute>
+ <attribute name="defaultClusteredStatelessContainerId">DefaultClusteredStatelessContainer</attribute>
<attribute name="defaultSweepInterval">10</attribute>
<attribute name="defaultSessionTimeout">3600</attribute>
<attribute name="defaultNumPartitions">24</attribute>
Modified: geronimo/server/branches/2.2/plugins/openejb/openejb-clustering-wadi/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/openejb/openejb-clustering-wadi/src/main/plan/plan.xml?rev=916085&r1=916084&r2=916085&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/openejb/openejb-clustering-wadi/src/main/plan/plan.xml (original)
+++ geronimo/server/branches/2.2/plugins/openejb/openejb-clustering-wadi/src/main/plan/plan.xml Thu Feb 25 02:07:06 2010
@@ -26,5 +26,12 @@
<name>OpenEjbSystem</name>
</reference>
</gbean>
+
+ <gbean name="DefaultClusteredStatelessContainer" class="org.apache.geronimo.openejb.StatelessContainerGBean">
+ <attribute name="provider">org.apache.geronimo.openejb.cluster:Default Clustered Stateless Container</attribute>
+ <reference name="OpenEjbSystem">
+ <name>OpenEjbSystem</name>
+ </reference>
+ </gbean>
</module>