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

com.sun.messaging.AdminConnectionFactory Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2000, 2017 Oracle and/or its affiliates. All rights reserved.
 * Copyright (c) 2022 Contributors to the Eclipse Foundation. 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
 */

package com.sun.messaging;

import java.util.Properties;
import java.util.HashMap;
import java.net.MalformedURLException;
import javax.management.JMException;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import com.sun.messaging.jmq.management.JMXMQAddress;
import com.sun.messaging.jmq.jmsclient.GenericPortMapperClient;

/**
 * An AdminConnectionFactory is used by management clients to create JMX connections to the Message Queue
 * broker. After establishing a connection successfully, a handle to a JMX Connector can be obtained which can then be
 * used for management or monitoring operations.
 * 

* The sample code below obtains a JMX Connector that communicates with the default RMI based connector on the broker * that is running on the default host and port (localhost and port 7676). The administrator username and password used * here is the default admin and admin. *

* *

 *     import javax.management.*;
 *     import javax.management.remote.*;
 *     import com.sun.messaging.AdminConnectionFactory;
 *     ...
 *     AdminConnectionFactory acf;
 *
 *     acf = new AdminConnectionFactory();
 *     System.out.println("JMXServiceURL used: " + acf.getJMXServiceURL().toString());
 *
 *     JMXConnector jmxc = acf.createConnection();
 *
 *     // Proceed to manage/monitor the broker using the JMX Connector
 *     // obtained above.
 *     ...
 * 
*

* The sample code below obtains a JMX Connector that communicates with the default RMI connector on the broker that is * running on the host myhost on port 7979. The administrator username and password used here is * admin1 and adminpasswd. *

* *

 *     import javax.management.*;
 *     import javax.management.remote.*;
 *     import com.sun.messaging.AdminConnectionFactory;
 *     import com.sun.messaging.AdminConnectionConfiguration;
 *     ...
 *     AdminConnectionFactory acf;
 *
 *     acf = new AdminConnectionFactory();
 *     acf.setProperty(AdminConnectionConfiguration.imqAddress,
 *			"myhost:7979");
 *     System.out.println("JMXServiceURL used: " + acf.getJMXServiceURL().toString());
 *
 *     JMXConnector jmxc = acf.createConnection("admin1", "adminpasswd");
 *
 *     // Proceed to manage/monitor the broker using the JMX Connector
 *     // obtained above.
 *     ...
 * 
*

* The sample code below obtains a JMX Connector that communicates with the RMI connector named ssljmxrmi on the broker * that is running on the localhost and on port 7676. This is the JMX connector that is configured to use SSL. The * administrator username and password used here is the default admin and admin. *

* *

 *     import javax.management.*;
 *     import javax.management.remote.*;
 *     import com.sun.messaging.AdminConnectionFactory;
 *     import com.sun.messaging.AdminConnectionConfiguration;
 *     ...
 *     AdminConnectionFactory acf;
 *
 *     acf = new AdminConnectionFactory();
 *     acf.setProperty(AdminConnectionConfiguration.imqAddress,
 *			"localhost:7676/ssljmxrmi");
 *     System.out.println("JMXServiceURL used: " + acf.getJMXServiceURL().toString());
 *
 *     JMXConnector jmxc = acf.createConnection();
 *
 *     // Proceed to manage/monitor the broker using the JMX Connector
 *     // obtained above.
 *     ...
 * 
* * @see com.sun.messaging.AdminConnectionConfiguration com.sun.messaging.AdminConnectionConfiguration */ public class AdminConnectionFactory extends com.sun.messaging.AdministeredObject { private static final long serialVersionUID = -756915337557759956L; /** The default basename for AdministeredObject initialization */ private static final String defaultsBase = "AdminConnectionFactory"; /** The default Username and Password for OpenMQ client authentication */ private static final String DEFAULT_IMQ_ADMIN_USERNAME_PASSWORD = "admin"; /** The default Username Label */ private static final String DEFAULT_IMQ_ADMIN_USERNAME_LABEL = "Default Administrator Username"; /** The default Password Label */ private static final String DEFAULT_IMQ_ADMIN_PASSWORD_LABEL = "Default Administrator Password"; /** * Constructs a AdminConnectionFactory with the default configuration. * */ public AdminConnectionFactory() { super(defaultsBase); } /** * Constructs a AdminConnectionFactory with the specified configuration. * */ protected AdminConnectionFactory(String defaultsBase) { super(defaultsBase); } /** * Creates a Connection with the default user identity. The default user identity is defined by the * AdminConnectionFactory properties imqDefaultAdminUsername and * imqDefaultAdminPassword * * @return a newly created Connection. * * @exception JMException if a JMS error occurs. * @see AdminConnectionConfiguration#imqDefaultAdminUsername * @see AdminConnectionConfiguration#imqDefaultAdminPassword */ public JMXConnector createConnection() throws JMException { String u = null, p = null; try { u = getCurrentConfiguration().getProperty(AdminConnectionConfiguration.imqDefaultAdminUsername); p = getCurrentConfiguration().getProperty(AdminConnectionConfiguration.imqDefaultAdminPassword); } catch (Exception e) { } return createConnection(u, p); } /** * Creates a Connection with a specified user identity. * * @param username the caller's user name * @param password the caller's password * * @return a newly created connection. * * @exception JMException if a JMX error occurs. */ public JMXConnector createConnection(String username, String password) throws JMException { JMXConnector jmxc = null; JMXServiceURL url = null; url = getJMXServiceURL(); /* * System.err.println("url: " + url); */ try { HashMap env = new HashMap(); String[] credentials = new String[] { username, password }; env.put(JMXConnector.CREDENTIALS, credentials); jmxc = JMXConnectorFactory.connect(url, env); } catch (Exception e) { JMException jme = new JMException("Caught exception when creating JMXConnector"); jme.initCause(e); throw (jme); } return (jmxc); } /** * Returns a pretty printed version of the provider specific information for this ConnectionFactory object. * * @return the pretty printed string. */ @Override public String toString() { return ("Eclipse OpenMQ(tm) AdminConnectionFactory" + super.toString()); } /** * Returns the relevant JMXServiceURL that is advertised by the portmapper. This url will be used in connection * attempts. * * @return The relevant JMXServiceURL that is advertised by the portmapper. */ public JMXServiceURL getJMXServiceURL() throws JMException { GenericPortMapperClient pmc; JMXMQAddress mqAddr; JMXServiceURL url; String addr = null, urlString, host, connectorName; int port; try { addr = getCurrentConfiguration().getProperty(AdminConnectionConfiguration.imqAddress); mqAddr = JMXMQAddress.createAddress(addr); host = mqAddr.getHostName(); port = mqAddr.getPort(); connectorName = mqAddr.getServiceName(); /* * System.out.println("ACF: address used: " + addr); System.out.println("\thost: " + host); * System.out.println("\tport: " + port); System.out.println("\tconnector: " + connectorName); */ } catch (Exception e) { JMException jme = new JMException("Caught exception when parsing address: " + addr); jme.initCause(e); throw (jme); } /* * System.out.println("host: " + host); System.out.println("port: " + port); System.out.println("connectorName: " + * connectorName); */ try { pmc = new GenericPortMapperClient(host, port); /* * Should add code to check/compare version of client runtime and broker here. */ } catch (Exception e) { JMException jme = new JMException("Caught exception when contacing portmapper."); jme.initCause(e); throw (jme); } urlString = pmc.getProperty("url", null, "JMX", connectorName); if (urlString == null) { JMException jme = new JMException("No JMXServiceURL was found for connector " + connectorName + ".\n" + "Address used: " + addr); throw (jme); } try { url = new JMXServiceURL(urlString); } catch (MalformedURLException mfe) { JMException jme = new JMException("Caught exception when creating JMXServiceURL."); jme.initCause(mfe); throw (jme); } return (url); } /** * Sets the minimum AdminConnectionFactory configuration defaults required to connect to the MQ * Administration Service. */ @Override public void setDefaultConfiguration() { configuration = new Properties(); configurationTypes = new Properties(); configurationLabels = new Properties(); configuration.put(AdminConnectionConfiguration.imqDefaultAdminUsername, DEFAULT_IMQ_ADMIN_USERNAME_PASSWORD); configurationTypes.put(AdminConnectionConfiguration.imqDefaultAdminUsername, AO_PROPERTY_TYPE_STRING); configurationLabels.put(AdminConnectionConfiguration.imqDefaultAdminUsername, DEFAULT_IMQ_ADMIN_USERNAME_LABEL); configuration.put(AdminConnectionConfiguration.imqDefaultAdminPassword, DEFAULT_IMQ_ADMIN_USERNAME_PASSWORD); configurationTypes.put(AdminConnectionConfiguration.imqDefaultAdminPassword, AO_PROPERTY_TYPE_STRING); configurationLabels.put(AdminConnectionConfiguration.imqDefaultAdminPassword, DEFAULT_IMQ_ADMIN_PASSWORD_LABEL); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy