You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by da...@apache.org on 2008/08/28 05:07:59 UTC

svn commit: r689706 - in /geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src: main/java/org/apache/geronimo/openejb/cluster/stateful/container/ main/resources/META-INF/org.apache.geronimo.openejb.cluster/ test/java/org/apache/ge...

Author: dain
Date: Wed Aug 27 20:07:59 2008
New Revision: 689706

URL: http://svn.apache.org/viewvc?rev=689706&view=rev
Log:
Updated to latest OpenEJB APIs

Modified:
    geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/container/ClusteredStatefulContainer.java
    geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/container/WadiCache.java
    geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/resources/META-INF/org.apache.geronimo.openejb.cluster/service-jar.xml
    geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/stateful/container/ClusteredStatefulContainerTest.java

Modified: geronimo/server/trunk/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/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/container/ClusteredStatefulContainer.java?rev=689706&r1=689705&r2=689706&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/container/ClusteredStatefulContainer.java (original)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/container/ClusteredStatefulContainer.java Wed Aug 27 20:07:59 2008
@@ -25,8 +25,6 @@
 import java.util.Map;
 import java.util.Set;
 
-import javax.transaction.TransactionManager;
-
 import org.apache.geronimo.clustering.SessionManager;
 import org.apache.geronimo.clustering.wadi.WADISessionManager;
 import org.apache.geronimo.openejb.cluster.infra.NetworkConnectorTracker;
@@ -37,9 +35,6 @@
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.core.CoreDeploymentInfo;
 import org.apache.openejb.core.stateful.StatefulContainer;
-import org.apache.openejb.core.stateful.Instance;
-import org.apache.openejb.core.stateful.Cache;
-import org.apache.openejb.core.stateful.PassivationStrategy;
 import org.apache.openejb.spi.SecurityService;
 import org.codehaus.wadi.core.contextualiser.BasicInvocation;
 import org.codehaus.wadi.core.contextualiser.InvocationContext;
@@ -52,30 +47,18 @@
  *
  * @version $Rev:$ $Date:$
  */
+// todo Consider replacing this class with an RpcContainerWrapper subclass
 public class ClusteredStatefulContainer extends StatefulContainer implements SessionManagerTracker, ClusteredRPCContainer {
     private final Map<Object, Manager> deploymentIdToManager;
     private final Map<Object, NetworkConnectorTracker> deploymentIdToNetworkConnectorTracker;
-    
-    public ClusteredStatefulContainer(Object id,
-        TransactionManager transactionManager,
-        SecurityService securityService,
-        Class passivator,
-        int timeOut,
-        int poolSize,
-        int bulkPassivate) throws OpenEJBException {
-        super(id, securityService, passivator, timeOut, poolSize, bulkPassivate);
-        
+
+    public ClusteredStatefulContainer(Object id, SecurityService securityService) {
+        super(id, securityService, new WadiCache());
+
         deploymentIdToManager = new HashMap<Object, Manager>();
         deploymentIdToNetworkConnectorTracker = new HashMap<Object, NetworkConnectorTracker>();
     }
 
-    protected Cache<Object, Instance> createCache(Class<? extends PassivationStrategy> passivator,
-            int timeOut,
-            int poolSize,
-            int bulkPassivate) throws OpenEJBException {
-        return new WadiCache(new StatefulCacheListener());
-    }
-
     public void addSessionManager(Object deploymentId, SessionManager sessionManager) {
         ((WadiCache) cache).addSessionManager(deploymentId, sessionManager);
         
@@ -126,7 +109,7 @@
         } catch (NetworkConnectorTrackerException e) {
             return null;
         }
-        return connectorURIs.toArray(new URI[0]);
+        return connectorURIs.toArray(new URI[connectorURIs.size()]);
     }
 
     @Override
@@ -177,13 +160,6 @@
         return super.removeEJBObject(deploymentInfo, primKey, callInterface, callMethod, args);
     }
 
