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.enterprise.web.connector.extension;
 
 
This class track monitoring or Grizzly, using JMX to invoke Grizzly main classes.

Author(s):
Jeanfrancois Arcand
  
 public class GrizzlyConfig implements MonitoringLevelListener{
 
     private static final Logger logger = .....;
 
     private static final ResourceBundle rb = .getResourceBundle();
 
     @LogMessageInfo(
             message = "Exception when initializing monitoring for network-listener [{0}]",
             level = "WARNING")
     public static final String INIT_MONITORING_EXCEPTION = "AS-WEB-00270";
 
     @LogMessageInfo(
             message = "InvokeGrizzly method={0} objectName={1}",
             level = "FINE")
     public static final String INVOKE_GRIZZLY = "AS-WEB-00271";
 
     @LogMessageInfo(
             message = "Exception while invoking mebean server operation [{0}]",
             level = "WARNING")
     public static final String INVOKE_MBEAN_EXCEPTION = "AS-WEB-00272";

    
Is monitoring already started.
 
     private boolean isMonitoringEnabled = false;
    
    
The JMX domain
 
     private String domain;
    

    
The port used to lookup Grizzly's Selector
    private int port;


    
The list of instance created. This list is not thread-safe.
    private static ArrayList<GrizzlyConfig>
            grizzlyConfigList = new ArrayList<GrizzlyConfig>();
    
  
    
This server context's default services.
    private ServiceLocator services = null;
    
    // --------------------------------------------------------------- //
   
    
    
Creates the monitoring helper.
    public GrizzlyConfig(WebContainer webContainerString domainint port) {
        this. = domain;
        this. = port;
        this. = webContainer.getServerContext().getDefaultServices();
        .add(this);
    }
    public void destroy() {
        .remove(this);
    }
    
    public void initConfig(){
        initMonitoringLevel();
    }
    
    
    private void initMonitoringLevel() {
        try{
            Config cfg = .getService(Config.class.);
            
            MonitoringLevel monitoringLevel = .// default per DTD
            if (cfg.getMonitoringService() != null) {
                ModuleMonitoringLevels levels =
                    cfg.getMonitoringService().getModuleMonitoringLevels();
                if (levels != null) {
                    monitoringLevel = MonitoringLevel.instance(
                                                    levels.getHttpService());
                }
            }
        
            if(..equals(monitoringLevel)) {
                 = false;
            } else {
                 = true;
            } 
            
            String methodToInvoke =  ? "enableMonitoring" :
                "disableMonitoring";
            invokeGrizzly(methodToInvoke);
        } catch (Exception ex) {
            String msg = .getString();
            msg = MessageFormat.format(msg, Integer.valueOf());
            .log(.msgex);
        }
    } 
    
    
    public void registerMonitoringLevelEvents() {
        MonitoringRegistry monitoringRegistry = .getService(MonitoringRegistry.class);
        if (monitoringRegistry!=null) {
            monitoringRegistry.registerMonitoringLevelListener(
                this.);
        }
    }
    
    private void unregisterMonitoringLevelEvents() {
        MonitoringRegistry monitoringRegistry = .getService(MonitoringRegistry.class);
        if (monitoringRegistry!=null) {
            monitoringRegistry.unregisterMonitoringLevelListener(this);
        }
    }
    
    public void setLevel(MonitoringLevel level) {
        // deprecated, ignore
    }
    
    
    public void changeLevel(MonitoringLevel fromMonitoringLevel to,
                            MonitoredObjectType type) {
        if (..equals(type)) {
            if(..equals(to)) {
                 = false;
            } else {
                 = true;
            }
        }            
        String methodToInvoke =  ? "enableMonitoring" :
            "disabledMonitoring";
        invokeGrizzly(methodToInvoke);        
    }
    
    
    public void changeLevel(MonitoringLevel fromMonitoringLevel to
			    Stats handback) {
        // deprecated, ignore
    }
    
    protected final void invokeGrizzly(String methodToInvoke) {  
        invokeGrizzly(methodToInvoke,null,null);
    }   
     
    
    protected final void invokeGrizzly(String methodToInvoke
                                       Object[] objectsString[] signature) {  
        try{
            String onStr =  + ":type=Selector,name=http" + ;
            ObjectName objectName = new ObjectName(onStr);
            if (.isLoggable(.)) {
                .log(.,
                        new Object[] {methodToInvokeobjectName});
            }
            
        } catch ( Exception ex ){
            String msg = .getString();
            msg = MessageFormat.format(msgmethodToInvoke);
            .log(.msgex);
            //throw new RuntimeException(ex);
        }
    }

    
    
Enable CallFlow gathering mechanism.
    public final void setEnableCallFlow(boolean enableCallFlow){
        String methodToInvoke = enableCallFlow ? "enableMonitoring" :
            "disabledMonitoring";
        invokeGrizzly(methodToInvoke);        
    }

    
    
Return the list of all instance of this class.
        return ;
    }
    
    
    
Return the port this configuration belongs.
    public int getPort(){
        return ;
    }   
New to GrepCode? Check out our FAQ X