From 130ebf3b9c41347cedd5bb680723cbdc44c190f4 Mon Sep 17 00:00:00 2001 From: markt Date: Fri, 8 Oct 2010 11:57:04 +0000 Subject: [PATCH] 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 --- java/org/apache/naming/NamingContext.java | 4 ---- java/org/apache/naming/NamingContextBindingsEnumeration.java | 11 +++++------ 2 files changed, 5 insertions(+), 10 deletions(-) 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); } - - } -- 2.11.0