8181895: javax management docs contain links to technotes
Summary: Edited links to point to Alternate paths
Reviewed-by: rriggs
Contributed-by: ujwal.vangapally@oracle.com
<html>
<head>
<title>javax.management.modelmbean package</title>
<!--
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation. Oracle designates this
particular file as subject to the "Classpath" exception as provided
by Oracle in the LICENSE file that accompanied this code.
This code 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
version 2 for more details (a copy is included in the LICENSE file that
accompanied this code).
You should have received a copy of the GNU General Public License version
2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
or visit www.oracle.com if you need additional information or have any
questions.
-->
</head>
<body bgcolor="white">
<p>Provides the definition of the ModelMBean classes. A Model
MBean is an MBean that acts as a bridge between the management
interface and the underlying managed resource. Both the
management interface and the managed resource are specified as
Java objects. The same Model MBean implementation can be
reused many times with different management interfaces and
managed resources, and it can provide common functionality
such as persistence and caching.</p>
<p>A Model MBean implements the {@link
javax.management.modelmbean.ModelMBean ModelMBean} interface.
It is a {@link javax.management.DynamicMBean DynamicMBean}
whose {@link javax.management.DynamicMBean#getMBeanInfo()
getMBeanInfo} method returns an object implementing {@link
javax.management.modelmbean.ModelMBeanInfo
ModelMBeanInfo}.</p>
<p>Every MBean has an {@link javax.management.MBeanInfo
MBeanInfo} with information about the MBean itself, and its
attributes, operations, constructors, and notifications. A
Model MBean augments this <code>MBeanInfo</code> with {@link
javax.management.Descriptor Descriptor}s that encode
additional information in the form of (key,value) pairs.
Usually, <code>Descriptor</code>s are instances of {@link
javax.management.modelmbean.DescriptorSupport
DescriptorSupport}.</p>
<p>The class {@link
javax.management.modelmbean.RequiredModelMBean
RequiredModelMBean} provides a standard Model MBean
implementation.</p>
<p>The following example shows a Model MBean being used to make
the <code>get</code> method of a <code>HashMap</code>
available for management through an MBean server. No other
methods are available through the MBean server. There is
nothing special about <code>HashMap</code> here. Public
methods from any public class can be exposed for management in
the same way.</p>
<pre>
import java.lang.reflect.Method;
import java.util.HashMap;
import javax.management.*;
import javax.management.modelmbean.*;
// ...
MBeanServer mbs = MBeanServerFactory.createMBeanServer();
// The MBean Server
HashMap map = new HashMap();
// The resource that will be managed
// Construct the management interface for the Model MBean
Method getMethod = HashMap.class.getMethod("get", new Class[] {Object.class});
ModelMBeanOperationInfo getInfo =
new ModelMBeanOperationInfo("Get value for key", getMethod);
ModelMBeanInfo mmbi =
new ModelMBeanInfoSupport(HashMap.class.getName(),
"Map of keys and values",
null, // no attributes
null, // no constructors
new ModelMBeanOperationInfo[] {getInfo},
null); // no notifications
// Make the Model MBean and link it to the resource
ModelMBean mmb = new RequiredModelMBean(mmbi);
mmb.setManagedResource(map, "ObjectReference");
// Register the Model MBean in the MBean Server
ObjectName mapName = new ObjectName(":type=Map,name=whatever");
mbs.registerMBean(mmb, mapName);
// Resource can evolve independently of the MBean
map.put("key", "value");
// Can access the "get" method through the MBean Server
mbs.invoke(mapName, "get", new Object[] {"key"}, new String[] {Object.class.getName()});
// returns "value"
</pre>
<h2><a id="spec">Package Specification</a></h2>
<ul>
<li>See the <i>JMX 1.4 Specification</i>
<a href="https://jcp.org/aboutJava/communityprocess/mrel/jsr160/index2.html">
JMX Specification, version 1.4</a>
</ul>
@since 1.5
</BODY>
</HTML>