User: osh     
  Date: 01/02/09 10:56:17

  Modified:    src/main/org/jboss/ejb/plugins/jrmp/server
                        JRMPContainerInvoker.java
  Log:
  Changed tx export/propagation/import in preparation to JTA independence.
  
  Revision  Changes    Path
  1.33      +40 -17    
jboss/src/main/org/jboss/ejb/plugins/jrmp/server/JRMPContainerInvoker.java
  
  Index: JRMPContainerInvoker.java
  ===================================================================
  RCS file: 
/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jrmp/server/JRMPContainerInvoker.java,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- JRMPContainerInvoker.java 2001/01/10 01:24:01     1.32
  +++ JRMPContainerInvoker.java 2001/02/09 18:56:17     1.33
  @@ -53,6 +53,8 @@
   import org.jboss.ejb.plugins.jrmp.interfaces.EJBMetaDataImpl;
   import org.jboss.ejb.plugins.jrmp.interfaces.SecureSocketFactory;
   
  +import org.jboss.tm.TransactionPropagationContextFactory;
  +
   import org.jboss.security.SecurityAssociation;
   
   import org.jboss.logging.Logger;
  @@ -73,7 +75,7 @@
    *           @author <a href="mailto:[EMAIL PROTECTED]">Sebastien 
Alborini</a>
    *      @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
    *           @author <a href="mailto:[EMAIL PROTECTED]">Juha Lindfors</a>
  - *      @version $Revision: 1.32 $
  + *      @version $Revision: 1.33 $
    */
   public class JRMPContainerInvoker
      extends RemoteServer
  @@ -101,6 +103,8 @@
   
      // Static --------------------------------------------------------
   
  +   private static TransactionPropagationContextFactory tpcFactory;
  +
      // Constructors --------------------------------------------------
   
      // Public --------------------------------------------------------
  @@ -132,11 +136,18 @@
      public void init()
      throws Exception
      {
  +      Context ctx = new InitialContext();
  +
         jndiName = container.getBeanMetaData().getJndiName();
  -      
  -      // Set transaction manager
  -      GenericProxy.setTransactionManager(container.getTransactionManager());
   
  +      // Get the transaction propagation context factory
  +      tpcFactory = 
(TransactionPropagationContextFactory)ctx.lookup("java:/TransactionPropagationContextExporter");
  +
  +      // Set the transaction manager and transaction propagation
  +      // context factory of the GenericProxy class
  +      
GenericProxy.setTransactionManager((TransactionManager)ctx.lookup("java:/TransactionManager"));
  +      GenericProxy.setTPCFactory(tpcFactory);
  +
         // Create method mappings for container invoker
         Method[] methods = 
((ContainerInvokerContainer)container).getRemoteClass().getMethods();
         beanMethodInvokerMap = new HashMap();
  @@ -332,6 +343,10 @@
      }
   
      // ContainerRemote implementation --------------------------------
  +
  +   /**
  +    *  Invoke a Home interface method.
  +    */
      public MarshalledObject invokeHome(MarshalledObject mimo)
      throws Exception
      {
  @@ -342,16 +357,18 @@
         {
            RemoteMethodInvocation rmi = (RemoteMethodInvocation)mimo.get();
            rmi.setMethodMap(homeMethodInvokerMap);
  -         Transaction tx = rmi.getTransaction();
   
  -         return new MarshalledObject(container.invokeHome(new 
MethodInvocation(null, rmi.getMethod(), rmi.getArguments(), tx,
  -            rmi.getPrincipal(), rmi.getCredential() )));
  +         return new MarshalledObject(container.invokeHome(new 
MethodInvocation(null, rmi.getMethod(), rmi.getArguments(),
  +            rmi.getPrincipal(), rmi.getCredential(), 
rmi.getTransactionPropagationContext() )));
         } finally
         {
            Thread.currentThread().setContextClassLoader(oldCl);
         }
      }
   
  +   /**
  +    *  Invoke a Remote interface method.
  +    */
      public MarshalledObject invoke(MarshalledObject mimo)
      throws Exception
      {
  @@ -362,16 +379,20 @@
         {
            RemoteMethodInvocation rmi = (RemoteMethodInvocation)mimo.get();
            rmi.setMethodMap(beanMethodInvokerMap);
  -         Transaction tx = rmi.getTransaction();
  +         Object tpc = rmi.getTransactionPropagationContext();
   
  -         return new MarshalledObject(container.invoke(new 
MethodInvocation(rmi.getId(), rmi.getMethod(), rmi.getArguments(), tx,
  -            rmi.getPrincipal(), rmi.getCredential() )));
  +         return new MarshalledObject(container.invoke(new 
MethodInvocation(rmi.getId(), rmi.getMethod(), rmi.getArguments(),
  +            rmi.getPrincipal(), rmi.getCredential(), 
rmi.getTransactionPropagationContext() )));
         } finally
         {
            Thread.currentThread().setContextClassLoader(oldCl);
         }
      }
   
  +   /**
  +    *  Invoke a Home interface method.
  +    *  This is for optimized local calls.
  +    */
      public Object invokeHome(Method m, Object[] args, Transaction tx,
         Principal identity, Object credential)
      throws Exception
  @@ -383,9 +404,8 @@
         {
            RemoteMethodInvocation rmi = new RemoteMethodInvocation(null, m, args);
   
  -         // Set the transaction context
  -         TransactionManager tm = container.getTransactionManager();
  -         rmi.setTransaction(tm != null? tm.getTransaction() : null);
  +         // Set the transaction propagation context
  +         
rmi.setTransactionPropagationContext(tpcFactory.getTransactionPropagationContext(tx));
   
            // Set the security stuff
            rmi.setPrincipal( SecurityAssociation.getPrincipal() );
  @@ -401,7 +421,7 @@
   
         try
         {
  -         return container.invokeHome(new MethodInvocation(null , m, args, tx,
  +         return container.invokeHome(new MethodInvocation(null, m, args, tx,
               identity, credential));
         } finally
         {
  @@ -409,6 +429,10 @@
         }
      }
   
  +   /**
  +    *  Invoke a Remote interface method.
  +    *  This is for optimized local calls.
  +    */
      public Object invoke(Object id, Method m, Object[] args, Transaction tx,
         Principal identity, Object credential )
      throws Exception
  @@ -420,9 +444,8 @@
         {
            RemoteMethodInvocation rmi = new RemoteMethodInvocation(id, m, args);
   
  -         // Set the transaction context
  -         TransactionManager tm = container.getTransactionManager();
  -         rmi.setTransaction(tm != null? tm.getTransaction() : null);
  +         // Set the transaction propagation context
  +         
rmi.setTransactionPropagationContext(tpcFactory.getTransactionPropagationContext(tx));
   
            // Set the security stuff
            rmi.setPrincipal( SecurityAssociation.getPrincipal() );
  
  
  

Reply via email to