Search in sources :

Example 16 with JMXServiceURL

use of javax.management.remote.JMXServiceURL in project opennms by OpenNMS.

the class GenericJMXDetectorFactory method buildRequest.

@Override
public DetectRequest buildRequest(String location, InetAddress address, Integer port, Map<String, String> attributes) {
    // in case port is null, but url is provided, the port is extracted from the url
    if (port == null && attributes.containsKey("url")) {
        try {
            final JmxConnectionConfig config = JmxConnectionConfigBuilder.buildFrom(address, attributes).build();
            port = new JMXServiceURL(config.getUrl()).getPort();
        } catch (MalformedURLException e) {
            throw new IllegalArgumentException("url is not valid", e);
        }
    }
    return new DetectRequestImpl(address, port, getRuntimeAttributes(address, port));
}
Also used : JMXServiceURL(javax.management.remote.JMXServiceURL) MalformedURLException(java.net.MalformedURLException) DetectRequestImpl(org.opennms.netmgt.provision.support.DetectRequestImpl) JmxConnectionConfig(org.opennms.netmgt.jmx.connection.JmxConnectionConfig)

Example 17 with JMXServiceURL

use of javax.management.remote.JMXServiceURL in project opennms by OpenNMS.

the class JmxUtils method getMBeanServer.

public static MBeanServer getMBeanServer(JmxConfigDao jmxConfigDao, String address, Map<String, String> parameters) {
    Objects.requireNonNull(address);
    Objects.requireNonNull(parameters);
    if (jmxConfigDao != null && jmxConfigDao.getConfig() != null) {
        try {
            final JmxConnectionConfig config = JmxConnectionConfigBuilder.buildFrom(address, parameters).build();
            final int port = new JMXServiceURL(config.getUrl()).getPort();
            final MBeanServer mBeanServer = jmxConfigDao.getConfig().lookupMBeanServer(address, port);
            return mBeanServer;
        } catch (MalformedURLException e) {
            LOG.warn("Unexpected exception: {}", e.getMessage(), e);
        }
    }
    // not found or exception
    return null;
}
Also used : JMXServiceURL(javax.management.remote.JMXServiceURL) MalformedURLException(java.net.MalformedURLException) JmxConnectionConfig(org.opennms.netmgt.jmx.connection.JmxConnectionConfig) MBeanServer(org.opennms.netmgt.config.jmx.MBeanServer)

Example 18 with JMXServiceURL

use of javax.management.remote.JMXServiceURL in project jdk8u_jdk by JetBrains.

the class SupportedQueryTypesTest method run.

public void run(Map<String, Object> args) {
    int errorCount = 0;
    ObjectName on = null;
    ObjectName serverDelegateObjectName = null;
    JMXConnectorServer cs = null;
    JMXConnector cc = null;
    System.out.println("SupportedQueryTypesTest::run: Start");
    try {
        // JMX MbeanServer used inside single VM as if remote.
        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
        JMXServiceURL url = new JMXServiceURL("rmi", null, 0);
        cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
        cs.start();
        JMXServiceURL addr = cs.getAddress();
        cc = JMXConnectorFactory.connect(addr);
        mbsc = cc.getMBeanServerConnection();
        // Create and register the ServerDelegate MBean on the remote MBeanServer
        String serverDelegateClassName = ServerDelegate.class.getName();
        serverDelegateObjectName = new ObjectName("defaultDomain:class=" + serverDelegateClassName);
        mbsc.createMBean(serverDelegateClassName, serverDelegateObjectName);
        // Retrieve the MBean class name
        mbeanClassName = (String) args.get("-mbeanClassName");
        on = new ObjectName("defaultDomain:class=" + mbeanClassName);
        // Create and register the MBean on the remote MBeanServer
        System.out.println("SupportedQueryTypesTest::run: CREATE " + mbeanClassName + " on the remote MBeanServer with name " + on);
        mbsc.createMBean(mbeanClassName, on);
        // Create a QueryFactory and setup which query we'll use.
        QueryFactory queries = new QueryFactory(mbeanClassName);
        queries.buildQueries();
        int maxIndex = queries.getSize();
        int minIndex = 1;
        // Create a reference Set<ObjectName> to check later on
        // the queryNames() results
        Set<ObjectName> referenceNameSet = new HashSet<ObjectName>();
        referenceNameSet.add(on);
        // Create a reference Set<ObjectInstance> to check later on
        // the queryMBeans() results
        ObjectInstance oi = new ObjectInstance(on, mbeanClassName);
        Set<ObjectInstance> referenceInstanceSet = new HashSet<ObjectInstance>();
        referenceInstanceSet.add(oi);
        // Perform the queryNames and queryMBeans requests
        for (int i = minIndex; i <= maxIndex; i++) {
            QueryExp query = queries.getQuery(i);
            System.out.println("----");
            System.out.println("SupportedQueryTypesTest::run: Query # " + i);
            System.out.println("query " + query);
            errorCount += doQueryNames(query, referenceNameSet);
            errorCount += doQueryMBeans(query, referenceInstanceSet);
        }
    } catch (Exception e) {
        Utils.printThrowable(e, true);
        errorCount++;
    } finally {
        // Do unregister the MBean
        try {
            if (mbsc.isRegistered(on)) {
                mbsc.unregisterMBean(on);
            }
            if (mbsc.isRegistered(serverDelegateObjectName)) {
                mbsc.unregisterMBean(serverDelegateObjectName);
            }
        } catch (Exception e) {
            Utils.printThrowable(e, true);
            errorCount++;
        }
        try {
            // Close JMX Connector Client
            cc.close();
            // Stop connertor server
            cs.stop();
        } catch (Exception e) {
            Utils.printThrowable(e, true);
            errorCount++;
        }
    }
    System.out.println("");
    System.out.println("SupportedQueryTypesTest::run: Done");
    // Handle result
    if (errorCount == 0) {
        System.out.println("SupportedQueryTypesTest::run: (OK)");
    } else {
        String message = "SupportedQueryTypesTest::run: (ERROR) Got " + +errorCount + " error(s)";
        System.out.println(message);
        throw new RuntimeException(message);
    }
}
Also used : JMXServiceURL(javax.management.remote.JMXServiceURL) QueryExp(javax.management.QueryExp) ObjectInstance(javax.management.ObjectInstance) ObjectName(javax.management.ObjectName) JMXConnectorServer(javax.management.remote.JMXConnectorServer) JMXConnector(javax.management.remote.JMXConnector) MBeanServer(javax.management.MBeanServer) HashSet(java.util.HashSet)

