uTools-Manuals/docs/java/javax/management/package-summary.html

692 lines
41 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="header">
<h1 class="title" title="Package">Package javax.management</h1>
<div class="docSummary">
<div class="block">
提供Java管理扩展的核心类。
</div>
</div>
<p>See: <a href="#package.description">描述</a></p>
</div><div class="contentContainer">
<ul class="blockList">
<li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" class="typeSummary" summary="Interface Summary table, listing interfaces, and an explanation">
<caption>
<span>接口摘要</span>
<span class="tabEnd"> </span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">接口</th>
<th class="colLast" scope="col">描述</th>
</tr>
</tbody>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/Descriptor.html" title="interface in javax.management">Descriptor</a></td>
<td class="colLast">
<div class="block">
JMX元素的附加元数据。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/DescriptorAccess.html" title="interface in javax.management">DescriptorAccess</a></td>
<td class="colLast">
<div class="block">
该接口用于访问与JMX组件关联的描述符类的描述符
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/DescriptorRead.html" title="interface in javax.management">DescriptorRead</a></td>
<td class="colLast">
<div class="block">
用于读取管理界面元素如MBeanInfo的描述符的接口。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/DynamicMBean.html" title="interface in javax.management">DynamicMBean</a></td>
<td class="colLast">
<div class="block">
定义应该由动态MBean显示动态管理界面的MBean实现的方法。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/MBeanRegistration.html" title="interface in javax.management">MBeanRegistration</a></td>
<td class="colLast">
<div class="block">
可以由MBean实现以便在从MBean服务器注册或注销之前和之后执行操作。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/MBeanServer.html" title="interface in javax.management">MBeanServer</a></td>
<td class="colLast">
<div class="block">
这是代理方面的MBean操作界面。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/MBeanServerConnection.html" title="interface in javax.management">MBeanServerConnection</a></td>
<td class="colLast">
<div class="block">
此接口表示与MBean服务器通信的方式无论是本地还是远程。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/MBeanServerDelegateMBean.html" title="interface in javax.management">MBeanServerDelegateMBean</a></td>
<td class="colLast">
<div class="block">
定义MBeanServerDelegate类的对象的管理界面。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/NotificationBroadcaster.html" title="interface in javax.management">NotificationBroadcaster</a></td>
<td class="colLast">
<div class="block">
由发出通知的MBean实现的接口。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/NotificationEmitter.html" title="interface in javax.management">NotificationEmitter</a></td>
<td class="colLast">
<div class="block">
由发出通知的MBean实现的接口。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/NotificationFilter.html" title="interface in javax.management">NotificationFilter</a></td>
<td class="colLast">
<div class="block">
由任何作为通知过滤器的类来实现。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/NotificationListener.html" title="interface in javax.management">NotificationListener</a></td>
<td class="colLast">
<div class="block">
应该由想要接收通知的对象来实现。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/PersistentMBean.html" title="interface in javax.management">PersistentMBean</a></td>
<td class="colLast">
<div class="block">
这个类是由MBeans实现的旨在持久化的接口。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/QueryExp.html" title="interface in javax.management">QueryExp</a></td>
<td class="colLast">
<div class="block">
表示与数据库查询“where子句”类似的关系约束。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/ValueExp.html" title="interface in javax.management">ValueExp</a></td>
<td class="colLast">
<div class="block">
表示可以作为参数传递给关系表达式的值。
</div> </td>
</tr>
</tbody>
</table> </li>
<li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" class="typeSummary" summary="Class Summary table, listing classes, and an explanation">
<caption>
<span>类摘要</span>
<span class="tabEnd"> </span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col"></th>
<th class="colLast" scope="col">描述</th>
</tr>
</tbody>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/Attribute.html" title="class in javax.management">Attribute</a></td>
<td class="colLast">
<div class="block">
通过将其名称与其值相关联来表示MBean属性。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/AttributeChangeNotification.html" title="class in javax.management">AttributeChangeNotification</a></td>
<td class="colLast">
<div class="block">
提供MBean发送的属性更改通知的定义。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/AttributeChangeNotificationFilter.html" title="class in javax.management">AttributeChangeNotificationFilter</a></td>
<td class="colLast">
<div class="block">
<span>该类实现了<a href="../../javax/management/NotificationFilter.html" title="javax.management中的接口">88487332228232的</a> <code>NotificationFilter</code> <a href="../../javax/management/AttributeChangeNotification.html" title="javax.management中的类">接口</a></span>
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/AttributeList.html" title="class in javax.management">AttributeList</a></td>
<td class="colLast">
<div class="block">
表示MBean属性值的列表。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/AttributeValueExp.html" title="class in javax.management">AttributeValueExp</a></td>
<td class="colLast">
<div class="block">
表示用作关系约束的参数的属性。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/DefaultLoaderRepository.html" title="class in javax.management">DefaultLoaderRepository</a></td>
<td class="colLast">Deprecated
<div class="block">
<span class="deprecationComment">改用<a href="../../javax/management/MBeanServer.html#getClassLoaderRepository--"><code>MBeanServer.getClassLoaderRepository()</code></a></span>
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/ImmutableDescriptor.html" title="class in javax.management">ImmutableDescriptor</a></td>
<td class="colLast">
<div class="block">
一个不可变的描述符。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/JMX.html" title="class in javax.management">JMX</a></td>
<td class="colLast">
<div class="block">
来自JMX API的静态方法。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/MBeanAttributeInfo.html" title="class in javax.management">MBeanAttributeInfo</a></td>
<td class="colLast">
<div class="block">
描述为管理而公开的MBean属性。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/MBeanConstructorInfo.html" title="class in javax.management">MBeanConstructorInfo</a></td>
<td class="colLast">
<div class="block">
描述由MBean公开的构造函数。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/MBeanFeatureInfo.html" title="class in javax.management">MBeanFeatureInfo</a></td>
<td class="colLast">
<div class="block">
提供一个MBean描述符对象的一般信息。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/MBeanInfo.html" title="class in javax.management">MBeanInfo</a></td>
<td class="colLast">
<div class="block">
<span>描述MBean暴露的管理界面;</span>
<span>即可用于管理操作的一组属性和操作。</span>
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/MBeanNotificationInfo.html" title="class in javax.management">MBeanNotificationInfo</a></td>
<td class="colLast">
<div class="block">
<code>MBeanNotificationInfo</code>类用于描述针对给定Java类通知的MBean发布的不同通知实例的特性。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/MBeanOperationInfo.html" title="class in javax.management">MBeanOperationInfo</a></td>
<td class="colLast">
<div class="block">
描述MBean公开的管理操作。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/MBeanParameterInfo.html" title="class in javax.management">MBeanParameterInfo</a></td>
<td class="colLast">
<div class="block">
描述MBean暴露的操作的参数。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/MBeanPermission.html" title="class in javax.management">MBeanPermission</a></td>
<td class="colLast">
<div class="block">
控制访问MBeanServer操作的权限。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/MBeanServerBuilder.html" title="class in javax.management">MBeanServerBuilder</a></td>
<td class="colLast">
<div class="block">
<span>此类表示创建默认的<a href="../../javax/management/MBeanServer.html" title="javax.management中的接口"><code>MBeanServer</code></a>实现的构建器。</span>
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/MBeanServerDelegate.html" title="class in javax.management">MBeanServerDelegate</a></td>
<td class="colLast">
<div class="block">
从管理的角度来看MBean服务器。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/MBeanServerFactory.html" title="class in javax.management">MBeanServerFactory</a></td>
<td class="colLast">
<div class="block">
提供MBean服务器引用。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/MBeanServerInvocationHandler.html" title="class in javax.management">MBeanServerInvocationHandler</a></td>
<td class="colLast">
<div class="block">
<span><a href="../../java/lang/reflect/InvocationHandler.html" title="java.lang.reflect中的接口"><code>InvocationHandler</code></a>将MBean管理界面中的方法通过MBean服务器转发到MBean。</span>
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/MBeanServerNotification.html" title="class in javax.management">MBeanServerNotification</a></td>
<td class="colLast">
<div class="block">
表示MBean服务器通过MBeanServerDelegate MBean发出的通知。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/MBeanServerPermission.html" title="class in javax.management">MBeanServerPermission</a></td>
<td class="colLast">
<div class="block">
A执行与MBeanServers有关的操作的权限。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/MBeanTrustPermission.html" title="class in javax.management">MBeanTrustPermission</a></td>
<td class="colLast">
<div class="block">
此权限在签名者或代码库中表示“信任”。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/Notification.html" title="class in javax.management">Notification</a></td>
<td class="colLast">
<div class="block">
Notification类表示由MBean发出的通知。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/NotificationBroadcasterSupport.html" title="class in javax.management">NotificationBroadcasterSupport</a></td>
<td class="colLast">
<div class="block">
<span>提供<code>NotificationEmitter</code> <a href="../../javax/management/NotificationEmitter.html" title="javax.management中的接口">接口的</a>实现。</span>
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/NotificationFilterSupport.html" title="class in javax.management">NotificationFilterSupport</a></td>
<td class="colLast">
<div class="block">
<span>提供<code>NotificationFilter</code> <a href="../../javax/management/NotificationFilter.html" title="javax.management中的接口">接口的</a>实现。</span>
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/ObjectInstance.html" title="class in javax.management">ObjectInstance</a></td>
<td class="colLast">
<div class="block">
用于表示MBean的对象名称及其类名。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/ObjectName.html" title="class in javax.management">ObjectName</a></td>
<td class="colLast">
<div class="block">
表示MBean的对象名称或可匹配多个MBean名称的模式。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/Query.html" title="class in javax.management">Query</a></td>
<td class="colLast">
<div class="block">
构造查询对象约束。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/QueryEval.html" title="class in javax.management">QueryEval</a></td>
<td class="colLast">
<div class="block">
允许在特定MBean服务器的上下文中执行查询。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/StandardEmitterMBean.html" title="class in javax.management">StandardEmitterMBean</a></td>
<td class="colLast">
<div class="block">
一个MBean其管理界面由Java接口上的反射决定并发出通知。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/StandardMBean.html" title="class in javax.management">StandardMBean</a></td>
<td class="colLast">
<div class="block">
一个MBean其管理界面由Java接口上的反射决定。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/StringValueExp.html" title="class in javax.management">StringValueExp</a></td>
<td class="colLast">
<div class="block">
表示作为关系约束的参数的字符串。
</div> </td>
</tr>
</tbody>
</table> </li>
<li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" class="typeSummary" summary="Exception Summary table, listing exceptions, and an explanation">
<caption>
<span>异常摘要</span>
<span class="tabEnd"> </span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">异常</th>
<th class="colLast" scope="col">描述</th>
</tr>
</tbody>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/AttributeNotFoundException.html" title="class in javax.management">AttributeNotFoundException</a></td>
<td class="colLast">
<div class="block">
指定的属性不存在或无法检索。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/BadAttributeValueExpException.html" title="class in javax.management">BadAttributeValueExpException</a></td>
<td class="colLast">
<div class="block">
当无效的MBean属性传递给查询构造方法时抛出。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/BadBinaryOpValueExpException.html" title="class in javax.management">BadBinaryOpValueExpException</a></td>
<td class="colLast">
<div class="block">
当无效表达式传递给构造查询的方法时抛出。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/BadStringOperationException.html" title="class in javax.management">BadStringOperationException</a></td>
<td class="colLast">
<div class="block">
当无效的字符串操作传递给构造查询的方法时抛出。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/InstanceAlreadyExistsException.html" title="class in javax.management">InstanceAlreadyExistsException</a></td>
<td class="colLast">
<div class="block">
MBean已经在存储库中注册。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/InstanceNotFoundException.html" title="class in javax.management">InstanceNotFoundException</a></td>
<td class="colLast">
<div class="block">
存储库中不存在指定的MBean。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/IntrospectionException.html" title="class in javax.management">IntrospectionException</a></td>
<td class="colLast">
<div class="block">
在MBean的内省期间发生了一个例外。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/InvalidApplicationException.html" title="class in javax.management">InvalidApplicationException</a></td>
<td class="colLast">
<div class="block">
当尝试应用以下任一操作时抛出将MBean的子查询表达式或对错误类的MBean的限定属性表达式。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/InvalidAttributeValueException.html" title="class in javax.management">InvalidAttributeValueException</a></td>
<td class="colLast">
<div class="block">
指定的值对属性无效。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/JMException.html" title="class in javax.management">JMException</a></td>
<td class="colLast">
<div class="block">
JMX实现抛出异常。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/JMRuntimeException.html" title="class in javax.management">JMRuntimeException</a></td>
<td class="colLast">
<div class="block">
JMX实现发出的运行时异常。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/ListenerNotFoundException.html" title="class in javax.management">ListenerNotFoundException</a></td>
<td class="colLast">
<div class="block">
存储库中不存在指定的MBean侦听器。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/MalformedObjectNameException.html" title="class in javax.management">MalformedObjectNameException</a></td>
<td class="colLast">
<div class="block">
字符串的格式不对应于有效的ObjectName。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/MBeanException.html" title="class in javax.management">MBeanException</a></td>
<td class="colLast">
<div class="block">
表示代理中MBean方法抛出的“用户定义”异常。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/MBeanRegistrationException.html" title="class in javax.management">MBeanRegistrationException</a></td>
<td class="colLast">
<div class="block">
封装由preRegisterpreDeregister方法抛出的异常
<code>MBeanRegistration</code>接口。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/NotCompliantMBeanException.html" title="class in javax.management">NotCompliantMBeanException</a></td>
<td class="colLast">
<div class="block">
尝试在不符合JMX的MBean的MBean服务器中注册对象时发生的异常。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/OperationsException.html" title="class in javax.management">OperationsException</a></td>
<td class="colLast">
<div class="block">
表示对MBean执行操作时MBean服务器中抛出的异常。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/ReflectionException.html" title="class in javax.management">ReflectionException</a></td>
<td class="colLast">
<div class="block">
表示在使用java.lang.reflect类调用MBean方法时MBean服务器中抛出的异常。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/RuntimeErrorException.html" title="class in javax.management">RuntimeErrorException</a></td>
<td class="colLast">
<div class="block">
当一个
<code>java.lang.Error</code>发生在代理中时,它应该被捕获并重新抛出为
<code>RuntimeErrorException</code>
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/RuntimeMBeanException.html" title="class in javax.management">RuntimeMBeanException</a></td>
<td class="colLast">
<div class="block">
表示代理中MBean方法抛出的运行时异常。
</div> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/RuntimeOperationsException.html" title="class in javax.management">RuntimeOperationsException</a></td>
<td class="colLast">
<div class="block">
表示在对MBean执行操作时在代理中抛出的运行时异常。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/ServiceNotFoundException.html" title="class in javax.management">ServiceNotFoundException</a></td>
<td class="colLast">
<div class="block">
表示不支持请求的服务时引发的异常。
</div> </td>
</tr>
</tbody>
</table> </li>
<li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" class="typeSummary" summary="Annotation Types Summary table, listing annotation types, and an explanation">
<caption>
<span>注解类型摘要</span>
<span class="tabEnd"> </span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">Annotation Type</th>
<th class="colLast" scope="col">描述</th>
</tr>
</tbody>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../javax/management/DescriptorKey.html" title="annotation in javax.management">DescriptorKey</a></td>
<td class="colLast">
<div class="block">
<span>元注释描述注释元素如何与<code>Descriptor</code>中的字段<a href="../../javax/management/Descriptor.html" title="javax.management中的接口">相关</a></span>
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../javax/management/MXBean.html" title="annotation in javax.management">MXBean</a></td>
<td class="colLast">
<div class="block">
用于将界面明确标记为MXBean接口或不作为MXBean接口的注释。
</div> </td>
</tr>
</tbody>
</table> </li>
</ul>
<a name="package.description">
<!-- --> </a>
<h2 title="Package javax.management Description">Package javax.management Description</h2>
<div class="block">
<p> <span>提供Java管理扩展的核心类。</span> </p>
<p> <span>Java管理扩展JMX <sup><font size="-1">TM</font></sup> API是用于管理和监视的标准API。</span> <span>典型用途包括:</span> </p>
<ul>
<li> <span>咨询和更改应用程序配置</span> </li>
<li> <span>累积关于应用程序行为的统计信息并使其可用</span> </li>
<li> <span>通知国家变化和错误的条件。</span> </li>
</ul>
<p> <span>JMX API也可以用作管理系统网络等的解决方案的一部分。</span> </p>
<p> <span>API包括远程访问因此远程管理程序可以与正在运行的应用程序进行交互以实现这些目的。</span> </p>
<h2> <span>MBeans</span> </h2>
<p> <span>JMX API的基本概念是<em>MBean</em></span> <span>MBean是一个表示资源的命名<em>管理对象</em></span> <span>它具有必须<em>公开</em><em id="mgIface">管理界面</em> ,包括:</span> </p>
<ul>
<li> <span>命名和键入的属性,可以读取和/或写入</span> </li>
<li> <span>命名和键入的操作可以被调用</span> </li>
<li> <span>可以由MBean发布的类型通知。</span> </li>
</ul>
<p> <span>例如代表应用程序配置的MBean可以具有表示不同配置项的属性。</span> <span>读取<code>CacheSize</code>属性将返回该项目的当前值。</span> <span>编写它会更新项目,从而潜在地改变正在运行的应用程序的行为。</span> <span>诸如<code>save</code>可以<code>save</code>存储当前配置。</span> <span>每次更改配置时都可以发送ConfigurationChangedNotification等<code>ConfigurationChangedNotification</code></span> </p>
<p> <span>在JMX API的标准用法中MBeans被实现为Java对象。</span> <span>然而,如下所述,这些对象通常不直接引用。</span> </p>
<h3> <span>标准MBeans</span> </h3>
<p> <span>为了使MBean的实现变得简单JMX API包含了<em>标准MBean</em>的概念。</span> <span>标准MBean是一种使用某些命名模式从Java界面推导其属性和操作的类与JavaBeans <sup><font size="-1">TM</font></sup>类似。</span> <span>例如,考虑一个这样的接口:</span> </p>
<pre> <span>public interface ConfigurationMBean {
public int getCacheSize();
public void setCacheSize(int size);
public long getLastChangedTime();
public void save();
}</span> </pre>
<p> <span>方法<code>getCacheSize</code><code>setCacheSize</code>限定类型的一个读写属性<code>int</code>称为<code>CacheSize</code> 以初始资本与JavaBeans惯例不同</span> </p>
<p> <span>该方法<code>getLastChangedTime</code>定义类型的属性<code>long</code>称为<code>LastChangedTime</code></span> <span>这是一个只读属性,因为没有方法<code>setLastChangedTime</code></span> </p>
<p> <span>方法<code>save</code>定义了一个称为<code>save</code></span> <span>它不是一个属性,因为它的名字开头不是<code>get</code> <code>set</code> ,或<code>is</code></span> </p>
<p> <span>标准MBean的确切命名模式详见<a href="#spec">JMX Specification</a></span> </p>
<p> <span>有两种方法来创建一个具有此管理界面的MBean的Java对象。</span> <span>一个是对象是一个与Java接口具有完全相同名称但没有<code>MBean</code>后缀的类。</span> <span>因此,在示例中,对象将是类<code>Configuration</code> 在相同的Java包为<code>ConfigurationMBean</code></span> <span>第二种方法是使用<a href="../../javax/management/StandardMBean.html" title="javax.management中的类"><code>StandardMBean</code></a>类。</span> </p>
<h3> <span>MXBeans</span> </h3>
<p> <span><em>MXBean</em>是标准MBean的变体其中复杂类型映射到<a href="../../javax/management/openmbean/package-summary.html"><code>javax.management.openmbean</code></a>包中定义的一组标准类型。</span> <span>如果您需要在MBean界面中引用特定于应用程序的类那么MXBeans是合适的。</span> <span>他们进行了详细的规范说明<a href="../../javax/management/MXBean.html" title="javax.management中的注释"><code>MXBean</code></a></span> </p>
<h3> <span>动态MBean</span> </h3>
<p> <span><em>动态MBean</em>是一个在运行时定义其管理界面的MBean。</span> <span>例如配置MBean可以通过解析XML文件来确定其公开的属性的名称和类型。</span> </p>
<p> <span>实现<a href="../../javax/management/DynamicMBean.html" title="javax.management中的接口"><code>DynamicMBean</code></a>接口的类的任何Java对象都是动态MBean。</span> </p>
<h3> <span>打开MBean</span> </h3>
<p> <span>一个<em>开放MBean</em>是一种动态MBean其中使用一小组预定义Java类构建了属性类型和操作参数和返回值。</span> <span>开放的MBeans可以帮助远程管理程序进行操作这些程序不一定能够访问特定于应用程序的类型包括非Java程序。</span> <span>打开的MBeans由包<a href="openmbean/package-summary.html"><code> javax.management.openmbean</code></a>定义。</span> </p>
<h3> <span>模型MBeans</span> </h3>
<p> <span><em>模型MBean</em>是一种动态MBean充当管理界面和底层托管资源之间的桥梁。</span> <span>管理界面和被管理资源都被指定为Java对象。</span> <span>相同的Model MBean实现可以通过不同的管理接口和托管资源重复使用多次并且可以提供常见的功能如持久性和缓存。</span> <span>模型MBeans由包<a href="modelmbean/package-summary.html"><code> javax.management.modelmbean</code></a>定义。</span> </p>
<h2> <span>MBean服务器</span> </h2>
<p> <span>为了有用,必须在<em>MBean服务器</em>中注册<em>MBean</em></span> <span>MBean服务器是MBean的存储库。</span> <span>通常MBean的唯一访问是通过MBean服务器。</span> <span>换句话说代码不再直接访问实现MBean的Java对象而是通过MBean服务器以名称访问MBean。</span> <span>每个MBean在MBean服务器中都有一个唯一的名称<a href="../../javax/management/ObjectName.html" title="javax.management中的类"><code>ObjectName</code></a>类定义。</span> </p>
<p> <span>MBean服务器是一个实现该接口的对象<a href="../../javax/management/MBeanServer.html" title="javax.management中的接口"><code>MBeanServer</code></a></span> <span>使用最方便的MBean服务器是<em>Platform MBean Server</em></span> <span>这是一个单独的MBean服务器可以在同一个Java虚拟机中运行的不同托管组件共享。</span> <span>使用方法<a href="../../java/lang/management/ManagementFactory.html#getPlatformMBeanServer--"><code>ManagementFactory.getPlatformMBeanServer()</code></a>访问平台MBean服务器。</span> </p>
<p> <span>应用程序代码还可以使用<a href="../../javax/management/MBeanServerFactory.html" title="javax.management中的类"><code>MBeanServerFactory</code></a>类创建一个新的MBean服务器或访问已创建的MBean服务器。</span> </p>
<h3> <span>在MBean服务器中创建MBean</span> </h3>
<p> <span>创建MBean有两种方法。</span> <span>一个是构造一个将是MBean的Java对象然后使用<a href="../../javax/management/MBeanServer.html#registerMBean-java.lang.Object-javax.management.ObjectName-"><code>registerMBean</code></a>方法在MBean服务器中注册它。</span> <span>另一个是使用<a href="../../javax/management/MBeanServer.html#createMBean-java.lang.String-javax.management.ObjectName-"><code>createMBean</code></a>方法之一在一个操作中创建和注册MBean。</span> </p>
<p> <span><code>registerMBean</code>方法对于本地使用来说更简单,但不能远程使用。</span> <span><code>createMBean</code>方法可以远程使用,但有时需要注意类加载问题。</span> </p>
<p> <span>当它被注册或未注册的MBean服务器如果它实现了一个MBean可以执行的操作<a href="../../javax/management/MBeanRegistration.html" title="javax.management中的接口"><code>MBeanRegistration</code></a>接口。</span> </p>
<h3> <span>访问MBean服务器中的MBean</span> </h3>
<p> <span>给定<code>ObjectName</code> <code>name</code><code>MBeanServer</code> <code>mbs</code> ,您可以访问属性和操作,如本示例所示:</span> </p>
<pre> <span>int cacheSize = mbs.getAttribute(name, "CacheSize");
<a href="../../javax/management/Attribute.html" title="class in javax.management"><code>Attribute</code></a> newCacheSize =
new Attribute("CacheSize", new Integer(2000));
mbs.setAttribute(name, newCacheSize);
mbs.invoke(name, "save", new Object[0], new Class[0]);</span> </pre>
<p id="proxy"> <span>或者如果您有一个与MBean的管理界面相对应的Java接口则可以使用以下<em>MBean代理</em> </span> </p>
<pre> <span>ConfigurationMBean conf =
<a href="../../javax/management/JMX.html#newMBeanProxy-javax.management.MBeanServerConnection-javax.management.ObjectName-java.lang.Class-"><code>JMX.newMBeanProxy</code></a>(mbs, name, ConfigurationMBean.class);
int cacheSize = conf.getCacheSize();
conf.setCacheSize(2000);
conf.save();</span> </pre>
<p> <span>使用MBean代理只是一个方便。</span> <span>第二个例子最终会调用与第一个相同的<code>MBeanServer</code>操作。</span> </p>
<p> <span>对于名称与某些模式匹配的MBean和/或其属性满足某些限制的MBean可以查询MBean服务器。</span> <span>名称模式使用<a href="../../javax/management/ObjectName.html" title="javax.management中的类"><code>ObjectName</code></a>类构建,约束使用<a href="../../javax/management/Query.html" title="javax.management中的类"><code>Query</code></a><a href="../../javax/management/Query.html" title="javax.management中的类">构建</a></span> <span>方法<a href="../../javax/management/MBeanServer.html#queryNames-javax.management.ObjectName-javax.management.QueryExp-"><code>queryNames</code></a><a href="../../javax/management/MBeanServer.html#queryMBeans-javax.management.ObjectName-javax.management.QueryExp-"><code>queryMBeans</code></a>然后执行查询。</span> </p>
<h3> <span>MBean生命周期</span> </h3>
<p> <span>MBean可以实现<a href="../../javax/management/MBeanRegistration.html" title="javax.management中的接口"><code>MBeanRegistration</code></a>接口以便在MBean服务器中注册和注销时被告知。</span> <span>此外, <a href="../../javax/management/MBeanRegistration.html#preRegister-javax.management.MBeanServer-javax.management.ObjectName-"><code>preRegister</code></a>方法允许MBean获得对<code>MBeanServer</code>对象的引用并在MBean服务器中获取其<code>ObjectName</code></span> </p>
<h2> <span>通知</span> </h2>
<p> <span><em>通知</em><a href="../../javax/management/Notification.html" title="javax.management中的类"><code>Notification</code></a>类或一个子类的一个实例。</span> <span>除了Java类之外它还有一个<em>类型</em>字符串,可以将其与同一个类的其他通知区分开来。</span> </p>
<p> <span>将发出通知的MBean必须实现<a href="../../javax/management/NotificationBroadcaster.html" title="javax.management中的接口"><code>NotificationBroadcaster</code></a><a href="../../javax/management/NotificationEmitter.html" title="javax.management中的接口"><code>NotificationEmitter</code></a>接口。</span> <span>通常,它通过子类化<a href="../../javax/management/NotificationBroadcasterSupport.html" title="javax.management中的类"><code>NotificationBroadcasterSupport</code></a>或委派给该类的实例来实现。</span> <span>这是一个例子:</span> </p>
<pre> <span>public class Configuration <b>extends NotificationBroadcasterSupport</b>
implements ConfigurationMBean {
...
private void updated() {
Notification n = new Notification(...);
<b><a href="../../javax/management/NotificationBroadcasterSupport.html#sendNotification-javax.management.Notification-"><code>sendNotification</code></a>(n)</b>;
}
}</span> </pre>
<p> <span><em>监听器</em>可以接收通知, <em>监听器</em>是实现<a href="../../javax/management/NotificationListener.html" title="javax.management中的接口"><code>NotificationListener</code></a>接口的对象。</span> <span>您可以使用方法<a href="../../javax/management/MBeanServer.html#addNotificationListener-javax.management.ObjectName-javax.management.NotificationListener-javax.management.NotificationFilter-java.lang.Object-"><code>MBeanServer.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object)</code></a>将侦听器添加到MBean。</span> <span>您可以选择为此方法提供<em>过滤器</em> ,仅选择感兴趣的通知。</span> <span>过滤器是实现<a href="../../javax/management/NotificationFilter.html" title="javax.management中的接口"><code>NotificationFilter</code></a>接口的对象。</span> </p>
<p> <span>MBean可以是同一MBean服务器中其他MBean发出的通知的侦听器。</span> <span>在这种情况下,它实现<a href="../../javax/management/NotificationListener.html" title="javax.management中的接口"><code>NotificationListener</code></a> ,方法<a href="../../javax/management/MBeanServer.html#addNotificationListener-javax.management.ObjectName-javax.management.ObjectName-javax.management.NotificationFilter-java.lang.Object-"><code>MBeanServer.addNotificationListener(ObjectName, ObjectName, NotificationFilter, Object)</code></a>用于监听。</span> </p>
<h2> <span>远程访问MBean</span> </h2>
<p> <span>MBean服务器可以远程通过<em>连接器</em>来访问。</span> <span>连接器允许远程Java应用程序以与本地服务器基本相同的方式访问MBean服务器。</span> <span><a href="remote/package-summary.html"><code> javax.management.remote</code></a>定义连接器。</span> </p>
<p> <span>JMX规范还定义了<em>适配器</em>的概念。</span> <span>适配器在协议如SNMP或HTML中的请求之间进行转换并访问MBean服务器。</span> <span>因此例如SNMP GET操作可能会导致MBean服务器上的<code>getAttribute</code></span> </p>
<h3 id="interop"> <span>JMX规范版本之间的互操作性</span> </h3>
<p> <span>当客户端使用JMX Remote API连接到服务器时它们可能没有相同版本的JMX规范。</span> <span>这里描述的JMX规范版本是1.4版本。</span> <span>以前的版本是1.0,1.1和1.2。</span> <span>没有1.3。标准JMX Remote API被定义为使用版本1.2以上因此在基于标准的部署中唯一的互操作性问题出现在版本1.2之前。</span> </p>
<p> <span>每个版本的JMX规范继续实现以前版本的功能。</span> <span>因此,当客户端运行的版本低于服务器时,不应存在任何互操作性问题。</span> </p>
<p> <span>当客户端运行比服务器更新的版本时,某些较新的功能可能无法使用,如下一节所述。</span> <span>客户端可以通过检查确定服务器的版本<a href="../../javax/management/MBeanServerDelegateMBean.html#getSpecificationVersion--"><code>SpecificationVersion</code></a>的属性<code>MBeanServerDelegate</code></span> </p>
<h4 id="interop-1.2"> <span>如果远程MBean服务器是1.2</span> </h4>
<ul>
<li><p> <span>您不能在<code>ObjectName</code>的关键属性中使用<a href="../../javax/management/ObjectName.html" title="javax.management中的类">通配符</a> ,例如<code>domain:type=Foo,name=*</code></span> <span>仍然允许匹配整个属性的通配符,例如<code>*:*</code><code>*:type=Foo,*</code></span> </p></li>
<li><p> <span>您不能在查询中使用<a href="../../javax/management/Query.html#isInstanceOf-javax.management.StringValueExp-"><code>Query.isInstanceOf</code></a></span> </p></li>
<li><p> <span>不能使用点语法,如<code>HeapMemoryUsage.used</code><a href="../../javax/management/monitor/Monitor.html#setObservedAttribute-java.lang.String-">observed attribute</a>监视器,作为文档中描述<a href="../../javax/management/monitor/package-summary.html"><code>javax.management.monitor</code></a>包。</span> </p></li>
</ul>
<p id="spec"></p>
</div>
<dl>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.5
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../technotes/guides/jmx/index.html"> Java Platform documentation on JMX technology</a> in particular the
<a href="../../../technotes/guides/jmx/JMX_1_4_specification.pdf"> JMX Specification, version 1.4(pdf).</a>
</dd>
</dl>
</div>