User: starksm 
  Date: 02/04/04 19:52:32

  Modified:    src/main/org/jboss/ejb/plugins/local Tag: Branch_2_4
                        BaseLocalContainerInvoker.java
  Log:
  Add binding of local homes into JNDI
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.6.2.6   +47 -6     
jboss/src/main/org/jboss/ejb/plugins/local/BaseLocalContainerInvoker.java
  
  Index: BaseLocalContainerInvoker.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/local/BaseLocalContainerInvoker.java,v
  retrieving revision 1.6.2.5
  retrieving revision 1.6.2.6
  diff -u -r1.6.2.5 -r1.6.2.6
  --- BaseLocalContainerInvoker.java    28 Nov 2001 19:26:24 -0000      1.6.2.5
  +++ BaseLocalContainerInvoker.java    5 Apr 2002 03:52:32 -0000       1.6.2.6
  @@ -12,6 +12,8 @@
   import java.io.IOException;
   import java.lang.reflect.Method;
   import java.lang.reflect.Constructor;
  +import java.rmi.AccessException;
  +import java.rmi.NoSuchObjectException;
   import java.security.Principal;
   import java.util.ArrayList;
   import java.util.Collection;
  @@ -26,20 +28,20 @@
   import javax.ejb.EJBLocalHome;
   import javax.ejb.EJBLocalObject;
   import javax.ejb.AccessLocalException;
  -import java.rmi.AccessException;
   import javax.ejb.NoSuchObjectLocalException;
  -import java.rmi.NoSuchObjectException;
   import javax.ejb.TransactionRequiredLocalException;
  -import javax.transaction.TransactionRequiredException;
   import javax.ejb.TransactionRolledbackLocalException;
  -import javax.transaction.TransactionRolledbackException;
   import javax.naming.Name;
   import javax.naming.InitialContext;
   import javax.naming.Context;
   import javax.naming.NamingException;
   import javax.naming.NameNotFoundException;
  +import javax.naming.Reference;
  +import javax.naming.StringRefAddr;
   import javax.transaction.Transaction;
   import javax.transaction.TransactionManager;
  +import javax.transaction.TransactionRequiredException;
  +import javax.transaction.TransactionRolledbackException;
   
   import org.jboss.deployment.DeploymentException;
   import org.jboss.ejb.CacheKey;
  @@ -47,10 +49,12 @@
   import org.jboss.ejb.ContainerInvokerContainer;
   import org.jboss.ejb.Interceptor;
   import org.jboss.ejb.LocalContainerInvoker;
  +import org.jboss.ejb.LocalHomeObjectFactory;
   import org.jboss.ejb.MethodInvocation;
   import org.jboss.ejb.plugins.jrmp.interfaces.EJBMetaDataImpl;
   import org.jboss.ejb.plugins.jrmp.interfaces.RemoteMethodInvocation;
   import org.jboss.logging.Logger;
  +import org.jboss.naming.Util;
   import org.jboss.metadata.MetaData;
   import org.jboss.metadata.EntityMetaData;
   import org.jboss.metadata.SessionMetaData;
  @@ -106,12 +110,12 @@
         if (invokerContainer.getLocalClass() == null)
            return;
   
  -      Context ctx = new InitialContext();
  +      Context iniCtx = new InitialContext();
         jndiName = container.getBeanMetaData().getJndiName();
   
         // Set the transaction manager and transaction propagation
         // context factory of the GenericProxy class
  -      transactionManager = 
((TransactionManager)ctx.lookup("java:/TransactionManager"));
  +      transactionManager = 
(TransactionManager)iniCtx.lookup("java:/TransactionManager");
   
         // Create method mappings for container invoker
         Class clazz = invokerContainer.getLocalClass();
  @@ -132,6 +136,24 @@
            for (int i = 0; i < methods.length; i++)
               homeMethodInvokerMap.put(new 
Long(RemoteMethodInvocation.calculateHash(methods[i])), methods[i]);
         }
  +
  +      String jndiName = container.getBeanMetaData().getLocalJndiName();
  +      String beanName = container.getBeanMetaData().getEjbName();
  +
  +      // setup local home object factory, which is used for non-serializable 
objects such as local home
  +      // create link from unique name to application and container
  +      LocalHomeObjectFactory.rebind(jndiName, container.getApplication(), 
container);
  +
  +      // address used to lookup referance in LocalHomeObjectFactory
  +      StringRefAddr refAddr = new StringRefAddr("nns", jndiName);
  +
  +      // create a jndi referance to LocalHomeObjectFactory
  +      Reference jndiRef = new Reference(container.getBeanMetaData().getLocalHome(),
  +         refAddr, LocalHomeObjectFactory.class.getName(), null );
  +
  +      // bind that referance to my name
  +      Util.rebind(iniCtx, jndiName, jndiRef);
  +      log.debug("Bound Local " + beanName + " to " + jndiName);
      }
   
      public void start()
  @@ -142,6 +164,9 @@
   
      public void stop()
      {
  +      if( container == null )
  +         return;
  +
         // remove from the static hashmap
         if( beanMethodInvokerMap != null )
            beanMethodInvokerMap.clear();
  @@ -166,6 +191,22 @@
         }
   
         log.debug("Cleared method maps");
  +
  +      Class localHome = ((ContainerInvokerContainer)container).getLocalHomeClass();
  +      if(localHome == null)
  +      {
  +         return;
  +      }
  +      
  +      try
  +      {
  +         InitialContext ctx = new InitialContext();
  +         ctx.unbind(container.getBeanMetaData().getLocalJndiName());
  +      }
  +      catch (Exception e)
  +      {
  +         // ignore.
  +      }
      }
   
      public void destroy()
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to