Modifying a Role

Suppose that we want to add another Consumer MBean thread into the system. The Controller class provides a method, createWorker( ), that allows us to do so through a management application. We specify the worker’s role name and its work factor, and createWorker( ) creates the appropriate worker MBean and starts its thread of execution. However, in order for the relation service to perform a consistency check on the relationship between the Consumer and Supplier MBeans, we must modify the Consumer role. Moreover, we must do so through the methods provided to us by the relation service.

Tip

Simply creating an MBean of a class type that has been specified to be part of a role in a relation has no effect on the relation service. In other words, if we instantiate a new Consumer worker but fail to modify the appropriate Role object, the relation service will be unaware of the new MBean and will not perform any consistency checks on the relation!

In the agent code that creates new worker MBeans and registers them with the MBean server, we must also modify the appropriate Role object within the Consumer/Supplier relation that we created. If creating the new worker MBean makes the role no longer be consistent, the relation service will throw an exception. We must be prepared to catch the exception and take any necessary steps to remove the newly created MBean from the system. Let’s look at an example.

Suppose we create a new Consumer MBean, using a browser and the HTML Adaptor ...

Get Java Management Extensions now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.