Re: svn commit: r1079575 - in /tomcat/trunk: java/org/apache/catalina/core/StandardContext.java java/org/apache/catalina/deploy/LocalStrings.properties java/org/apache/catalina/deploy/NamingResources.

2011-03-29 Thread Filip Hanik - Dev Lists

namingResources.cleanupNoClose

couldn't you implement a closeMethod=close in theResource  element, that 
way the name of the method is configurable.

Filip



On 3/8/2011 3:15 PM, ma...@apache.org wrote:

Author: markt
Date: Tue Mar  8 22:15:34 2011
New Revision: 1079575

URL: http://svn.apache.org/viewvc?rev=1079575view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=25060
When stopping naming resources look for DataSource resources with a zero-arg 
close() method and call it if one is found
Works with Commons DBCP.

Modified:
 tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
 tomcat/trunk/java/org/apache/catalina/deploy/LocalStrings.properties
 tomcat/trunk/java/org/apache/catalina/deploy/NamingResources.java
 tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardContext.java?rev=1079575r1=1079574r2=1079575view=diff
==
--- tomcat/trunk/java/org/apache/catalina/core/StandardContext.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardContext.java Tue Mar  8 
22:15:34 2011
@@ -5384,15 +5384,13 @@ public class StandardContext extends Con

  setState(LifecycleState.STOPPING);

-// Currently this is effectively a NO-OP but needs to be called to
-// ensure the NamingResources follows the correct lifecycle
+// Binding thread
+ClassLoader oldCCL = bindThread();
+
  if (namingResources != null) {
  namingResources.stop();
  }

