Author: genspring
Date: Wed Jun 15 07:09:46 2011
New Revision: 1135942
URL: http://svn.apache.org/viewvc?rev=1135942&view=rev
Log:
OPENEJB-1596 To add global jndi name to remote jndi system.
see GERONIMO-6008 to see how geronimo uses it.
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmJndiFactory.java
openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java?rev=1135942&r1=1135941&r2=1135942&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
Wed Jun 15 07:09:46 2011
@@ -352,7 +352,7 @@ public class JndiBuilder {
String name = strategy.getName(beanClass,
JndiNameStrategy.Interface.LOCALBEAN);
bind("openejb/local/" + name, ref, bindings, beanInfo,
beanClass);
- bindJava(bean, beanClass.getName(), ref);
+ bindJava(bean, beanClass, ref, bindings, beanInfo);
simpleNameRef = ref;
}
@@ -377,7 +377,7 @@ public class JndiBuilder {
String externalName = "openejb/local/" +
strategy.getName(interfce, JndiNameStrategy.Interface.BUSINESS_LOCAL);
bind(externalName, ref, bindings, beanInfo, interfce);
- bindJava(bean, interfce.getName(), ref);
+ bindJava(bean, interfce, ref, bindings, beanInfo);
if (simpleNameRef == null) simpleNameRef = ref;
}
@@ -404,7 +404,7 @@ public class JndiBuilder {
String name = strategy.getName(interfce,
JndiNameStrategy.Interface.BUSINESS_REMOTE);
bind("openejb/local/" + name, ref, bindings, beanInfo,
interfce);
bind("openejb/remote/" + name, ref, bindings, beanInfo,
interfce);
- bindJava(bean, interfce.getName(), ref);
+ bindJava(bean, interfce, ref, bindings, beanInfo);
if (simpleNameRef == null) simpleNameRef = ref;
}
@@ -428,7 +428,7 @@ public class JndiBuilder {
name = "openejb/Deployment/" + format(bean.getDeploymentID(),
bean.getLocalInterface().getName(), InterfaceType.EJB_LOCAL);
bind(name, ref, bindings, beanInfo, localHomeInterface);
- bindJava(bean, localHomeInterface.getName(), ref);
+ bindJava(bean, localHomeInterface, ref, bindings, beanInfo);
if (simpleNameRef == null) simpleNameRef = ref;
}
@@ -453,7 +453,7 @@ public class JndiBuilder {
name = "openejb/Deployment/" + format(bean.getDeploymentID(),
bean.getRemoteInterface().getName(), InterfaceType.EJB_OBJECT);
bind(name, ref, bindings, beanInfo, homeInterface);
- bindJava(bean, homeInterface.getName(), ref);
+ bindJava(bean, homeInterface, ref, bindings, beanInfo);
if (simpleNameRef == null) simpleNameRef = ref;
}
@@ -463,7 +463,7 @@ public class JndiBuilder {
try {
if (simpleNameRef != null) {
- bindJava(bean, null, simpleNameRef);
+ bindJava(bean, null, simpleNameRef, bindings, beanInfo);
}
} catch (NamingException e) {
throw new RuntimeException("Unable to bind simple java:global name
in jndi", e);
@@ -509,7 +509,7 @@ public class JndiBuilder {
private void bind(String name, Reference ref, Bindings bindings,
EnterpriseBeanInfo beanInfo, Class intrface) throws NamingException {
- if (name.startsWith("openejb/local/") ||
name.startsWith("openejb/remote/") || name.startsWith("openejb/localbean/")) {
+ if (name.startsWith("openejb/local/") ||
name.startsWith("openejb/remote/") || name.startsWith("openejb/localbean/") ||
name.startsWith("openejb/global/")) {
String externalName = name.replaceFirst("openejb/[^/]+/", "");
@@ -529,7 +529,7 @@ public class JndiBuilder {
beanInfo.jndiNames.add(externalName);
JndiNameInfo nameInfo = new JndiNameInfo();
- nameInfo.intrface = intrface.getName();
+ nameInfo.intrface = intrface == null ? null :
intrface.getName();
nameInfo.name = externalName;
beanInfo.jndiNamess.add(nameInfo);
@@ -565,7 +565,7 @@ public class JndiBuilder {
//ee6 specified ejb bindings in module, app, and global contexts
- private void bindJava(BeanContext cdi, String interfaceName, Reference
ref) throws NamingException {
+ private void bindJava(BeanContext cdi, Class intrface, Reference ref,
Bindings bindings, EnterpriseBeanInfo beanInfo) throws NamingException {
Context moduleContext = cdi.getModuleContext().getModuleJndiContext();
Context appContext =
cdi.getModuleContext().getAppContext().getAppJndiContext();
Context globalContext =
cdi.getModuleContext().getAppContext().getGlobalJndiContext();
@@ -573,8 +573,8 @@ public class JndiBuilder {
String appName =
cdi.getModuleContext().getAppContext().isStandaloneModule() ? "" :
cdi.getModuleContext().getAppContext().getId() + "/";
String moduleName = cdi.getModuleID() + "/";
String beanName = cdi.getEjbName();
- if (interfaceName != null) {
- beanName = beanName + "!" + interfaceName;
+ if (intrface != null) {
+ beanName = beanName + "!" + intrface.getName();
}
try {
String globalName = "global/" + appName + moduleName + beanName;
@@ -583,13 +583,21 @@ public class JndiBuilder {
logger.info(String.format("Jndi(name=\"java:%s\")",
globalName));
}
globalContext.bind(globalName, ref);
+ bind("openejb/global/" + globalName, ref, bindings, beanInfo,
intrface);
} catch (NameAlreadyBoundException e) {
//one interface in more than one role (e.g. both Local and Remote
return;
}
- appContext.bind("app/" + moduleName + beanName, ref);
+
+ String globalAppName = "app/" + moduleName + beanName;
+
+ appContext.bind(globalAppName, ref);
+ bind("openejb/global/" + globalAppName, ref, bindings, beanInfo,
intrface);
+
moduleContext.bind("module/" + beanName, ref);
}
+
+
/**
* This may not be that performant, but it's certain to be faster than the
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java?rev=1135942&r1=1135941&r2=1135942&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
Wed Jun 15 07:09:46 2011
@@ -186,6 +186,11 @@ public class AppModule implements Deploy
public String getJarLocation() {
return (id.getLocation() != null) ? id.getLocation().getAbsolutePath()
: null;
}
+
+ public void setModuleId(String moduleId) {
+
+ this.id = new ID(null, application, moduleId, id.getLocation(),
id.getUri(), this);
+ }
public String getModuleId() {
return id.getName();
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java?rev=1135942&r1=1135941&r2=1135942&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java
Wed Jun 15 07:09:46 2011
@@ -60,7 +60,8 @@ public class CoreContainerSystem impleme
if (!(jndiContext.lookup("openejb/local") instanceof Context)
|| !(jndiContext.lookup("openejb/remote") instanceof Context)
|| !(jndiContext.lookup("openejb/client") instanceof Context)
- || !(jndiContext.lookup("openejb/Deployment") instanceof Context))
{
+ || !(jndiContext.lookup("openejb/Deployment") instanceof Context)
+ || !(jndiContext.lookup("openejb/global") instanceof Context)) {
throw new RuntimeException("core openejb naming context not
properly initialized. It must have subcontexts for openejb/local,
openejb/remote, openejb/client, and openejb/Deployment already present");
}
}
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmJndiFactory.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmJndiFactory.java?rev=1135942&r1=1135941&r2=1135942&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmJndiFactory.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmJndiFactory.java
Wed Jun 15 07:09:46 2011
@@ -41,6 +41,7 @@ public class IvmJndiFactory implements J
jndiRootContext.bind("openejb/remote/.", "");
jndiRootContext.bind("openejb/client/.", "");
jndiRootContext.bind("openejb/Deployment/.", "");
+ jndiRootContext.bind("openejb/global/.", "");
} catch (javax.naming.NamingException e) {
throw new RuntimeException("this should not happen", e);
}
Modified:
openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java?rev=1135942&r1=1135941&r2=1135942&view=diff
==============================================================================
---
openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
(original)
+++
openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
Wed Jun 15 07:09:46 2011
@@ -76,7 +76,9 @@ class JndiRequestHandler {
private final Context ejbJndiTree;
private Context clientJndiTree;
private final Context deploymentsJndiTree;
-// private final Context globalTree;
+
+ private Context globalJndiTree;
+
private final ClusterableRequestHandler clusterableRequestHandler;
private Context rootContext;
@@ -84,8 +86,9 @@ class JndiRequestHandler {
ContainerSystem containerSystem =
SystemInstance.get().getComponent(ContainerSystem.class);
ejbJndiTree = (Context)
containerSystem.getJNDIContext().lookup("openejb/remote");
deploymentsJndiTree = (Context)
containerSystem.getJNDIContext().lookup("openejb/Deployment");
- // TODO if we had an actual global context, we'd look it up like this
-// globalTree = (Context)
containerSystem.getJNDIContext().lookup("openejb/global");
+
+ globalJndiTree = (Context)
containerSystem.getJNDIContext().lookup("openejb/global");
+
rootContext = containerSystem.getJNDIContext();
try {
clientJndiTree = (Context)
containerSystem.getJNDIContext().lookup("openejb/client");
@@ -165,6 +168,8 @@ class JndiRequestHandler {
context = getGlobalTree();
} else if (req.getModuleId() != null &&
req.getModuleId().equals("openejb/Deployment")){
context = deploymentsJndiTree;
+ } else if (req.getModuleId() != null &&
req.getModuleId().equals("openejb/global")){
+ context = globalJndiTree;
} else if (req.getModuleId() != null && clientJndiTree != null) {
context = (Context) clientJndiTree.lookup(req.getModuleId());
} else {