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