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

com.cucumber.utils.clients.jmx.JmxClient Maven / Gradle / Ivy

package com.cucumber.utils.clients.jmx;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import javax.management.MBeanServerConnection;
import javax.management.MBeanServerInvocationHandler;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class JmxClient {

    private Logger log = LogManager.getLogger();

    private String url;
    private String role;
    private String pwd;
    private JMXConnector jmxConnector;
    private MBeanServerConnection mbsConnection;

    public JmxClient(String url) {
        this(url, null, null);
    }

    public JmxClient(String url, String role, String pwd) {
        this.url = url;
        this.role = role;
        this.pwd = pwd;
        try {
            if (role != null && pwd != null) {
                Map env = new HashMap<>();
                env.put(JMXConnector.CREDENTIALS, new String[]{role, pwd});
                this.jmxConnector = JMXConnectorFactory.connect(new JMXServiceURL(url), env);
            } else {
                this.jmxConnector = JMXConnectorFactory.connect(new JMXServiceURL(url));
            }
            this.mbsConnection = jmxConnector.getMBeanServerConnection();
            log.info("Initialised JMX Connection to {}", url);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    public  T getMBeanProxy(String objectName, Class clazz) {
        try {
            return MBeanServerInvocationHandler
                    .newProxyInstance(mbsConnection, new ObjectName(objectName), clazz, true);
        } catch (MalformedObjectNameException e) {
            throw new RuntimeException(e);
        }
    }

    public void close() {
        try {
            this.jmxConnector.close();
        } catch (IOException e) {
            log.error(e);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy