All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.glassfish.admingui.plugin.jms.JMXUtil Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2023 Contributors to the Eclipse Foundation
 * Copyright (c) 2009, 2018 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.glassfish.admingui.plugin.jms;

import java.lang.management.ManagementFactory;
import java.util.Set;

import javax.management.Attribute;
import javax.management.MBeanServerConnection;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;

/**
 *
 * @author jasonlee
 */
public class JMXUtil {

    /** Creates a new instance of JMXUtil */
    public JMXUtil() {
    }

    public static MBeanServerConnection getMBeanServer() {
        return ManagementFactory.getPlatformMBeanServer();
    }

    public static Object invoke(String objectName, String operationName) {
        return invoke(objectName, operationName, new Object[] {}, new String[] {});
    }

    public static Object invoke(String objectName, String operationName, Object[] params, String[] signature) {
        try {
            Object result = invoke(new ObjectName(objectName), operationName, params, signature);
            return result;
        } catch (MalformedObjectNameException ex) {
            throw new RuntimeException(objectName + " is MalformedObjectName.", ex);
        }
    }

    public static Object invoke(ObjectName objectName, String operationName, Object[] params, String[] signature) {

        try {
            Object result = getMBeanServer().invoke(objectName, operationName, params, signature);
            return result;
        } catch (Exception ex) {
            // The calling method will decide if to catch this exception or dump stack trace. ex issue#2902
            // ex.printStackTrace();
            throw new RuntimeException(ex);
        }
    }

    public static Object getAttribute(String objectName, String attributeName) {
        try {
            Object result = getAttribute(new ObjectName(objectName), attributeName);
            return result;
        } catch (MalformedObjectNameException ex) {
            return null; // TODO-ErrorHandling
        }

    }

    public static Object getAttribute(ObjectName objectName, String attributeName) {
        try {
            return getMBeanServer().getAttribute(objectName, attributeName);
        } catch (Exception ex) {
            return null;
        }
    }

    public static void setAttribute(String objectName, Attribute attributeName) {
        try {
            setAttribute(new ObjectName(objectName), attributeName);
        } catch (MalformedObjectNameException ex) {
            throw new RuntimeException(objectName + " is MalformedObjectName.", ex);
        }
    }

    public static void setAttribute(ObjectName objectName, Attribute attributeName) {
        try {
            getMBeanServer().setAttribute(objectName, attributeName);
        } catch (Exception ex) {
            throw new RuntimeException(ex);
        }

    }

    /**
     * Method that obtains the default values from domain
     *
     * @param objName Object Name of Mbean
     * @param params array containing the name of attribute whose default value is needed
     * @return an Object representing the default value
     */
    public static Object getDefaultAttributeValue(String objName, String[] params) {
        String operName = "getDefaultAttributeValue";
        String[] signature = { "java.lang.String" };
        Object defaultValue = invoke(objName, operName, params, signature);
        return defaultValue;
    }

    public static boolean isValidMBean(String objectName) {
        boolean valid = false;
        try {
            Set beans = getMBeanServer().queryMBeans(new ObjectName(objectName), null);
            if (beans.size() > 0) {
                valid = true;
            }
        } catch (Exception ex) {
            // ignore
        }
        return valid;
    }

    public final static String DomainDiagnosticsMBeanName = "com.sun.appserv:type=DomainDiagnostics,name=server,category=monitor";
    public final static String DomainDiagnosticsGenerateReportMethod = "generateReport";
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy