The examplesDir/legacy/Cascading directory contains all of the files for the two agent applications, along with a simple MBean.
Compile all files in this directory with the javac command. For example, on the Solaris platform with the Korn shell, you would type:
$ cd examplesDir/legacy/Cascading/ $ javac -classpath classpath *.java
Start the subagent in another terminal window with the following command. Be sure that the classes for the SimpleStandard MBean can be found in its classpath.
$ java -classpath classpath SubAgent
Wait for the agent to be completely initialized, then start the master agent with the following command:
$ java -classpath classpath MasterAgent
When started, the master agent application first creates the CascadingAgent MBean and then sets up its connection to the subagent. The master agent then performs operations on the mirrored MBeans of the subagent. Press Enter to step through the example when the application pauses.
You can also interact with the example through the HTML adaptor of the master agent and subagent. If you are still receiving timer notification on the master agent, press Enter once more to remove the listener, but leave both agent applications running.
Open two browser windows side by side and load the following URLs:
In the subagent, you should see the timer MBean in the CascadedDomain and a SimpleStandard MBean in the DefaultDomain.
The master agent is recognizable by the cascading service MBean in the DefaultDomain. Otherwise it has an identical timer MBean registered in the CascadedDomain: this is the mirror for the timer in the subagent. The SimpleStandard MBean is not mirrored because our cascading service instance filters with the following object name pattern:
Create four MBeans of the SimpleStandard class in following order:
Reload the agent view on the master agent.
The mirror MBeans for the last two agents have been created automatically. Look at the MBean view of either of these mirror MBeans on the master agent. Their class name appears as SimpleStandard.
In the master agent, set a new value for the State string attribute of all 3 of its SimpleStandard MBeans.
When you look at the corresponding MBeans in the subagent, you see that number=2 and number=3 were updated by their mirror MBean. However, number=1 has not changed on the subagent. Because it was created first in the master agent, it is not mirrored and exists separately on each agent.
In the subagent, invoke the reset operation of all 3 of its SimpleStandard MBeans.
When you inspect the MBeans in the master agent, the values for number=2 and number=3 were reset. Remember that the HTML adaptor must get the values of attributes for displaying them, so they were correctly retrieved from the mirrored MBeans that we reset.
In the master agent, unregister MBeans number=1 and number=2, then update the agent view of the subagent.
In the subagent, you should still see the local version of number=1, but number=2 has been removed at the same time as its mirror MBean.
We are in a state where number=1 is a valid MBean for mirroring but it is not currently mirrored. This incoherence results from the fact that we did not have unique object names throughout the cascading hierarchy. Only new MBeans are mirrored dynamically, following the notification that signals their creation. We would have to stop and restart the master agent's cascading service MBean to mirror number=1.
In the subagent, unregister MBeans number=1 and number=3, then update the agent view on the master agent.
The mirror MBean for number=3 was automatically removed by the cascading service, so none of the MBeans we added now remain.
Invoke the stop operation of the CascadingAgent MBean in the master agent.
The last mirror MBean for the timer is removed from the master agent. The two agents are no longer connected.
If you have finished with the agents, press Enter in both of their terminal windows to exit the applications.