-// Binding thread
-ClassLoader oldCCL = bindThread();
-
  try {

  // Stop our child containers, if any

Modified: tomcat/trunk/java/org/apache/catalina/deploy/LocalStrings.properties
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/deploy/LocalStrings.properties?rev=1079575r1=1079574r2=1079575view=diff
==
--- tomcat/trunk/java/org/apache/catalina/deploy/LocalStrings.properties 
(original)
+++ tomcat/trunk/java/org/apache/catalina/deploy/LocalStrings.properties Tue 
Mar  8 22:15:34 2011
@@ -43,5 +43,10 @@ webxml.unrecognisedPublicId=The public I
  webXml.version.nfe=Unable to parse [{0}] from the version string [{1}]. This 
component of the version string will be ignored.
  webXml.wrongFragmentName=Used a wrong fragment name {0} at web.xml 
absolute-ordering tag!

+namingResources.cleanupCloseFailed=Failed to invoke close method for resource 
[{0}] in container [{1}] so no cleanup was performed for that resource
+namingResources.cleanupCloseSecurity=Unable to retrieve close method for 
resource [{0}] in container [{1}] so no cleanup was performed for that resource
+namingResources.cleanupNoClose=Resource [{0}] in container [{1}] does not have 
a close method so no cleanup was performed for that resource
+namingResources.cleanupNoContext=Failed to retrieve JNDI naming context for 
container [{0}] so no cleanup was performed for that container
+namingResources.cleanupNoResource=Failed to retrieve JNDI resource [{0}] for 
container [{1}] so no cleanup was performed for that resource
  namingResources.mbeanCreateFail=Failed to create MBean for naming resource 
[{0}]
  namingResources.mbeanDestroyFail=Failed to destroy MBean for naming resource 
[{0}]

Modified: tomcat/trunk/java/org/apache/catalina/deploy/NamingResources.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/deploy/NamingResources.java?rev=1079575r1=1079574r2=1079575view=diff
==
--- tomcat/trunk/java/org/apache/catalina/deploy/NamingResources.java (original)
+++ tomcat/trunk/java/org/apache/catalina/deploy/NamingResources.java Tue Mar  
8 22:15:34 2011
@@ -22,9 +22,14 @@ package org.apache.catalina.deploy;
  import java.beans.PropertyChangeListener;
  import java.beans.PropertyChangeSupport;
  import java.io.Serializable;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
  import java.util.HashMap;
  import java.util.Hashtable;

+import javax.naming.NamingException;
+import javax.sql.DataSource;
+
  import org.apache.catalina.Container;
  import org.apache.catalina.Context;
  import org.apache.catalina.Engine;
@@ -35,6 +40,7 @@ import org.apache.catalina.mbeans.MBeanU
  import org.apache.catalina.util.LifecycleMBeanBase;
  import org.apache.juli.logging.Log;
  import org.apache.juli.logging.LogFactory;
+import org.apache.naming.ContextBindings;
  import org.apache.tomcat.util.res.StringManager;


@@ -949,11 +955,84 @@ public class NamingResources extends Lif

  @Override
  protected void stopInternal() throws LifecycleException {
+cleanUp();
  setState(LifecycleState.STOPPING);
   

Re: svn commit: r1079575 - in /tomcat/trunk: java/org/apache/catalina/core/StandardContext.java java/org/apache/catalina/deploy/LocalStrings.properties java/org/apache/catalina/deploy/NamingResources.

2011-03-29 Thread Mark Thomas
On 29/03/2011 15:52, Filip Hanik - Dev Lists wrote:
 namingResources.cleanupNoClose
 
 couldn't you implement a closeMethod=close in theResource  element,
 that way the name of the method is configurable.

Like it. There was a bug reported with the timing of this call so there
is some work to do here already. Shouldn't be too hard to add this.

Mark

 
 Filip
 
 
 
 On 3/8/2011 3:15 PM, ma...@apache.org wrote:
 Author: markt
 Date: Tue Mar  8 22:15:34 2011
 New Revision: 1079575

 URL: http://svn.apache.org/viewvc?rev=1079575view=rev
 Log:
 Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=25060
 When stopping naming resources look for DataSource resources with a
 zero-arg close() method and call it if one is found
 Works with Commons DBCP.

 Modified:
  tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
  tomcat/trunk/java/org/apache/catalina/deploy/LocalStrings.properties
  tomcat/trunk/java/org/apache/catalina/deploy/NamingResources.java
  tomcat/trunk/webapps/docs/changelog.xml

 Modified: tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
 URL:
 http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardContext.java?rev=1079575r1=1079574r2=1079575view=diff

 ==

 --- tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
 (original)
 +++ tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
 Tue Mar  8 22:15:34 2011
 @@ -5384,15 +5384,13 @@ public class StandardContext extends Con

   setState(LifecycleState.STOPPING);

 -// Currently this is effectively a NO-OP but needs to be
 called to
 -// ensure the NamingResources follows the correct lifecycle
 +// Binding thread
 +ClassLoader oldCCL = bindThread();
 +
   if (namingResources != null) {
   namingResources.stop();
   }

 -// Binding thread
 -ClassLoader oldCCL = bindThread();
 -
   try {

   // Stop our child containers, if any

 Modified:
 tomcat/trunk/java/org/apache/catalina/deploy/LocalStrings.properties
 URL:
 http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/deploy/LocalStrings.properties?rev=1079575r1=1079574r2=1079575view=diff

 ==

 ---
 tomcat/trunk/java/org/apache/catalina/deploy/LocalStrings.properties
 (original)
 +++
 tomcat/trunk/java/org/apache/catalina/deploy/LocalStrings.properties
 Tue Mar  8 22:15:34 2011
 @@ -43,5 +43,10 @@ webxml.unrecognisedPublicId=The public I
   webXml.version.nfe=Unable to parse [{0}] from the version string
 [{1}]. This component of the version string will be ignored.
   webXml.wrongFragmentName=Used a wrong fragment name {0} at web.xml
 absolute-ordering tag!

 +namingResources.cleanupCloseFailed=Failed to invoke close method for
 resource [{0}] in container [{1}] so no cleanup was performed for that
 resource
 +namingResources.cleanupCloseSecurity=Unable to retrieve close method
 for resource [{0}] in container [{1}] so no cleanup was performed for
 that resource
 +namingResources.cleanupNoClose=Resource [{0}] in container [{1}] does
 not have a close method so no cleanup was performed for that resource
 +namingResources.cleanupNoContext=Failed to retrieve JNDI naming
 context for container [{0}] so no cleanup was performed for that
 container
 +namingResources.cleanupNoResource=Failed to retrieve JNDI resource
 [{0}] for container [{1}] so no cleanup was performed for that resource
   namingResources.mbeanCreateFail=Failed to create MBean for naming
 resource [{0}]
   namingResources.mbeanDestroyFail=Failed to destroy MBean for naming
 resource [{0}]

 Modified:
 tomcat/trunk/java/org/apache/catalina/deploy/NamingResources.java
 URL:
 http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/deploy/NamingResources.java?rev=1079575r1=1079574r2=1079575view=diff

 ==

 --- tomcat/trunk/java/org/apache/catalina/deploy/NamingResources.java
 (original)
 +++ tomcat/trunk/java/org/apache/catalina/deploy/NamingResources.java
 Tue Mar  8 22:15:34 2011
 @@ -22,9 +22,14 @@ package org.apache.catalina.deploy;
   import java.beans.PropertyChangeListener;
   import java.beans.PropertyChangeSupport;
   import java.io.Serializable;
 +import java.lang.reflect.InvocationTargetException;
 +import java.lang.reflect.Method;
   import java.util.HashMap;
   import java.util.Hashtable;

 +import javax.naming.NamingException;
 +import javax.sql.DataSource;
 +
   import org.apache.catalina.Container;
   import org.apache.catalina.Context;
   import org.apache.catalina.Engine;
 @@ -35,6 +40,7 @@ import org.apache.catalina.mbeans.MBeanU
   import org.apache.catalina.util.LifecycleMBeanBase;
   import org.apache.juli.logging.Log;
   import org.apache.juli.logging.LogFactory;
 +import