Author: rmannibucau
Date: Mon Sep 5 13:34:42 2011
New Revision: 1165280
URL: http://svn.apache.org/viewvc?rev=1165280&view=rev
Log:
trying to lookup with module name if resource lookup fails
Modified:
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/AbstractObjectFactory.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IntraVmJndiReference.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/Strings.java
Modified:
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/AbstractObjectFactory.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/AbstractObjectFactory.java?rev=1165280&r1=1165279&r2=1165280&view=diff
==============================================================================
---
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/AbstractObjectFactory.java
(original)
+++
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/AbstractObjectFactory.java
Mon Sep 5 13:34:42 2011
@@ -19,17 +19,21 @@ package org.apache.openejb.tomcat.common
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.spi.ContainerSystem;
-import static org.apache.openejb.tomcat.common.NamingUtil.JNDI_NAME;
-import static org.apache.openejb.tomcat.common.NamingUtil.JNDI_PROVIDER_ID;
-import static org.apache.openejb.tomcat.common.NamingUtil.getProperty;
+import org.apache.openejb.util.Strings;
import javax.naming.Context;
+import javax.naming.InitialContext;
import javax.naming.Name;
+import javax.naming.NameNotFoundException;
import javax.naming.NamingException;
import javax.naming.Reference;
import javax.naming.spi.ObjectFactory;
import java.util.Hashtable;
+import static org.apache.openejb.tomcat.common.NamingUtil.JNDI_NAME;
+import static org.apache.openejb.tomcat.common.NamingUtil.JNDI_PROVIDER_ID;
+import static org.apache.openejb.tomcat.common.NamingUtil.getProperty;
+
public abstract class AbstractObjectFactory implements ObjectFactory {
public Object getObjectInstance(Object object, Name name, Context context,
Hashtable environment) throws Exception {
Reference ref = (Reference) object;
@@ -44,7 +48,16 @@ public abstract class AbstractObjectFact
}
// look up the reference
- Object value = lookup(jndiProviderId, jndiName);
+ Object value;
+ try {
+ value = lookup(jndiProviderId, jndiName);
+ } catch (NameNotFoundException nnfe) { // EE.5.18: try using
java:module/<shortName> prefix
+ try {
+ value = new InitialContext().lookup("java:module/" +
Strings.lastPart(ref.getClassName(), '.'));
+ } catch (NameNotFoundException ignored) { // throw the previous
exception
+ throw nnfe;
+ }
+ }
return value;
}
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IntraVmJndiReference.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IntraVmJndiReference.java?rev=1165280&r1=1165279&r2=1165280&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IntraVmJndiReference.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IntraVmJndiReference.java
Mon Sep 5 13:34:42 2011
@@ -16,10 +16,12 @@
*/
package org.apache.openejb.core.ivm.naming;
+import javax.naming.NameNotFoundException;
import javax.naming.NamingException;
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.spi.ContainerSystem;
+import org.apache.openejb.util.Strings;
public class IntraVmJndiReference extends Reference {
@@ -37,6 +39,8 @@ public class IntraVmJndiReference extend
ContainerSystem containerSystem =
SystemInstance.get().getComponent(ContainerSystem.class);
try {
return containerSystem.getJNDIContext().lookup(jndiName);
+ } catch (NameNotFoundException e) { // EE.5.18: try using
java:module/<shortName> prefix
+ return containerSystem.getJNDIContext().lookup("java:module/" +
Strings.lastPart(getClassName(), '.'));
} catch (NamingException e) {
throw (NamingException)new NamingException("could not look up " +
jndiName).initCause(e);
}
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/Strings.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/Strings.java?rev=1165280&r1=1165279&r2=1165280&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/Strings.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/Strings.java
Mon Sep 5 13:34:42 2011
@@ -92,4 +92,12 @@ public class Strings {
return stringToCheckForNull;
}
}
+
+ public static String lastPart(String className, char sep) {
+ int idx = className.lastIndexOf(sep);
+ if (idx >= 0) {
+ return className.substring(idx + 1, className.length());
+ }
+ return className;
+ }
}