Author: dblevins
Date: Sat Apr 18 03:28:12 2009
New Revision: 766208
URL: http://svn.apache.org/viewvc?rev=766208&view=rev
Log:
OPENEJB-1018: Support for exposing a single interface as @WebService, @Remote,
and @Local
Another step in the right direction. Split the internal openejb/ejb/ tree into
two trees: openejb/local and openejb/remote. One is for the
LocalInitialContextFactory and the other is for the
RemoteInitialContextFactory. The business local and local home interfaces are
not bound into the openejb/remote tree. The result is that if someone uses the
same interface as the remote and local business interface the
LocalInitialContextFactory will always give you the local view and the
RemoteInitalContextFactory will always give you the remote view.
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
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/client/LocalInitialContext.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/InitContextFactory.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContainer.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/entity/cmr/CmrMappingTests.java
openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/WebAdminBean.java
openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/httpd/HttpRequestImpl.java
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=766208&r1=766207&r2=766208&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
Sat Apr 18 03:28:12 2009
@@ -874,9 +874,10 @@
try {
IvmContext ivmContext = (IvmContext) globalContext;
ivmContext.prune("openejb/Deployment");
- ivmContext.prune("openejb/ejb");
+ ivmContext.prune("openejb/local");
+ ivmContext.prune("openejb/remote");
} catch (NamingException e) {
- undeployException.getCauses().add(new Exception("Unable to prune
openejb/Deployments and openejb/ejb namespaces, this could cause future
deployments to fail.", e));
+ undeployException.getCauses().add(new Exception("Unable to prune
openejb/Deployments and openejb/local namespaces, this could cause future
deployments to fail.", e));
}
deployments.clear();
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=766208&r1=766207&r2=766208&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
Sat Apr 18 03:28:12 2009
@@ -266,9 +266,11 @@
Class homeInterface = deployment.getHomeInterface();
if (homeInterface != null) {
- String name = "openejb/ejb/" + strategy.getName(homeInterface,
JndiNameStrategy.Interface.REMOTE_HOME);
ObjectReference ref = new
ObjectReference(deployment.getEJBHome());
- bind(name, ref, bindings, beanInfo, homeInterface);
+
+ String name = strategy.getName(homeInterface,
JndiNameStrategy.Interface.REMOTE_HOME);
+ bind("openejb/local/" + name, ref, bindings, beanInfo,
homeInterface);
+ bind("openejb/remote/" + name, ref, bindings, beanInfo,
homeInterface);
name = "openejb/Deployment/" +
format(deployment.getDeploymentID(), deployment.getRemoteInterface().getName());
bind(name, ref, bindings, beanInfo, homeInterface);
@@ -277,16 +279,17 @@
bind(name, ref, bindings, beanInfo, homeInterface);
}
} catch (NamingException e) {
- throw new RuntimeException("Unable to bind home interface for
deployment " + id, e);
+ throw new RuntimeException("Unable to bind remote home interface
for deployment " + id, e);
}
try {
Class localHomeInterface = deployment.getLocalHomeInterface();
if (localHomeInterface != null) {
- String name = "openejb/ejb/" +
strategy.getName(deploymentInfo.getLocalHomeInterface(),
JndiNameStrategy.Interface.LOCAL_HOME);
ObjectReference ref = new
ObjectReference(deployment.getEJBLocalHome());
- bind(name, ref, bindings, beanInfo, localHomeInterface);
+
+ String name =
strategy.getName(deploymentInfo.getLocalHomeInterface(),
JndiNameStrategy.Interface.LOCAL_HOME);
+ bind("openejb/local/" + name, ref, bindings, beanInfo,
localHomeInterface);
name = "openejb/Deployment/" +
format(deployment.getDeploymentID(), deployment.getLocalInterface().getName());
bind(name, ref, bindings, beanInfo, localHomeInterface);
@@ -295,7 +298,7 @@
bind(name, ref, bindings, beanInfo, localHomeInterface);
}
} catch (NamingException e) {
- throw new RuntimeException("Unable to bind local interface for
deployment " + id, e);
+ throw new RuntimeException("Unable to bind local home interface
for deployment " + id, e);
}
try {
@@ -313,7 +316,7 @@
String internalName = "openejb/Deployment/" +
format(deployment.getDeploymentID(), interfce.getName(),
InterfaceType.BUSINESS_LOCAL);
bind(internalName, ref, bindings, beanInfo, interfce);
- String externalName = "openejb/ejb/" +
strategy.getName(interfce, JndiNameStrategy.Interface.BUSINESS_LOCAL);
+ String externalName = "openejb/local/" +
strategy.getName(interfce, JndiNameStrategy.Interface.BUSINESS_LOCAL);
bind(externalName, ref, bindings, beanInfo, interfce);
}
} catch (NamingException e) {
@@ -336,8 +339,9 @@
String internalName = "openejb/Deployment/" +
format(deployment.getDeploymentID(), interfce.getName(),
InterfaceType.BUSINESS_REMOTE);
bind(internalName, ref, bindings, beanInfo, interfce);
- String externalName = "openejb/ejb/" +
strategy.getName(interfce, JndiNameStrategy.Interface.BUSINESS_REMOTE);
- bind(externalName, ref, bindings, beanInfo, interfce);
+ 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);
}
} catch (NamingException e) {
throw new RuntimeException("Unable to bind business remote
deployment in jndi.", e);
@@ -345,13 +349,14 @@
try {
if (MessageListener.class.equals(deployment.getMdbInterface())) {
- String name = "openejb/ejb/" +
deployment.getDeploymentID().toString();
String destinationId = deployment.getDestinationId();
String jndiName = "java:openejb/Resource/" + destinationId;
Reference reference = new IntraVmJndiReference(jndiName);
- bind(name, reference, bindings, beanInfo,
MessageListener.class);
+ String deploymentId = deployment.getDeploymentID().toString();
+ bind("openejb/local/" + deploymentId, reference, bindings,
beanInfo, MessageListener.class);
+ bind("openejb/remote/" + deploymentId, reference, bindings,
beanInfo, MessageListener.class);
}
} catch (NamingException e) {
throw new RuntimeException("Unable to bind mdb destination in
jndi.", e);
@@ -380,12 +385,15 @@
private void bind(String name, Reference ref, Bindings bindings,
EnterpriseBeanInfo beanInfo, Class intrface) throws NamingException {
- if (name.startsWith("openejb/ejb/")) {
+ if (name.startsWith("openejb/local/") ||
name.startsWith("openejb/remote/")) {
- String externalName = name.replaceFirst("openejb/ejb/", "");
+ String externalName = name.replaceFirst("openejb/[^/]+/", "");
if (bindings.contains(name)){
- logger.debug("Duplicate: Jndi(name=" + externalName +")");
+ // We bind under two sections of jndi, only warn once.. the
user doesn't need to be bothered with that detail
+ if (name.startsWith("openejb/local/")) {
+ logger.debug("Duplicate: Jndi(name=" + externalName +")");
+ }
return;
}
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContext.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContext.java?rev=766208&r1=766207&r2=766208&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContext.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContext.java
Sat Apr 18 03:28:12 2009
@@ -203,7 +203,7 @@
private static Context getContainerSystemEjbContext() throws
NamingException {
ContainerSystem containerSystem =
SystemInstance.get().getComponent(ContainerSystem.class);
Context context = containerSystem.getJNDIContext();
- context = (Context) context.lookup("openejb/ejb");
+ context = (Context) context.lookup("openejb/local");
return context;
}
}
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=766208&r1=766207&r2=766208&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
Sat Apr 18 03:28:12 2009
@@ -36,7 +36,7 @@
* Constructs a CoreContainerSystem and initializes the root JNDI context.
* It also creates three sub contexts, namely
* <ul>
- * <li>java:openejb/ejb</li>
+ * <li>java:openejb/local</li>
* <li>java:openejb/client</li>
* <li>java:openejb/Deployment</li>
* </ul>
@@ -49,10 +49,11 @@
jndiRootContext = IvmContext.createRootContext();
- jndiRootContext.createSubcontext("java:openejb/ejb");
+ jndiRootContext.createSubcontext("java:openejb/local");
jndiRootContext.createSubcontext("java:openejb/client");
jndiRootContext.createSubcontext("java:openejb/Deployment");
- jndiRootContext.bind("openejb/ejb/.", "");
+ jndiRootContext.bind("openejb/local/.", "");
+ jndiRootContext.bind("openejb/remote/.", "");
jndiRootContext.bind("openejb/client/.", "");
jndiRootContext.bind("openejb/Deployment/.", "");
}
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/InitContextFactory.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/InitContextFactory.java?rev=766208&r1=766207&r2=766208&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/InitContextFactory.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/InitContextFactory.java
Sat Apr 18 03:28:12 2009
@@ -59,7 +59,7 @@
ContainerSystem containerSystem =
SystemInstance.get().getComponent(ContainerSystem.class);
Context context = containerSystem.getJNDIContext();
- context = (Context) context.lookup("java:openejb/ejb");
+ context = (Context) context.lookup("java:openejb/local");
return context;
}
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContainer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContainer.java?rev=766208&r1=766207&r2=766208&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContainer.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContainer.java
Sat Apr 18 03:28:12 2009
@@ -264,6 +264,7 @@
ClassFinder finder = new ClassFinder(interceptor.getClass());
providerData.getAroundInvoke().addAll(finder.findAnnotatedMethods(AroundInvoke.class));
interceptorDatas.add(providerData);
+// interceptorDatas.add(0, providerData);
}
InterceptorStack interceptorStack = new
InterceptorStack(instance.bean, runMethod, Operation.BUSINESS_WS,
interceptorDatas, interceptors);
Modified:
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/entity/cmr/CmrMappingTests.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/entity/cmr/CmrMappingTests.java?rev=766208&r1=766207&r2=766208&view=diff
==============================================================================
---
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/entity/cmr/CmrMappingTests.java
(original)
+++
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/entity/cmr/CmrMappingTests.java
Sat Apr 18 03:28:12 2009
@@ -65,9 +65,9 @@
compoundPK_20_20 = new Integer(20);
compoundPK_20_20_field1 = new Integer(20);
- oneInverseHome = (OneInverseSideLocalHome)
initialContext.lookup("java:openejb/ejb/client/tests/entity/cmp2/OneInverseSideBean/EJBHomeLocal");
- oneOwningHome = (OneOwningSideLocalHome)
initialContext.lookup("java:openejb/ejb/client/tests/entity/cmp2/OneOwningSideBean/EJBHomeLocal");
- manyHome = (ManyOwningSideLocalHome)
initialContext.lookup("java:openejb/ejb/client/tests/entity/cmp2/ManyOwningSideBean/EJBHomeLocal");
+ oneInverseHome = (OneInverseSideLocalHome)
initialContext.lookup("java:openejb/local/client/tests/entity/cmp2/OneInverseSideBean/EJBHomeLocal");
+ oneOwningHome = (OneOwningSideLocalHome)
initialContext.lookup("java:openejb/local/client/tests/entity/cmp2/OneOwningSideBean/EJBHomeLocal");
+ manyHome = (ManyOwningSideLocalHome)
initialContext.lookup("java:openejb/local/client/tests/entity/cmp2/ManyOwningSideBean/EJBHomeLocal");
}
public void testOneToOneSetCMROnOwningSide() throws Exception {
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=766208&r1=766207&r2=766208&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
Sat Apr 18 03:28:12 2009
@@ -77,7 +77,7 @@
JndiRequestHandler(EjbDaemon daemon) throws Exception {
ContainerSystem containerSystem =
SystemInstance.get().getComponent(ContainerSystem.class);
- ejbJndiTree = (Context)
containerSystem.getJNDIContext().lookup("openejb/ejb");
+ ejbJndiTree = (Context)
containerSystem.getJNDIContext().lookup("openejb/remote");
deploymentsJndiTree = (Context)
containerSystem.getJNDIContext().lookup("openejb/Deployment");
try {
clientJndiTree = (Context)
containerSystem.getJNDIContext().lookup("openejb/client");
Modified:
openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/WebAdminBean.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/WebAdminBean.java?rev=766208&r1=766207&r2=766208&view=diff
==============================================================================
---
openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/WebAdminBean.java
(original)
+++
openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/WebAdminBean.java
Sat Apr 18 03:28:12 2009
@@ -332,7 +332,7 @@
try{
ContainerSystem containerSystem =
SystemInstance.get().getComponent(ContainerSystem.class);
Context ctx = containerSystem.getJNDIContext();
- ctx = (Context) ctx.lookup("openejb/ejb");
+ ctx = (Context) ctx.lookup("openejb/local");
NamingEnumeration enumeration = ctx.list("");
//System.out.println("\n\nENUM "+enumeration);
Modified:
openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/httpd/HttpRequestImpl.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/httpd/HttpRequestImpl.java?rev=766208&r1=766207&r2=766208&view=diff
==============================================================================
---
openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/httpd/HttpRequestImpl.java
(original)
+++
openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/httpd/HttpRequestImpl.java
Sat Apr 18 03:28:12 2009
@@ -627,7 +627,7 @@
WebSessionHome home = null;
try {
- home = (WebSessionHome)new
InitialContext().lookup("java:openejb/ejb/httpd/session");
+ home = (WebSessionHome)new
InitialContext().lookup("java:openejb/local/httpd/session");
} catch (NamingException e) {
// TODO Auto-generated catch block
throw new IllegalStateException("The WebSessionBean has not been
deployed. "+