akka.jmx
Class Client

java.lang.Object
  extended by akka.jmx.Client

public class Client
extends java.lang.Object

A Simple Command-Line JMX Client. Tested against the JDK 1.5.0 JMX Agent. See Monitoring and Management Using JMX.

Can supply credentials and do primitive string representation of tabular and composite openmbeans.


Nested Class Summary
protected  class Client.CommandParse
          Class that parses commandline arguments.
 
Field Summary
protected static java.util.regex.Pattern CMD_LINE_ARGS_PATTERN
          Pattern that matches a command name followed by an optional equals and optional comma-delimited list of arguments.
 
Constructor Summary
Client()
          Constructor.
 
Method Summary
protected  java.lang.String addNameToBuffer(java.lang.StringBuffer buffer, java.lang.String indent, java.lang.String name)
           
protected  java.lang.Object doAttributeOperation(javax.management.MBeanServerConnection mbsc, javax.management.ObjectInstance instance, java.lang.String command, javax.management.MBeanAttributeInfo[] infos)
           
protected  java.lang.Object[] doBean(javax.management.MBeanServerConnection mbsc, javax.management.ObjectInstance instance, java.lang.String[] command)
          Get attribute or run operation against passed bean instance.
protected  java.lang.Object doBeanOperation(javax.management.MBeanServerConnection mbsc, javax.management.ObjectInstance instance, java.lang.String command, javax.management.MBeanOperationInfo[] infos)
           
protected  java.lang.Object[] doBeans(javax.management.MBeanServerConnection mbsc, javax.management.ObjectName objName, java.lang.String[] command, boolean oneBeanOnly)
           
 java.lang.Object doSubCommand(javax.management.MBeanServerConnection mbsc, javax.management.ObjectInstance instance, java.lang.String subCommand)
           
protected  void execute(java.lang.String[] args)
          Version of execute called from the cmdline.
protected  java.lang.Object[] execute(java.lang.String hostport, java.lang.String login, java.lang.String password, java.lang.String beanname, java.lang.String[] command)
           
protected  java.lang.Object[] execute(java.lang.String hostport, java.lang.String login, java.lang.String password, java.lang.String beanname, java.lang.String[] command, boolean oneBeanOnly)
          Execute command against remote JMX agent.
 java.lang.Object[] executeOneCmd(java.lang.String hostport, java.lang.String login, java.lang.String password, java.lang.String beanname, java.lang.String command)
           
protected  java.util.Map<java.lang.String,java.lang.Object> formatCredentials(java.lang.String login, java.lang.String password)
           
protected  javax.management.MBeanFeatureInfo getFeatureInfo(javax.management.MBeanFeatureInfo[] infos, java.lang.String cmd)
           
protected  javax.management.remote.JMXConnector getJMXConnector(java.lang.String hostport, java.lang.String login, java.lang.String password)
           
protected  javax.management.ObjectName getObjectName(java.lang.String beanname)
           
protected  boolean isFeatureInfo(javax.management.MBeanFeatureInfo[] infos, java.lang.String cmd)
           
protected  java.lang.String listOptions(javax.management.MBeanServerConnection mbsc, javax.management.ObjectInstance instance)
           
static void main(java.lang.String[] args)
           
protected  boolean notEmpty(java.lang.String s)
           
protected  java.lang.String[] parseUserpass(java.lang.String userpass)
          Parse a 'login:password' string.
protected  java.lang.StringBuffer recurseCompositeData(java.lang.StringBuffer buffer, java.lang.String indent, java.lang.String name, javax.management.openmbean.CompositeData data)
           
protected  java.lang.StringBuffer recurseTabularData(java.lang.StringBuffer buffer, java.lang.String indent, java.lang.String name, javax.management.openmbean.TabularData data)
           
protected static void usage()
           
protected static void usage(int exitCode, java.lang.String message)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CMD_LINE_ARGS_PATTERN

protected static final java.util.regex.Pattern CMD_LINE_ARGS_PATTERN
Pattern that matches a command name followed by an optional equals and optional comma-delimited list of arguments.

Constructor Detail

Client

public Client()
Constructor.

Method Detail

main

public static void main(java.lang.String[] args)
                 throws java.lang.Exception
Throws:
java.lang.Exception

usage

protected static void usage()

usage

protected static void usage(int exitCode,
                            java.lang.String message)

parseUserpass

protected java.lang.String[] parseUserpass(java.lang.String userpass)
Parse a 'login:password' string. Assumption is that no colon in the login name.

Parameters:
userpass -
Returns:
Array of strings with login in first position.

formatCredentials

protected java.util.Map<java.lang.String,java.lang.Object> formatCredentials(java.lang.String login,
                                                                             java.lang.String password)
Parameters:
login -
password -
Returns:
Credentials as map for RMI.

getJMXConnector

protected javax.management.remote.JMXConnector getJMXConnector(java.lang.String hostport,
                                                               java.lang.String login,
                                                               java.lang.String password)
                                                        throws java.io.IOException
Throws:
java.io.IOException

getObjectName

