You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by yi...@apache.org on 2010/09/07 22:19:08 UTC

svn commit: r993516 - in /openwebbeans/trunk: webbeans-impl/src/main/java/org/apache/webbeans/proxy/ResourceProxyHandler.java webbeans-web/src/main/java/org/apache/webbeans/web/failover/DefaultOwbFailOverService.java

Author: yingwang
Date: Tue Sep  7 20:19:07 2010
New Revision: 993516

URL: http://svn.apache.org/viewvc?rev=993516&view=rev
Log:
[owb-448] @ejb passivation support

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/ResourceProxyHandler.java
    openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/DefaultOwbFailOverService.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/ResourceProxyHandler.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/ResourceProxyHandler.java?rev=993516&r1=993515&r2=993516&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/ResourceProxyHandler.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/ResourceProxyHandler.java Tue Sep  7 20:19:07 2010
@@ -18,14 +18,24 @@
  */
 package org.apache.webbeans.proxy;
 
+import java.io.IOException;
+import java.io.Serializable;
+import java.io.Externalizable;
+import java.io.ObjectOutput;
+import java.io.ObjectInput;
 import java.lang.reflect.Method;
 
 import javassist.util.proxy.MethodHandler;
 
-public class ResourceProxyHandler implements MethodHandler
+public class ResourceProxyHandler implements MethodHandler, Serializable, Externalizable
 {
     private Object actualResource = null;
     
+    //DO NOT REMOVE, used by failover and passivation.
+    public ResourceProxyHandler() 
+    {
+    }
+
     public ResourceProxyHandler(Object actualResource)
     {
         this.actualResource = actualResource;
@@ -37,4 +47,34 @@ public class ResourceProxyHandler implem
         return actualMethod.invoke(this.actualResource, args);
     }
 
+    @Override
+    public void writeExternal(ObjectOutput out) throws IOException 
+    {
+            if (actualResource instanceof javax.rmi.CORBA.Stub)
+            {
+                out.writeObject(actualResource);
+            }
+            else
+            {
+                //TODO: for other type of resources, I am planning to add some
+                // custom property to control whether owb should (de)serialize
+                // the object directly or grab a new instance from resource
+                // service (on the other jvm.).
+                out.writeObject(null);
+            }
+    }
+    
+    @Override
+    public void readExternal(ObjectInput in) throws IOException,
+            ClassNotFoundException 
+    {
+        Object obj = in.readObject();
+        if (obj != null && obj instanceof javax.rmi.CORBA.Stub)
+        {
+            actualResource = obj;
+            org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(new String[0], null);
+            ((javax.rmi.CORBA.Stub)actualResource).connect(orb);
+        }
+    }
+    
 }

Modified: openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/DefaultOwbFailOverService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/DefaultOwbFailOverService.java?rev=993516&r1=993515&r2=993516&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/DefaultOwbFailOverService.java (original)
+++ openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/DefaultOwbFailOverService.java Tue Sep  7 20:19:07 2010
@@ -28,6 +28,7 @@ import javax.servlet.http.HttpSession;
 import org.apache.webbeans.config.OpenWebBeansConfiguration;
 import org.apache.webbeans.logger.WebBeansLogger;
 import org.apache.webbeans.spi.FailOverService;
+import org.apache.webbeans.util.WebBeansUtil;
 
 public class DefaultOwbFailOverService implements FailOverService 
 {
@@ -67,6 +68,11 @@ public class DefaultOwbFailOverService i
         {
             isSupportPassivation = true;
         }
+        if (isSupportFailOver || isSupportPassivation)
+        {
+            WebBeansUtil.initProxyFactoryClassLoaderProvider();
+        }
+        
         if (logger.wblWillLogDebug())
         {
             logger.debug("DefaultOwbFailOverService isSupportFailOver: [{0}]", String.valueOf(isSupportFailOver));