-    //
-    // TODO: THIS WILL NOT WORK
-    // OpenEJB invocations can not be redirected to another JavaVM.  OpenEJB relies on several
-    // thread local variables to opperate, the most important of which is ThreadContext which
-    // is used to coordiate transaction boundries.  At the very least to redirect calls to a
-    // remote VM you will need a distributed TransactionManager.
-    //
     protected Object invoke(CoreDeploymentInfo deploymentInfo, AbstractEJBInvocation invocation) throws OpenEJBException {
         Manager manager;
         synchronized (deploymentIdToManager) {

Modified: geronimo/server/trunk/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/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/container/WadiCache.java?rev=689706&r1=689705&r2=689706&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/container/WadiCache.java (original)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/container/WadiCache.java Wed Aug 27 20:07:59 2008
@@ -44,10 +44,21 @@
 
     private final ConcurrentMap<Object, WadiInstance> localInstances = new ConcurrentHashMap<Object, WadiInstance>();
 
-    private final CacheListener<Instance> cacheListener;
+    private CacheListener<Instance> listener;
 
-    public WadiCache(CacheListener<Instance> cacheListener) {
-        this.cacheListener = cacheListener;
+    public WadiCache() {
+    }
+
+    public WadiCache(CacheListener<Instance> listener) {
+        this.setListener(listener);
+    }
+
+    public synchronized CacheListener<Instance> getListener() {
+        return listener;
+    }
+
+    public synchronized void setListener(CacheListener<Instance> listener) {
+        this.listener = listener;
     }
 
     public SessionManager getSessionManager(Object deploymentId) {
@@ -232,7 +243,10 @@
             }
 
             try {
-                cacheListener.afterLoad(instance.instance);
+                CacheListener<Instance> listener = getListener();
+                if (listener != null) {
+                    listener.afterLoad(instance.instance);
+                }
                 localInstances.put(instance.instance.primaryKey, instance);
             } catch (Exception e) {
                 log.warn("Cannot activate migrated bean entry.", e);
@@ -246,7 +260,10 @@
             }
 
             try {
-                cacheListener.beforeStore(instance.instance);
+                CacheListener<Instance> listener = getListener();
+                if (listener != null) {
+                    listener.beforeStore(instance.instance);
+                }
                 localInstances.remove(instance.instance.primaryKey);
             } catch (Exception e) {
                 log.warn("Cannot passivate EJB for migration.", e);

Modified: geronimo/server/trunk/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/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/resources/META-INF/org.apache.geronimo.openejb.cluster/service-jar.xml?rev=689706&r1=689705&r2=689706&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/resources/META-INF/org.apache.geronimo.openejb.cluster/service-jar.xml (original)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/resources/META-INF/org.apache.geronimo.openejb.cluster/service-jar.xml Wed Aug 27 20:07:59 2008
@@ -30,40 +30,9 @@
           id="Default Clustered Stateful Container"
           service="Container"
           types="STATEFUL"
-          constructor="id, transactionManager, securityService, Passivator, TimeOut, PoolSize, BulkPassivate"
+          constructor="id, securityService"
           class-name="org.apache.geronimo.openejb.cluster.stateful.container.ClusteredStatefulContainer">
 
-    # The passivator is responsible for writing beans to disk
-    # at passivation time. Different passivators can be used
-    # by setting this property to the fully qualified class name
-    # of the PassivationStrategy implementation. The passivator
-    # is not responsible for invoking any callbacks or other
-    # processing, its only responsibly is to write the bean state
-    # to disk.
-    #
-    # Known implementations:
-    # org.apache.openejb.core.stateful.RAFPassivater
-    # org.apache.openejb.core.stateful.SimplePassivater
-
-    Passivator org.apache.openejb.core.stateful.SimplePassivater
-
-    # Specifies the time to wait between invocations. This
-    # value is measured in minutes. A value of 5 would
-    # result in a time-out of 5 minutes between invocations.
-    # A value of zero would mean no timeout.
-
-    TimeOut 20
-
-    # Specifies the size of the bean pools for this
-    # stateful SessionBean container.
-
-    PoolSize 1000
-
-    # Property name that specifies the number of instances
-    # to passivate at one time when doing bulk passivation.
-
-    BulkPassivate 100
-
   </ServiceProvider>
 
 </ServiceJar>

Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/stateful/container/ClusteredStatefulContainerTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/stateful/container/ClusteredStatefulContainerTest.java?rev=689706&r1=689705&r2=689706&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/stateful/container/ClusteredStatefulContainerTest.java (original)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/test/java/org/apache/geronimo/openejb/cluster/stateful/container/ClusteredStatefulContainerTest.java Wed Aug 27 20:07:59 2008
@@ -22,8 +22,6 @@
 import java.net.URI;
 import java.util.Collections;
 
-import javax.transaction.TransactionManager;
-
 import org.apache.geronimo.clustering.wadi.WADISessionManager;
 import org.apache.geronimo.openejb.cluster.infra.NetworkConnectorTracker;
 import org.apache.openejb.OpenEJBException;
@@ -79,15 +77,9 @@
         tracker = (NetworkConnectorTracker) mock(NetworkConnectorTracker.class);
         modify().returnValue(tracker);
 
-        TransactionManager txManager = (TransactionManager) mock(TransactionManager.class);
         SecurityService securityService = (SecurityService) mock(SecurityService.class);
         container = (ClusteredStatefulContainer) intercept(ClusteredStatefulContainer.class, new Object[] {"id",
-                txManager,
-                securityService,
-            null,
-            1,
-            1,
-            1});
+                securityService});
         deploymentId = "deploymentId";
         deploymentInfo = new CoreDeploymentInfo(new DeploymentContext(deploymentId, null, null),
             SFSB.class,