Class JMXAccessorTask

java.lang.Object
org.apache.tools.ant.ProjectComponent
org.apache.tools.ant.Task
org.apache.catalina.ant.BaseRedirectorHelperTask
org.apache.catalina.ant.jmx.JMXAccessorTask
All Implemented Interfaces:
Cloneable
Direct Known Subclasses:
JMXAccessorCreateTask, JMXAccessorGetTask, JMXAccessorInvokeTask, JMXAccessorQueryTask, JMXAccessorSetTask, JMXAccessorUnregisterTask

public class JMXAccessorTask extends BaseRedirectorHelperTask
Access JMX JSR 160 MBeans Server.
  • open more then one JSR 160 rmi connection
  • Get/Set Mbeans attributes
  • Call Mbean Operation with arguments
  • Argument values can be converted from string to int,long,float,double,boolean,ObjectName or InetAddress
  • Query Mbeans
  • Show Get, Call, Query result at Ant console log
  • Bind Get, Call, Query result at Ant properties
Examples: open server with reference and authorisation

   <jmxOpen
           host="127.0.0.1"
           port="9014"
           username="monitorRole"
           password="mysecret"
           ref="jmx.myserver"
       />
All calls after opening with same refid reuse the connection.

First call to a remote MBeanserver save the JMXConnection a reference jmx.server

