JMX::Jmx4Perl::J4psh::CommandHandler - Handler for j4psh commands


This object is responsible for managing JMX::Jmx4Perl::Command objects which are at the heart of j4psh and provide all features. During startup it registeres commands dynamically and pushes the JMX::Jmx4Perl::Shell context to them for allowing to access the agent and other handlers.

Registration is occurs in two phases:


It also keeps a stack of so called navigational context which can be used to provide a menu like structure (think of it like directories which can be entered). If the stack contains elements, the navigational commands .. and / are added to traverse the stack. / will always jump to the top of the stack (the root directory) whereas .. will pop up one level in the stack (the parent directory). Commands which want to manipulate the stack like pushing themselves on the stack should use the methods "push_on_stack" or "reset_stack" (for jumping to the top of the menu).


$command_handler = new JMX::Jmx4Perl::Shell::CommandHandler($context,$ui)

Create a new command handler object. The arguments to be passed are the context object ($context) and the shell object ($shell) in order to update the shell's current command set.


Update the stack with an entry of name $context which provides the commands $cmds. $cmds must be a hashref as known to Term::ShellUI, whose commands method is used to update the shell. Additionally it updates the shell's prompt to reflect the state of the stack.


Reset the stack and install the top and global commands as collected from the registered OSGi::Osgish::Command.

$command = $command_handler->command($command_name)

Get a registered command by name


This file is part of jmx4perl.

Jmx4perl is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

jmx4perl is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with jmx4perl. If not, see <>.

A commercial license is available as well. Please contact for further details.


Just in case you need professional support for this module (or Nagios or JMX in general), you might want to have a look at Contact for further information (or use the contact form at