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);
}
}
}
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
</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">