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.