protected javax.management.ObjectName getObjectName(java.lang.String beanname)
                                             throws javax.management.MalformedObjectNameException,
                                                    java.lang.NullPointerException
Throws:
javax.management.MalformedObjectNameException
java.lang.NullPointerException

execute

protected void execute(java.lang.String[] args)
                throws java.lang.Exception
Version of execute called from the cmdline. Prints out result of execution on stdout. Parses cmdline args. Then calls execute(String, String, String, String, String[], boolean).

Parameters:
args - Cmdline args.
Throws:
java.lang.Exception

execute

protected java.lang.Object[] execute(java.lang.String hostport,
                                     java.lang.String login,
                                     java.lang.String password,
                                     java.lang.String beanname,
                                     java.lang.String[] command)
                              throws java.lang.Exception
Throws:
java.lang.Exception

executeOneCmd

public java.lang.Object[] executeOneCmd(java.lang.String hostport,
                                        java.lang.String login,
                                        java.lang.String password,
                                        java.lang.String beanname,
                                        java.lang.String command)
                                 throws java.lang.Exception
Throws:
java.lang.Exception

execute

protected java.lang.Object[] execute(java.lang.String hostport,
                                     java.lang.String login,
                                     java.lang.String password,
                                     java.lang.String beanname,
                                     java.lang.String[] command,
                                     boolean oneBeanOnly)
                              throws java.lang.Exception
Execute command against remote JMX agent.

Parameters:
hostport - 'host:port' combination.
login - RMI login to use.
password - RMI password to use.
beanname - Name of remote bean to run command against.
command - Array of commands to run.
oneBeanOnly - Set true if passed beanname is an exact name and the query for a bean is only supposed to return one bean instance. If not, we raise an exception (Otherwise, if false, then we deal with possibility of multiple bean instances coming back from query). Set to true when want to get an attribute or run an operation.
Returns:
Array of results -- one per command.
Throws:
java.lang.Exception

notEmpty

protected boolean notEmpty(java.lang.String s)

doBeans

protected java.lang.Object[] doBeans(javax.management.MBeanServerConnection mbsc,
                                     javax.management.ObjectName objName,
                                     java.lang.String[] command,
                                     boolean oneBeanOnly)
                              throws java.lang.Exception
Throws:
java.lang.Exception

doBean

protected java.lang.Object[] doBean(javax.management.MBeanServerConnection mbsc,
                                    javax.management.ObjectInstance instance,
                                    java.lang.String[] command)
                             throws java.lang.Exception
Get attribute or run operation against passed bean instance.

Parameters:
mbsc - Server connection.
instance - Bean instance we're to get attributes from or run operation against.
command - Command to run (May be null).
Returns:
Result. If multiple commands, multiple results.
Throws:
java.lang.Exception

doSubCommand

public java.lang.Object doSubCommand(javax.management.MBeanServerConnection mbsc,
                                     javax.management.ObjectInstance instance,
                                     java.lang.String subCommand)
                              throws java.lang.Exception
Throws:
java.lang.Exception

isFeatureInfo

protected boolean isFeatureInfo(javax.management.MBeanFeatureInfo[] infos,
                                java.lang.String cmd)

getFeatureInfo

protected javax.management.MBeanFeatureInfo getFeatureInfo(javax.management.MBeanFeatureInfo[] infos,
                                                           java.lang.String cmd)

recurseTabularData

protected java.lang.StringBuffer recurseTabularData(java.lang.StringBuffer buffer,
                                                    java.lang.String indent,
                                                    java.lang.String name,
                                                    javax.management.openmbean.TabularData data)

recurseCompositeData

protected java.lang.StringBuffer recurseCompositeData(java.lang.StringBuffer buffer,
                                                      java.lang.String indent,
                                                      java.lang.String name,
                                                      javax.management.openmbean.CompositeData data)

addNameToBuffer

protected java.lang.String addNameToBuffer(java.lang.StringBuffer buffer,
                                           java.lang.String indent,
                                           java.lang.String name)

doAttributeOperation

protected java.lang.Object doAttributeOperation(javax.management.MBeanServerConnection mbsc,
                                                javax.management.ObjectInstance instance,
                                                java.lang.String command,
                                                javax.management.MBeanAttributeInfo[] infos)
                                         throws java.lang.Exception
Throws:
java.lang.Exception

doBeanOperation

protected java.lang.Object doBeanOperation(javax.management.MBeanServerConnection mbsc,
                                           javax.management.ObjectInstance instance,
                                           java.lang.String command,
                                           javax.management.MBeanOperationInfo[] infos)
                                    throws java.lang.Exception
Throws:
java.lang.Exception

listOptions

protected java.lang.String listOptions(javax.management.MBeanServerConnection mbsc,
                                       javax.management.ObjectInstance instance)
                                throws javax.management.InstanceNotFoundException,
                                       javax.management.IntrospectionException,
                                       javax.management.ReflectionException,
                                       java.io.IOException
Throws:
javax.management.InstanceNotFoundException
javax.management.IntrospectionException
javax.management.ReflectionException
java.io.IOException