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

Reply via email to