All JMXAccessorXXXTask support the attribute if and unless. With if the task is only execute when property exist and with unless when property not exists.
NOTE : These tasks require Ant 1.6 or later interface.
Since:
5.5.10
  • Field Details

  • Constructor Details

    • JMXAccessorTask

      public JMXAccessorTask()
      Constructs a new JMXAccessorTask.
  • Method Details

    • getName

      public String getName()
      Get the name used at remote MbeanServer.
      Returns:
      the name used at remote MbeanServer
    • setName

      public void setName(String objectName)
      Set the name used at remote MbeanServer.
      Parameters:
      objectName - the MBean object name
    • getResultproperty

      public String getResultproperty()
      Get the result property name.
      Returns:
      the result property name
    • setResultproperty

      public void setResultproperty(String propertyName)
      Set the result property name.
      Parameters:
      propertyName - the property name to set
    • getDelimiter

      public String getDelimiter()
      Get the delimiter for array results.
      Returns:
      the delimiter
    • setDelimiter

      public void setDelimiter(String separator)
      Set the delimiter for array results.
      Parameters:
      separator - the delimiter to set
    • isEcho

      public boolean isEcho()
      Get the echo flag.
      Returns:
      the echo flag
    • setEcho

      public void setEcho(boolean echo)
      Set the echo flag.
      Parameters:
      echo - the echo flag to set
    • isSeparatearrayresults

      public boolean isSeparatearrayresults()
      Get the separate array results flag.
      Returns:
      the separate array results flag
    • setSeparatearrayresults

      public void setSeparatearrayresults(boolean separateArrayResults)
      Set the separate array results flag.
      Parameters:
      separateArrayResults - the flag to set
    • getPassword

      public String getPassword()
      Get the login password.
      Returns:
      the login password
    • setPassword

      public void setPassword(String password)
      Set the login password.
      Parameters:
      password - the password to set
    • getUsername

      public String getUsername()
      Get the login username.
      Returns:
      the login username
    • setUsername

      public void setUsername(String username)
      Set the login username.
      Parameters:
      username - the username to set
    • getUrl

      public String getUrl()
      Get the JMX MBeanServer URL.
      Returns:
      the JMX URL
    • setUrl

      public void setUrl(String url)
      Set the JMX MBeanServer URL.
      Parameters:
      url - the URL to set
    • getHost

      public String getHost()
      Get the JMX MBeanServer host.
      Returns:
      the host
    • setHost

      public void setHost(String host)
      Set the JMX MBeanServer host.
      Parameters:
      host - the host to set
    • getPort

      public String getPort()
      Get the JMX MBeanServer port.
      Returns:
      the port
    • setPort

      public void setPort(String port)
      Set the JMX MBeanServer port.
      Parameters:
      port - the port to set
    • isUseRef

      public boolean isUseRef()
      Check if a reference is being used.
      Returns:
      true if a reference is set
    • getRef

      public String getRef()
      Get the reference ID for the JMX connection.
      Returns:
      the reference ID
    • setRef

      public void setRef(String refId)
      Set the reference ID for the JMX connection.
      Parameters:
      refId - the reference ID to set
    • getIf

      public String getIf()
      Get the if condition property name.
      Returns:
      the if condition property name
    • setIf

      public void setIf(String c)
      Only execute if a property of the given name exists in the current project.
      Parameters:
      c - property name
    • getUnless

      public String getUnless()
      Get the unless condition property name.
      Returns:
      the unless condition property name
    • setUnless

      public void setUnless(String c)
      Only execute if a property of the given name does not exist in the current project.
      Parameters:
      c - property name
    • execute

      public void execute() throws org.apache.tools.ant.BuildException
      Execute the specified command. This logic only performs the common attribute validation required by all subclasses; it does not perform any functional logic directly.
      Overrides:
      execute in class org.apache.tools.ant.Task
      Throws:
      org.apache.tools.ant.BuildException - if a validation error occurs
    • createJMXConnection

      public static MBeanServerConnection createJMXConnection(String url, String host, String port, String username, String password) throws MalformedURLException, IOException
      Create a new JMX Connection with auth when username and password is set.
      Parameters:
      url - URL to be used for the JMX connection (if specified, it is a complete URL so host and port will not be used)
      host - Host name of the JMX server
      port - Port number for the JMX server
      username - User name for the connection
      password - Credentials corresponding to the specified user
      Returns:
      the JMX connection
      Throws:
      MalformedURLException - Invalid URL specified
      IOException - Other connection error
    • createJMXConnector

      public static JMXConnector createJMXConnector(String url, String host, String port, String username, String password) throws MalformedURLException, IOException
      Create a new JMX Connection with auth when username and password is set. The caller is responsible for closing the returned connector.
      Parameters:
      url - URL to be used for the JMX connection (if specified, it is a complete URL so host and port will not be used)
      host - Host name of the JMX server (null selects the default host)
      port - Port number for the JMX server (null selects the default port)
      username - User name for the connection
      password - Credentials corresponding to the specified user
      Returns:
      the JMX connector
      Throws:
      MalformedURLException - Invalid URL specified
      IOException - Other connection error
      Since:
      12.0.x
    • testIfCondition

      protected boolean testIfCondition()
      test the if condition
      Returns:
      true if there is no if condition, or the named property exists
    • testUnlessCondition

      protected boolean testUnlessCondition()
      test the unless condition
      Returns:
      true if there is no unless condition, or there is a named property but it doesn't exist
    • accessJMXConnection

      public static MBeanServerConnection accessJMXConnection(org.apache.tools.ant.Project project, String url, String host, String port, String username, String password, String refId) throws MalformedURLException, IOException
      Get Current Connection from ref parameter or create a new one!
      Parameters:
      project - The Ant project
      url - URL to be used for the JMX connection (if specified, it is a complete URL so host and port will not be used)
      host - Host name of the JMX server
      port - Port number for the JMX server
      username - User name for the connection
      password - Credentials corresponding to the specified user
      refId - The Id of the reference to retrieve in the project
      Returns:
      the JMX connection
      Throws:
      MalformedURLException - Invalid URL specified
      IOException - Other connection error
    • getJMXConnection

      protected MBeanServerConnection getJMXConnection() throws MalformedURLException, IOException
      get JMXConnection
      Returns:
      the JMX connection
      Throws:
      MalformedURLException - Invalid URL specified
      IOException - Other connection error
    • jmxExecute

      public String jmxExecute(MBeanServerConnection jmxServerConnection) throws Exception
      Execute the specified command, based on the configured properties.
      Parameters:
      jmxServerConnection - The JMX connection that should be used
      Returns:
      An error message string in some situations
      Throws:
      Exception - if an error occurs
    • convertStringToType

      protected Object convertStringToType(String value, String valueType)
      Convert string to datatype.
      Parameters:
      value - The value
      valueType - The type
      Returns:
      The converted object
      Throws:
      org.apache.tools.ant.BuildException - The value cannot be converted to the requested type, or the type is not supported
    • echoResult

      protected void echoResult(String name, Object result)
      Echo the result to the output.
      Parameters:
      name - context of result
      result - The result
    • createProperty

      protected void createProperty(Object result)
      create result as property with name from attribute resultproperty
      Parameters:
      result - The result
      See Also:
    • createProperty

      protected void createProperty(String propertyPrefix, Object result)
      create result as property with name from property prefix When result is an array and isSeparateArrayResults is true, resultproperty used as prefix (resultproperty.0-array.Length and store the result array length at resultproperty.Length. Other option is that you delimit your result with a delimiter (java.util.StringTokenizer is used).
      Parameters:
      propertyPrefix - Prefix for the property
      result - The result
    • getProperty

      public String getProperty(String property)
      Get Property
      Parameters:
      property - name
      Returns:
      The property value
    • setProperty

      public boolean setProperty(String property, Object value)
      Set a property value.
      Parameters:
      property - The property name
      value - The value
      Returns:
      true if successful