From: markt Date: Fri, 8 Oct 2010 11:57:04 +0000 (+0000) Subject: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49994 X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=130ebf3b9c41347cedd5bb680723cbdc44c190f4;p=tomcat7.0 Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49994 Lookup of JNDI references should return a new object instance each time git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1005789 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/naming/NamingContext.java b/java/org/apache/naming/NamingContext.java index 96315f08b..fec3fc78e 100644 --- a/java/org/apache/naming/NamingContext.java +++ b/java/org/apache/naming/NamingContext.java @@ -797,10 +797,6 @@ public class NamingContext implements Context { try { Object obj = NamingManager.getObjectInstance (entry.value, name, this, env); - if (obj != null) { - entry.value = obj; - entry.type = NamingEntry.ENTRY; - } return obj; } catch (NamingException e) { throw e; diff --git a/java/org/apache/naming/NamingContextBindingsEnumeration.java b/java/org/apache/naming/NamingContextBindingsEnumeration.java index 3a618f898..918e513a7 100644 --- a/java/org/apache/naming/NamingContextBindingsEnumeration.java +++ b/java/org/apache/naming/NamingContextBindingsEnumeration.java @@ -105,13 +105,13 @@ public class NamingContextBindingsEnumeration private Binding nextElementInternal() throws NamingException { NamingEntry entry = iterator.next(); + Object value; // If the entry is a reference, resolve it if (entry.type == NamingEntry.REFERENCE || entry.type == NamingEntry.LINK_REF) { try { - // A lookup will resolve the entry - ctx.lookup(new CompositeName(entry.name)); + value = ctx.lookup(new CompositeName(entry.name)); } catch (NamingException e) { throw e; } catch (Exception e) { @@ -119,12 +119,11 @@ public class NamingContextBindingsEnumeration ne.initCause(e); throw ne; } + } else { + value = entry.value; } - return new Binding(entry.name, entry.value.getClass().getName(), - entry.value, true); + return new Binding(entry.name, value.getClass().getName(), value, true); } - - }