Resources sometimes not cleaned up as the comparison was against the JNDI name, and not the ID, and the ID was being passed in..
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/b9d4e5ee Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/b9d4e5ee Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/b9d4e5ee Branch: refs/heads/tomee-1.7.x Commit: b9d4e5ee9bd845c1dcab3f85dc4b7ecb288b54e7 Parents: 2879bb0 Author: Jonathan Gallimore <[email protected]> Authored: Tue Apr 12 22:19:25 2016 +0100 Committer: Jonathan Gallimore <[email protected]> Committed: Tue Apr 12 22:19:25 2016 +0100 ---------------------------------------------------------------------- .../org/apache/openejb/assembler/classic/Assembler.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/b9d4e5ee/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java index 8464957..06ce2f3 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java @@ -1692,6 +1692,12 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A while (namingEnumeration != null && namingEnumeration.hasMoreElements()) { final Binding binding = namingEnumeration.nextElement(); final String boundName = name + "/" + binding.getName(); + + String id = boundName; + if (id.startsWith(OPENEJB_RESOURCE_JNDI_PREFIX)) { + id = id.substring(OPENEJB_RESOURCE_JNDI_PREFIX.length()); + } + final Object object = binding.getObject(); if (Context.class.isInstance(object)) { try { @@ -1701,7 +1707,7 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A logger.error("Error removing bindings from " + boundName, e); } } else if (LazyResource.class.isInstance(object)) { - removeResourceInfo(boundName); + removeResourceInfo(id); try { containerSystem.getJNDIContext().unbind(boundName); } catch (final NamingException e) { @@ -1842,7 +1848,7 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A final Iterator<ResourceInfo> iterator = configuration.facilities.resources.iterator(); while (iterator.hasNext()) { final ResourceInfo info = iterator.next(); - if (name.equals(OPENEJB_RESOURCE_JNDI_PREFIX + info.id)) { + if (name.equals(info.id)) { iterator.remove(); break; } @@ -2273,7 +2279,7 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A final LazyObjectReference<?> ref = LazyObjectReference.class.cast(binding.getObject()); if (! ref.isInitialized()) { globalContext.unbind(name); - removeResourceInfo(name); + removeResourceInfo(id); return; } }