Example 19 with JMXServiceURL

use of javax.management.remote.JMXServiceURL in project jdk8u_jdk by JetBrains.

the class TestManager method connect.

private static void connect(String pid, String address) throws Exception {
    if (address == null) {
        throw new RuntimeException("Local connector address for " + pid + " is null");
    }
    System.out.println("Connect to process " + pid + " via: " + address);
    JMXServiceURL url = new JMXServiceURL(address);
    JMXConnector c = JMXConnectorFactory.connect(url);
    MBeanServerConnection server = c.getMBeanServerConnection();
    System.out.println("Connected.");
    RuntimeMXBean rt = newPlatformMXBeanProxy(server, RUNTIME_MXBEAN_NAME, RuntimeMXBean.class);
    System.out.println(rt.getName());
    // close the connection
    c.close();
}
Also used : JMXServiceURL(javax.management.remote.JMXServiceURL) JMXConnector(javax.management.remote.JMXConnector) RuntimeMXBean(java.lang.management.RuntimeMXBean) MBeanServerConnection(javax.management.MBeanServerConnection)

Example 20 with JMXServiceURL

use of javax.management.remote.JMXServiceURL in project jdk8u_jdk by JetBrains.

the class SubjectDelegation2Test method main.

public static void main(String[] args) throws Exception {
    // Check for supported operating systems: Solaris
    //
    // This test runs only on Solaris due to CR 6285916
    //
    String osName = System.getProperty("os.name");
    System.out.println("os.name = " + osName);
    if (!osName.equals("SunOS")) {
        System.out.println("This test runs on Solaris only.");
        System.out.println("Bye! Bye!");
        return;
    }
    String policyFile = args[0];
    String testResult = args[1];
    System.out.println("Policy file = " + policyFile);
    System.out.println("Expected test result = " + testResult);
    JMXConnectorServer jmxcs = null;
    JMXConnector jmxc = null;
    try {
        // Create an RMI registry
        //
        System.out.println("Start RMI registry...");
        Registry reg = null;
        int port = 5800;
        while (port++ < 6000) {
            try {
                reg = LocateRegistry.createRegistry(port);
                System.out.println("RMI registry running on port " + port);
                break;
            } catch (RemoteException e) {
                // Failed to create RMI registry...
                System.out.println("Failed to create RMI registry " + "on port " + port);
            }
        }
        if (reg == null) {
            System.exit(1);
        }
        // Set the default password file
        //
        final String passwordFile = System.getProperty("test.src") + File.separator + "jmxremote.password";
        System.out.println("Password file = " + passwordFile);
        // Set policy file
        //
        final String policy = System.getProperty("test.src") + File.separator + policyFile;
        System.out.println("PolicyFile = " + policy);
        System.setProperty("java.security.policy", policy);
        // Instantiate the MBean server
        //
        System.out.println("Create the MBean server");
        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
        // Register the SimpleStandardMBean
        //
        System.out.println("Create SimpleStandard MBean");
        SimpleStandard s = new SimpleStandard("monitorRole");
        mbs.registerMBean(s, new ObjectName("MBeans:type=SimpleStandard"));
        // Create Properties containing the username/password entries
        //
        Properties props = new Properties();
        props.setProperty("jmx.remote.x.password.file", passwordFile);
        // Initialize environment map to be passed to the connector server
        //
        System.out.println("Initialize environment map");
        HashMap env = new HashMap();
        env.put("jmx.remote.authenticator", new JMXPluggableAuthenticator(props));
        // Set Security Manager
        //
        System.setSecurityManager(new SecurityManager());
        // Create an RMI connector server
        //
        System.out.println("Create an RMI connector server");
        JMXServiceURL url = new JMXServiceURL("rmi", null, 0, "/jndi/rmi://:" + port + "/server" + port);
        jmxcs = JMXConnectorServerFactory.newJMXConnectorServer(url, env, mbs);
        jmxcs.start();
        // Create an RMI connector client
        //
        System.out.println("Create an RMI connector client");
        HashMap cli_env = new HashMap();
        // These credentials must match those in the default password file
        //
        String[] credentials = new String[] { "monitorRole", "QED" };
        cli_env.put("jmx.remote.credentials", credentials);
        jmxc = JMXConnectorFactory.connect(url, cli_env);
        MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
        // Get domains from MBeanServer
        //
        System.out.println("Domains:");
        String[] domains = mbsc.getDomains();
        for (int i = 0; i < domains.length; i++) {
            System.out.println("\tDomain[" + i + "] = " + domains[i]);
        }
        // Get MBean count
        //
        System.out.println("MBean count = " + mbsc.getMBeanCount());
        // Get State attribute
        //
        String oldState = (String) mbsc.getAttribute(new ObjectName("MBeans:type=SimpleStandard"), "State");
        System.out.println("Old State = \"" + oldState + "\"");
        // Set State attribute
        //
        System.out.println("Set State to \"changed state\"");
        mbsc.setAttribute(new ObjectName("MBeans:type=SimpleStandard"), new Attribute("State", "changed state"));
        // Get State attribute
        //
        String newState = (String) mbsc.getAttribute(new ObjectName("MBeans:type=SimpleStandard"), "State");
        System.out.println("New State = \"" + newState + "\"");
        if (!newState.equals("changed state")) {
            System.out.println("Invalid State = \"" + newState + "\"");
            System.exit(1);
        }
        // Add notification listener on SimpleStandard MBean
        //
        System.out.println("Add notification listener...");
        mbsc.addNotificationListener(new ObjectName("MBeans:type=SimpleStandard"), new NotificationListener() {

            public void handleNotification(Notification notification, Object handback) {
                System.out.println("Received notification: " + notification);
            }
        }, null, null);
        // Unregister SimpleStandard MBean
        //
        System.out.println("Unregister SimpleStandard MBean...");
        mbsc.unregisterMBean(new ObjectName("MBeans:type=SimpleStandard"));
    } catch (SecurityException e) {
        if (testResult.equals("ko")) {
            System.out.println("Got expected security exception = " + e);
        } else {
            System.out.println("Got unexpected security exception = " + e);
            e.printStackTrace();
            throw e;
        }
    } catch (Exception e) {
        System.out.println("Unexpected exception caught = " + e);
        e.printStackTrace();
        throw e;
    } finally {
        //
        if (jmxc != null)
            jmxc.close();
        //
        if (jmxcs != null)
            jmxcs.stop();
        // Say goodbye
        //
        System.out.println("Bye! Bye!");
    }
}
Also used : JMXServiceURL(javax.management.remote.JMXServiceURL) JMXPluggableAuthenticator(com.sun.jmx.remote.security.JMXPluggableAuthenticator) HashMap(java.util.HashMap) Attribute(javax.management.Attribute) Registry(java.rmi.registry.Registry) LocateRegistry(java.rmi.registry.LocateRegistry) Properties(java.util.Properties) Notification(javax.management.Notification) RemoteException(java.rmi.RemoteException) JMXConnectorServer(javax.management.remote.JMXConnectorServer) ObjectName(javax.management.ObjectName) JMXConnector(javax.management.remote.JMXConnector) RemoteException(java.rmi.RemoteException) MBeanServerConnection(javax.management.MBeanServerConnection) MBeanServer(javax.management.MBeanServer) NotificationListener(javax.management.NotificationListener)

Aggregations

JMXServiceURL (javax.management.remote.JMXServiceURL)273 JMXConnector (javax.management.remote.JMXConnector)146 MBeanServerConnection (javax.management.MBeanServerConnection)107 ObjectName (javax.management.ObjectName)90 IOException (java.io.IOException)75 HashMap (java.util.HashMap)75 MBeanServer (javax.management.MBeanServer)70 JMXConnectorServer (javax.management.remote.JMXConnectorServer)64 MalformedURLException (java.net.MalformedURLException)45 RemoteException (java.rmi.RemoteException)22 Test (org.junit.Test)20 Map (java.util.Map)16 UnknownHostException (java.net.UnknownHostException)14 Notification (javax.management.Notification)14 NotificationListener (javax.management.NotificationListener)14 Properties (java.util.Properties)13 MalformedObjectNameException (javax.management.MalformedObjectNameException)13 LocateRegistry (java.rmi.registry.LocateRegistry)12 Registry (java.rmi.registry.Registry)12 ArrayList (java.util.ArrayList)11