[For some reason, a commit notification was never sent for this
change i committed last night]

date: 2004/04/07 02:27:47;  author: luehe;  state: Exp;  lines: +18 -18
Fixed problem where when replacing global JspServlet with
webapp-specific one, the wrapper for the global JspServlet (which had
already been stopped and marked unavailable) was still being
registered with JMX, because even though the wrapper had been removed
from the context's children, it was never removed from the "wrappers"
instance field.

Replaced all occurrences of "wrappers" with the result of
"findChildren()", so that we don't need to maintain two lists of
wrapper children.

DIFFS:

Index: StandardContext.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardContext.java,v
retrieving revision 1.123
retrieving revision 1.124
diff -u -r1.123 -r1.124
--- StandardContext.java 5 Apr 2004 22:40:07 -0000 1.123
+++ StandardContext.java 7 Apr 2004 02:27:47 -0000 1.124
@@ -109,7 +109,7 @@
*
* @author Craig R. McClanahan
* @author Remy Maucherat
- * @version $Revision: 1.123 $ $Date: 2004/04/05 22:40:07 $
+ * @version $Revision: 1.124 $ $Date: 2004/04/07 02:27:47 $
*/


 public class StandardContext
@@ -569,8 +569,6 @@
      */
     private transient DirContext webappResources = null;

-    private ArrayList wrappers=new ArrayList();
-
     private long startupTime;
     private long startTime;
     private long tldScanTime;
@@ -2315,7 +2313,6 @@
     public Wrapper createWrapper() {
         //log.info( "Create wrapper" );
         Wrapper wrapper = new StandardWrapper();
-        wrappers.add(wrapper);

         synchronized (instanceListeners) {
             for (int i = 0; i < instanceListeners.length; i++) {
@@ -3105,9 +3102,10 @@
      */
     public void removeChild(Container child) {

-        if (!(child instanceof Wrapper))
+        if (!(child instanceof Wrapper)) {
             throw new IllegalArgumentException
                 (sm.getString("standardContext.notWrapper"));
+        }

super.removeChild(child);

@@ -4416,8 +4414,6 @@

         // Reset application context
         context = null;
-
-        wrappers = new ArrayList();
     }

     /**
@@ -4523,8 +4519,6 @@
         // Reset application context
         context = null;

-        wrappers = new ArrayList();
-
         // This object will no longer be visible or used.
         try {
             resetContext();
@@ -5251,16 +5245,23 @@
     }


- /** JSR77 servlets attribute + /** + * JSR77 servlets attribute * * @return list of all servlets ( we know about ) */ public String[] getServlets() { - int size=wrappers.size(); - String result[]=new String[size]; - for( int i=0; i< size; i++ ) { - result[i]=((StandardWrapper)wrappers.get(i)).getObjectName(); + + String[] result = null; + + Container[] children = findChildren(); + if (children != null) { + result = new String[children.length]; + for( int i=0; i< children.length; i++ ) { + result[i] = ((StandardWrapper)children[i]).getObjectName(); + } } + return result; }

@@ -5325,10 +5326,9 @@
                     broadcaster.sendNotification(notification);
                 }
             }
-            for (Iterator it = wrappers.iterator(); it.hasNext() ; ) {
-                StandardWrapper wrapper=(StandardWrapper)it.next();
-                // XXX prevent duplicated registration
-                wrapper.registerJMX( this );
+            Container children[] = findChildren();
+            for (int i=0; children!=null && i<children.length; i++) {
+                ((StandardWrapper)children[i]).registerJMX( this );
             }
         } catch (Exception ex) {
             log.info("Error registering wrapper with jmx " + this + " " +


Jan



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to