Feedback on https://issues.apache.org/bugzilla/show_bug.cgi?id=50991
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 31 Mar 2011 13:11:26 +0000 (13:11 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 31 Mar 2011 13:11:26 +0000 (13:11 +0000)
No point trying to close a non-singleton resource

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1087291 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/deploy/NamingResources.java
webapps/docs/changelog.xml
webapps/docs/config/context.xml

index bd556f1..84c386c 100644 (file)
@@ -980,18 +980,21 @@ public class NamingResources extends LifecycleMBeanBase implements Serializable
             return;
         }
         for (ContextResource cr: resources.values()) {
-            String closeMethod = cr.getCloseMethod(); 
-            if (closeMethod != null && closeMethod.length() > 0) {
-                String name = cr.getName();
-                Object resource;
-                try {
-                     resource = ctxt.lookup(name);
-                } catch (NamingException e) {
-                    log.warn(sm.getString("namingResources.cleanupNoResource",
-                            cr.getName(), container), e);
-                    continue;
+            if (cr.getSingleton()) {
+                String closeMethod = cr.getCloseMethod(); 
+                if (closeMethod != null && closeMethod.length() > 0) {
+                    String name = cr.getName();
+                    Object resource;
+                    try {
+                         resource = ctxt.lookup(name);
+                    } catch (NamingException e) {
+                        log.warn(sm.getString(
+                                "namingResources.cleanupNoResource",
+                                cr.getName(), container), e);
+                        continue;
+                    }
+                    cleanUp(resource, name, closeMethod);
                 }
-                cleanUp(resource, name, closeMethod);
             }
         }
     }
index 71dbc54..65930df 100644 (file)
         Provide a configuration option that lets the close method to be used for
         a JNDI Resource to be defined by the user. This change also disables
         using the close method unless one is explicitly defined for the
-        resource. (markt)
+        resource and limits it to singleton resources. (markt)
       </add>
       <fix>
         Correctly track changes to context.xml files and trigger redeployment
index e8a5210..d998588 100644 (file)
       </attribute>
 
       <attribute name="closeMethod" required="false">
-        <p>Name of zero-argument method to call on the resource when it is no
-        longer required to speed up clean-up of resources that would otherwise
-        happen as part of garbage collection. If not specificed, no default is
-        defined and no close method will be called.</p>
+        <p>Name of the zero-argument method to call on a singleton resource when
+        it is no longer required. This is intended to speed up clean-up of
+        resources that would otherwise happen as part of garbage collection.
+        This attribute is ignored if the <code>singleton</code> attribute is
+        false. If not specificed, no default is defined and no close method will
+        be called.</p>
       </attribute>
 
       <attribute name="description" required="false">