From: markt Date: Wed, 6 Oct 2010 21:58:37 +0000 (+0000) Subject: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49956 X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=0499fd1d905fce1bdb627ca4a0cc8f53c902c536;p=tomcat7.0 Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49956 Handle case when @Resource annotation uses the full JNDI name for a resource. Based on a patch by Gurkan Erdogdu. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1005271 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/catalina/core/DefaultInstanceManager.java b/java/org/apache/catalina/core/DefaultInstanceManager.java index 8c989e3d8..85187febb 100644 --- a/java/org/apache/catalina/core/DefaultInstanceManager.java +++ b/java/org/apache/catalina/core/DefaultInstanceManager.java @@ -454,9 +454,10 @@ public class DefaultInstanceManager implements InstanceManager { Object lookedupResource; boolean accessibility; - if ((name != null) && - (name.length() > 0)) { - lookedupResource = context.lookup(name); + String normalizedName = normalize(name); + + if ((normalizedName != null) && (normalizedName.length() > 0)) { + lookedupResource = context.lookup(normalizedName); } else { lookedupResource = context.lookup(clazz.getName() + "/" + field.getName()); @@ -495,9 +496,10 @@ public class DefaultInstanceManager implements InstanceManager { Object lookedupResource; boolean accessibility; - if ((name != null) && - (name.length() > 0)) { - lookedupResource = context.lookup(name); + String normalizedName = normalize(name); + + if ((normalizedName != null) && (normalizedName.length() > 0)) { + lookedupResource = context.lookup(normalizedName); } else { lookedupResource = context.lookup( clazz.getName() + "/" + getName(method)); @@ -520,4 +522,11 @@ public class DefaultInstanceManager implements InstanceManager { return name.toString(); } + + private static String normalize(String jndiName){ + if(jndiName != null && jndiName.startsWith("java:comp/env/")){ + return jndiName.substring(14); + } + return jndiName; + } } diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 8dccec6f4..435155b65 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -66,6 +66,10 @@ 49952: Allow ServletContainerInitializers to add listeners to a web application. Patch provided by David Jencks. (markt) + + 49956: Handle case when @Resource annotation uses the full + JNDI name for a resource. Based on a patch by Gurkan Erdogdu. (markt) +