luehe       2004/04/06 19:27:47

  Modified:    catalina/src/share/org/apache/catalina/core
                        StandardContext.java
  Log:
  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.
  
  Revision  Changes    Path
  1.124     +18 -18    
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardContext.java
  
  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
  @@ -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 + " " +
  
  
  

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

Reply via email to