The displayAMX() method demonstrates how to display the AMX MBean hierarchy.
[...]
displayAMX(
final AMX amx,
final int indentCount )
{
final String indent = getIndent( indentCount );
final String j2eeType = amx.getJ2EEType();
final String name = amx.getName();
if ( name.equals( AMX.NO_NAME ) )
{
println( indent + j2eeType );
}
else
{
println( indent + j2eeType + "=" + name );
}
}
private void
displayHierarchy(
final Collection amxSet,
final int indentCount )
{
final Iterator iter = amxSet.iterator();
while ( iter.hasNext() )
{
final AMX amx = (AMX)iter.next();
displayHierarchy( amx, indentCount );
}
}
public void
displayHierarchy(
final AMX amx,
final int indentCount )
{
displayAMX( amx, indentCount );
if ( amx instanceof Container )
{
final Map m = ((Container)amx).getMultiContaineeMap( null );
final Set deferred = new HashSet();
final Iterator mapsIter = m.values().iterator();
while ( mapsIter.hasNext() )
{
final Map instancesMap = (Map)mapsIter.next();
final AMX first = (AMX)instancesMap.values().iterator().next();
if ( first instanceof Container )
{
deferred.add( instancesMap );
}
else
{
displayHierarchy( instancesMap.values(), indentCount + 2);
}
}
// display deferred items
final Iterator iter = deferred.iterator();
while ( iter.hasNext() )
{
final Map instancesMap = (Map)iter.next();
displayHierarchy( instancesMap.values(), indentCount + 2);
}
}
}
public void displayHierarchy()
{
displayHierarchy( getDomainRoot(), 0);
}
public void
displayHierarchy( final String j2eeType )
{
final Set items = getQueryMgr().queryJ2EETypeSet( j2eeType );
if ( items.size() == 0 )
{
println( "No {@link AMX} of j2eeType "
+ SampleUtil.quote( j2eeType ) + " found" );
}
else
{
displayHierarchy( items, 0);
}
}
[...]
The displayAMX() method obtains the J2EE type and the name of an AMX MBean by calling AMX.getJ2EEType and AMX.getName respectively.
The displayHierarchy() method defines a standard Java Collection instance, amxSet, which collects instances of AMX MBeans.
To display the hierarchy of MBeans within a particular MBean in the collection, displayHierarchy() checks whether the MBean is an instance of Container. If so, it creates a set of the MBeans it contains by calling the com.sun.appserv.management.base.Container.getMultiContaineeMap() method.
The MBean hierarchy for a particular J2EE type is displayed by calling the com.sun.appserv.management.base.QueryMgr.queryJ2EETypeSet(), and passing the result to displayHierarchy().
To display the entire AMX MBean hierarchy in a domain, displayHierarchy() calls getDomainRoot() to obtain the root AMX MBean in the domain.