maguro 2005/04/06 22:51:40
Modified: modules/core/src/java/org/openejb/corba Adapter.java
AdapterDelegate.java AdapterEntity.java
AdapterProxyFactory.java AdapterStateful.java
AdapterStateless.java
Log:
Need to set the thread classloader w/ the container classloader before
calling.
Revision Changes Path
1.9 +11 -13
openejb/modules/core/src/java/org/openejb/corba/Adapter.java
Index: Adapter.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/Adapter.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- Adapter.java 27 Mar 2005 02:04:40 -0000 1.8
+++ Adapter.java 7 Apr 2005 02:51:36 -0000 1.9
@@ -45,12 +45,11 @@
package org.openejb.corba;
import java.rmi.Remote;
-import java.util.Map;
import javax.rmi.CORBA.Tie;
+import org.omg.CORBA.Any;
import org.omg.CORBA.ORB;
import org.omg.CORBA.Policy;
-import org.omg.CORBA.Any;
import org.omg.CosNaming.NameComponent;
import org.omg.CosNaming.NamingContext;
import org.omg.CosNaming.NamingContextExt;
@@ -58,16 +57,16 @@
import org.omg.CosNaming.NamingContextHelper;
import org.omg.CosNaming.NamingContextPackage.NotEmpty;
import org.omg.CosNaming.NamingContextPackage.NotFound;
+import org.omg.PortableServer.IdAssignmentPolicyValue;
+import org.omg.PortableServer.ImplicitActivationPolicyValue;
import org.omg.PortableServer.POA;
-import org.omg.PortableServer.Servant;
-import org.omg.PortableServer.LifespanPolicyValue;
import org.omg.PortableServer.RequestProcessingPolicyValue;
+import org.omg.PortableServer.Servant;
import org.omg.PortableServer.ServantRetentionPolicyValue;
-import org.omg.PortableServer.IdAssignmentPolicyValue;
-import org.omg.PortableServer.ImplicitActivationPolicyValue;
+
import org.openejb.EJBContainer;
-import org.openejb.corba.util.TieLoader;
import org.openejb.corba.transaction.ServerTransactionPolicyFactory;
+import org.openejb.corba.util.TieLoader;
import org.openejb.proxy.ProxyInfo;
@@ -76,7 +75,7 @@
*/
public abstract class Adapter implements RefGenerator {
- private final EJBContainer container;
+ private final EJBContainer container;
private final POA parentPOA;
protected final POA homePOA;
private final NamingContextExt initialContext;
@@ -107,10 +106,9 @@
homePOA.the_POAManager().activate();
-
- Servant servant =
tieLoader.loadTieClass(container.getProxyInfo().getHomeInterface(),
container.getClassLoader());
+ Servant servant =
tieLoader.loadTieClass(container.getProxyInfo().getHomeInterface(),
container.getClassLoader());
AdapterProxyFactory factory = new
AdapterProxyFactory(container.getProxyInfo().getHomeInterface(),
container.getClassLoader());
- Remote remote = (Remote) factory.create(container.getEJBHome());
+ Remote remote = (Remote) factory.create(container.getEJBHome(),
container.getClassLoader());
if (servant instanceof Tie) {
((Tie) servant).setTarget(remote);
1.4 +9 -3
openejb/modules/core/src/java/org/openejb/corba/AdapterDelegate.java
Index: AdapterDelegate.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/AdapterDelegate.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- AdapterDelegate.java 14 Mar 2005 02:13:34 -0000 1.3
+++ AdapterDelegate.java 7 Apr 2005 02:51:38 -0000 1.4
@@ -53,12 +53,18 @@
public class AdapterDelegate {
private final Remote delegate;
+ private final ClassLoader classLoader;
- public AdapterDelegate(Remote delegate) {
+ public AdapterDelegate(Remote delegate, ClassLoader classLoader) {
this.delegate = delegate;
+ this.classLoader = classLoader;
}
final public Remote getDelegate() {
return delegate;
+ }
+
+ final public ClassLoader getClassLoader() {
+ return classLoader;
}
}
1.9 +3 -3
openejb/modules/core/src/java/org/openejb/corba/AdapterEntity.java
Index: AdapterEntity.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/AdapterEntity.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- AdapterEntity.java 27 Mar 2005 02:04:40 -0000 1.8
+++ AdapterEntity.java 7 Apr 2005 02:51:38 -0000 1.9
@@ -156,7 +156,7 @@
EJBContainer container = getContainer();
Servant servant =
getTieLoader().loadTieClass(container.getProxyInfo().getRemoteInterface(),
container.getClassLoader());
- Remote remote = (Remote)
factory.create(container.getEJBObject(pk));
+ Remote remote = (Remote)
factory.create(container.getEJBObject(pk), container.getClassLoader());
if (servant instanceof Tie) {
((Tie) servant).setTarget(remote);
1.3 +11 -6
openejb/modules/core/src/java/org/openejb/corba/AdapterProxyFactory.java
Index: AdapterProxyFactory.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/AdapterProxyFactory.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AdapterProxyFactory.java 31 Mar 2005 06:56:59 -0000 1.2
+++ AdapterProxyFactory.java 7 Apr 2005 02:51:38 -0000 1.3
@@ -45,7 +45,6 @@
package org.openejb.corba;
import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
import java.rmi.AccessException;
import java.rmi.MarshalException;
import java.rmi.NoSuchObjectException;
@@ -109,8 +108,8 @@
return true;
}
- public Object create(Remote delegate) {
- return create(new Class[]{Remote.class}, new Object[]{delegate});
+ public Object create(Remote delegate, ClassLoader classLoader) {
+ return create(new Class[]{Remote.class, ClassLoader.class}, new
Object[]{delegate, classLoader});
}
public synchronized Object create(Class[] types, Object[] arguments) {
@@ -121,8 +120,12 @@
private final static class AdapterMethodInterceptor implements
MethodInterceptor {
public final Object intercept(Object o, Method method, Object[]
args, MethodProxy methodProxy) throws Throwable {
+ ClassLoader savedCL =
Thread.currentThread().getContextClassLoader();
try {
- return methodProxy.invoke(((AdapterDelegate)
o).getDelegate(), args);
+ AdapterDelegate delegate = (AdapterDelegate) o;
+
Thread.currentThread().setContextClassLoader(delegate.getClassLoader());
+
+ return methodProxy.invoke(delegate.getDelegate(), args);
} catch (TransactionRolledbackException e) {
throw new TRANSACTION_ROLLEDBACK(e.toString());
} catch (TransactionRequiredException e) {
@@ -140,6 +143,8 @@
} catch (Throwable t) {
t.printStackTrace();
throw new UNKNOWN(t.toString());
+ } finally {
+ Thread.currentThread().setContextClassLoader(savedCL);
}
}
}
1.9 +3 -3
openejb/modules/core/src/java/org/openejb/corba/AdapterStateful.java
Index: AdapterStateful.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/AdapterStateful.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- AdapterStateful.java 27 Mar 2005 02:04:40 -0000 1.8
+++ AdapterStateful.java 7 Apr 2005 02:51:38 -0000 1.9
@@ -156,7 +156,7 @@
EJBContainer container = getContainer();
Servant servant =
getTieLoader().loadTieClass(container.getProxyInfo().getRemoteInterface(),
container.getClassLoader());
- Remote remote = (Remote)
factory.create(container.getEJBObject(pk));
+ Remote remote = (Remote)
factory.create(container.getEJBObject(pk), container.getClassLoader());
if (servant instanceof Tie) {
((Tie) servant).setTarget(remote);
1.9 +3 -3
openejb/modules/core/src/java/org/openejb/corba/AdapterStateless.java
Index: AdapterStateless.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/AdapterStateless.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- AdapterStateless.java 27 Mar 2005 02:04:40 -0000 1.8
+++ AdapterStateless.java 7 Apr 2005 02:51:38 -0000 1.9
@@ -96,7 +96,7 @@
Servant servant =
tieLoader.loadTieClass(container.getProxyInfo().getRemoteInterface(),
container.getClassLoader());
AdapterProxyFactory factory = new
AdapterProxyFactory(container.getProxyInfo().getRemoteInterface(),
container.getClassLoader());
- Remote remote = (Remote)
factory.create(container.getEJBObject(null));
+ Remote remote = (Remote)
factory.create(container.getEJBObject(null), container.getClassLoader());
if (servant instanceof Tie) {
((Tie) servant).setTarget(remote);