/* * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package com.sun.enterprise.admin.mbeanapi.common; import java.io.IOException; import java.util.Map; import java.util.Set; import java.util.Iterator; import com.sun.appserv.management.base.AMX; import com.sun.appserv.management.base.XTypes; import com.sun.appserv.management.base.Util; import com.sun.appserv.management.DomainRoot; import com.sun.appserv.management.config.DomainConfig; import com.sun.appserv.management.config.HTTPServiceConfig; import com.sun.appserv.management.config.ConfigConfig; import com.sun.appserv.management.base.QueryMgr; import com.sun.appserv.management.util.misc.ExceptionUtil; import com.sun.appserv.management.util.stringifier.SmartStringifier; import com.sun.appserv.management.util.stringifier.StringifierRegistryIniterImpl; import com.sun.appserv.management.util.stringifier.StringifierRegistryImpl; /** * This test uses com.sun.enterprise.admin.mbeanapi.common.AMXConnector.java to get a connection to the MBean Server * and then gets a bunch of ObjectNames and lists them. * <b>Usage: java -DHOST=hostname -DPORT=port -DADMIN_USER=username * -D ADMIN_PASSWORD=passwd -DUSE_TLS=false/true * -classpath <should include mbean api jars and impls, jmxri and jmxremote.jar> * com.sun.enterprise.admin.mbeanapi.common.AMXConnectionVerifier</B> * * @author <a href=mailto:shreedhar.ganapathy@sun.com>Shreedhar Ganapathy</a> * Date: Aug 23, 2004 * @version $Revision: 1.2 $ */ public class AMXConnectionVerifier { private final DomainRoot mDomainRoot; private DomainConfig getDomainConfig() { return( mDomainRoot.getDomainConfig() ); } private QueryMgr getQueryMgr() { return( mDomainRoot.getQueryMgr() ); } public void println( Object o ) { System.out.println( toString( o ) ); } public String toString( Object o ) { return( SmartStringifier.toString( o ) ); } private void listMap(final String msg, final Map m) { println( msg + ": " + toString( m.keySet() ) ); } private void list() { final DomainConfig dcp = getDomainConfig(); // Top-level items println( "\n--- Top-level --- \n" ); listMap( "ConfigConfig", dcp.getConfigConfigMap() ); listMap( "ServerConfig", dcp.getServerConfigMap() ); listMap( "StandaloneServerConfig", dcp.getStandaloneServerConfigMap() ); listMap( "ClusteredServerConfig", dcp.getClusteredServerConfigMap() ); listMap( "ClusterConfig", dcp.getClusterConfigMap() ); // deployed items println( "\n--- DeployedItems --- \n" ); listMap( "J2EEApplicationConfig", dcp.getJ2EEApplicationConfigMap() ); listMap( "EJBModuleConfig", dcp.getEJBModuleConfigMap() ); listMap( "WebModuleConfig", dcp.getWebModuleConfigMap() ); //listMap( "RARModuleConfig", dcp.getRARModuleMap() ); listMap( "AppClientModuleConfig", dcp.getAppClientModuleConfigMap() ); listMap( "LifecycleModuleConfig", dcp.getLifecycleModuleConfigMap() ); // resources println( "\n--- Resources --- \n" ); listMap( "CustomResourceConfig", dcp.getCustomResourceConfigMap() ); listMap( "PersistenceManagerFactoryResourceConfig", dcp.getPersistenceManagerFactoryResourceConfigMap() ); listMap( "JNDIResourceConfig", dcp.getJNDIResourceConfigMap() ); listMap( "JMSResourceConfig", dcp.getJMSResourceConfigMap() ); listMap( "JDBCResourceConfig", dcp.getJDBCResourceConfigMap() ); listMap( "ConnectorResourceConfig", dcp.getConnectorResourceConfigMap() ); listMap( "JDBCConnectionPoolConfig", dcp.getJDBCConnectionPoolConfigMap() ); listMap( "PersistenceManagerFactoryResourceConfig", dcp.getPersistenceManagerFactoryResourceConfigMap() ); listMap( "ConnectorConnectionPoolResourceConfig", dcp.getConnectorConnectionPoolConfigMap() ); listMap( "AdminObjectResourceConfig", dcp.getAdminObjectResourceConfigMap() ); listMap( "ResourceAdapterConfig", dcp.getResourceAdapterConfigMap() ); listMap( "MailResourceConfig", dcp.getMailResourceConfigMap() ); // get a ConfigConfig final ConfigConfig config = (ConfigConfig)dcp.getConfigConfigMap().get( "server-config" ); // HTTPService println( "\n--- HTTPService --- \n" ); final HTTPServiceConfig httpService = config.getHTTPServiceConfig(); listMap( "HTTPListeners", httpService.getHTTPListenerConfigMap() ); listMap( "VirtualServers", httpService.getVirtualServerConfigMap() ); } /** List all MBeans that have j2eeType=*ResourceConfig */ private void queryWild(final String name, final String value) { final String[] propNames = new String[ 1 ]; propNames[ 0 ] = name; final String[] propValues = new String[ 1 ]; propValues[ 0 ] = value; final Set items = getQueryMgr().queryWildSet( propNames, propValues ); println( "\n--- Queried for " + propNames[ 0 ] + "=" + propValues[ 0 ] + " ---" ); final Iterator iter = items.iterator(); while ( iter.hasNext() ) { final AMX item = (AMX)iter.next(); println( "j2eeType=" + item.getJ2EEType() + "," + "name=" + item.getName() ); } } /** List all MBeans that have j2eeType=<j2eeType> */ private void queryForJ2EEType( final String j2eeType ) { final String prop = Util.makeJ2EETypeProp( j2eeType ); final Set items = getQueryMgr().queryPropsSet( prop ); println( "\n--- Queried for " + prop + " ---" ); final Iterator iter = items.iterator(); while ( iter.hasNext() ) { final AMX item = (AMX)iter.next(); // they may or may not have unique names, so show ObjectNames println( item.getFullType() ); } } private void proveConnection() { println("Listing....."); list( ); /*println("querying Wild......"); queryWild( AMX.J2EE_TYPE_KEY, "*ResourceConfig" );*/ println("querying for j2ee type....."); queryForJ2EEType( XTypes.SSL_CONFIG ); } public AMXConnectionVerifier(final String host, final int port, final String adminUser, final String adminPassword, final boolean useTLS) throws IOException { final AMXConnector ct = new AMXConnector( host, port, adminUser, adminPassword, useTLS ); mDomainRoot = ct.getDomainRoot(); proveConnection( ); } public static void main( final String[] args ) { new StringifierRegistryIniterImpl( StringifierRegistryImpl.DEFAULT ); try { new AMXConnectionVerifier(System.getProperty("HOST", "localhost"), Integer.parseInt(System.getProperty("PORT","8686")), System.getProperty("ADMIN_USER", "admin"), System.getProperty("ADMIN_PASSWORD", "adminadmin"), Boolean.valueOf(System.getProperty("USE_TLS","false")).booleanValue()); } catch( Throwable t ) { ExceptionUtil.getRootCause( t ).printStackTrace(); } } }