Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
   *
   * The contents of this file are subject to the terms of either the GNU
   * General Public License Version 2 only ("GPL") or the Common Development
   * and Distribution License("CDDL") (collectively, the "License").  You
   * may not use this file except in compliance with the License.  You can
  * obtain a copy of the License at
  * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
  * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
  * file and include the License file at packager/legal/LICENSE.txt.
  *
  * GPL Classpath Exception:
  * Oracle designates this particular file as subject to the "Classpath"
  * exception as provided by Oracle in the GPL Version 2 section of the License
  * file that accompanied this code.
  *
  * Modifications:
  * If applicable, add the following below the License Header, with the fields
  * enclosed by brackets [] replaced by your own identifying information:
  * "Portions Copyright [year] [name of copyright owner]"
  *
  * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
  * Version 2] license."  If you don't indicate a single choice of license, a
  * recipient has the option to distribute your version of this file under
  * either the CDDL, the GPL Version 2 or to extend the choice of license to
  * its licensees as provided above.  However, if you add GPL Version 2 code
  * and therefore, elected the GPL Version 2 license, then the option applies
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
 
 package com.sun.web.server;
 
 
 //END OF IASRI 4660742
 
This class implements the Tomcat ContainerListener interface and handles Context and Session related events.

Author(s):
Tony Ng
 
 public final class WebContainerListener 
     implements ContainerListener {
 
     private static final Logger _logger = .....;
 
     private static final ResourceBundle rb = .getResourceBundle();
 
     @LogMessageInfo(
             message = "ContainerEvent: {0}",
             level = "FINEST")
     public static final String CONTAINER_EVENT = "AS-WEB-00347";
 
     @LogMessageInfo(
             message = "Exception during invocation of InjectionManager.destroyManagedObject on {0} of web module {1}",
             level = "SEVERE",
             cause = "An exception occurred during destroyManagedObject",
             action = "Check the exception for the error")
     public static final String EXCEPTION_DURING_DESTROY_MANAGED_OBJECT = "AS-WEB-00348";
 
     static private HashSet<StringbeforeEvents = new HashSet<String>();
     static private HashSet<StringafterEvents = new HashSet<String>();
 
     static {
         // preInvoke events
        // postInvoke events
    }
    public WebContainerListener(InvocationManager invocationMgr,
                                InjectionManager injectionMgr) {
        this. = invocationMgr;
        this. = injectionMgr;
    }
    public void containerEvent(ContainerEvent event) {
        if(.isLoggable(.)) {
                        event.getType() + "," +
                        event.getContainer() + "," +
                        event.getData());
        }
        String type = event.getType();
        try {
            WebModule wm = (WebModuleevent.getContainer();
            if (.contains(type)) {
                preInvoke(wm);
            } else if (.contains(type)) {
                if (type.equals(.) ||
                        type.equals(.)) {
                    preDestroy(event);
                }
                postInvoke(wm);
            } else if (..equals(type)) {
                preInvoke(wm);
                preDestroy(event);
                postInvoke(wm);
            }
        } catch (Throwable t) {
            msg = MessageFormat.format(msg,
                new Object[] { typeevent.getContainer() });
            .log(.msgt);
        }
    }
    private void preInvoke(WebModule ctx) {
        WebModule wm = (WebModule)ctx;
        ComponentInvocation inv = new WebComponentInvocation(wm);
        .preInvoke(inv);
    }
    private void postInvoke(WebModule ctx) {
        WebModule wm = (WebModule)ctx;
        ComponentInvocation inv = new WebComponentInvocation(wm);
        .postInvoke(inv);
    }

    
Invokes preDestroy on the instance embedded in the given ContainerEvent.

Parameters:
event The ContainerEvent to process
    private void preDestroy(ContainerEvent event) {
        try {
            .destroyManagedObject(event.getData());
        } catch (Throwable t) {
            msg = MessageFormat.format(msg,
                new Object[] { event.getData(), event.getContainer() });
            .log(.msgt);
        }
    }
New to GrepCode? Check out our FAQ X