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));