﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-向左走，向右走。。。-文章分类-JMX</title><link>http://www.blogjava.net/Tower/category/353.html</link><description>永远不回头</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 07:28:55 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 07:28:55 GMT</pubDate><ttl>60</ttl><item><title>JMX组件概述</title><link>http://www.blogjava.net/Tower/articles/952.html</link><dc:creator>非飞</dc:creator><author>非飞</author><pubDate>Thu, 03 Feb 2005 06:13:00 GMT</pubDate><guid>http://www.blogjava.net/Tower/articles/952.html</guid><wfw:comment>http://www.blogjava.net/Tower/comments/952.html</wfw:comment><comments>http://www.blogjava.net/Tower/articles/952.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Tower/comments/commentRss/952.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Tower/services/trackbacks/952.html</trackback:ping><description><![CDATA[<div style="text-align: center;">
<div style="text-align: left;"><font size="3">翻译：JMX规范version1.2</font><br>
<font size="5"><span style="font-weight: bold;"></span></font></div>
<font size="5"><span style="font-weight: bold;">JMX组件概述<br>
<br>
</span></font></div>
&nbsp;&nbsp;&nbsp; 下面列出了JMX架构每一层中的关键组件，并将在接下来的部分进行介绍。<br>
&nbsp;&nbsp;&nbsp; 1.工具层（Instrumentation Level）<br>
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; a.MBeans（标准的，动态的，开放的和模型MBeans）<br>
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; b.通知模型<br>
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; c.MBean元数据类<br>
&nbsp;&nbsp;&nbsp; 2.代理层（Agent Level）<br>
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; a.MBean Server<br>
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; b.代理服务<br>
<br>
<font style="font-weight: bold;" size="4">工具层的组件<br>
<br>
</font>&nbsp;&nbsp;&nbsp; 工具层的主要组件就是MBean设计模式，通知模型和MBean元数据类。<br>
<br>
<span style="font-weight: bold;">MBeans</span><br>
&nbsp;&nbsp;&nbsp; MBean是实现了一个特定接口，并遵从某一设计模式的Java对象。这要求在MBean中规范化资源管理接口的表现形式。资源的管理接口包含所有需要的信息，以及管理程序需要在资源上进行的操作的控制。<br>
&nbsp;&nbsp;&nbsp; MBean的管理接口表现为如下几种：<br>
&nbsp;&nbsp;&nbsp; 1.可以被访问的属性；<br>
&nbsp;&nbsp;&nbsp; 2.可以被调用的操作；<br>
&nbsp;&nbsp;&nbsp; 3.可以被发布的通知；<br>
&nbsp;&nbsp;&nbsp; 4.MBean类的构造子。<br>
&nbsp;&nbsp;&nbsp; MBeans通过它们的公共方法封装属性和方法，沿袭设计模式暴露它们给管理程序。例如，在标准MBean中一个只读的属性只有getter方法，而可读写的属性则既有getter方法，又有setter方法。<br>
任何作为MBean来实现的对象，并且在代理中注册，则它可以在代理所在的JVM以外进行管理。这些对象包括：<br>
&nbsp;&nbsp;&nbsp; 1.程序所管理的资源；<br>
&nbsp;&nbsp;&nbsp; 2.为帮助管理资源提供的增值服务；<br>
&nbsp;&nbsp;&nbsp; 3.能被管理的JMX基础结构组件。<br>
&nbsp;&nbsp;&nbsp; 其他的JMX组件，例如代理服务，被指定为工具MBeans，使它们能受益于JMX的基础结构，并提供管理接口。<br>
&nbsp;&nbsp;&nbsp; JMX架构并没有强行限制编译好的MBean类的储存位置。它们可以放在任何代理的JVM的classpath指向的位置，如果使用了类载入（class loading）它们也可以放在一个远程的站点。<br>
&nbsp;&nbsp;&nbsp; JMX规范定义了四类MBean：标准MBean、动态MBean、开放MBean和模型MBean。每一种MBean需要一种不同的工具。<br>
&nbsp;&nbsp;&nbsp; 1.标准MBeans（Standard MBeans）设计和实现是最简单的，这类MBean使用自己的方法名作为管理接口；<br>
&nbsp;&nbsp;&nbsp; 2.动态MBeans（Dynamic MBeans）必须实现一个指定的接口，由于动态MBeans在运行期间暴露它们的管理接口，因此更为灵活；<br>
&nbsp;&nbsp;&nbsp; 3.开放MBeans（Open MBeans）属于动态MBeans，这类MBean依靠基础数据类型来实现通用管理，并为友情用户进行自我声明；<br>
&nbsp;&nbsp;&nbsp; 4.模型MBeans（Model MBeans）同样也是动态MBeans，这类MBeans是完全可配置的，在运行期间进行自我声明；它们为资源动态工具提供一个一般性的，有默认行为的MBeans类。<br>
<br>
<span style="font-weight: bold;">通知模型（Notification Model）</span><br>
&nbsp;&nbsp;&nbsp; JMX规范定义了基于Java事件模型的一般性通知模型。通知可以被MBean的实例和MBean server发布。规范中指明通知的发送和接受者必须实现通知对象、广播和监听接口。<br>
&nbsp;&nbsp;&nbsp; JMX的实现可以提供通知模型发布的服务，来使管理程序远程侦听MBean模型和MBean
server的事件。如何完成通知模型的发布超出了本部分规范的范围。规范的后面将讨论高级通知服务，例如管理程序取回通知进行转发和保存。<br>
<br>
<span style="font-weight: bold;">MBean元数据类</span><br>
&nbsp;&nbsp;&nbsp; 工具规范定义了MBean的管理接口的类。这些类用来定义构建发布MBean管理接口的标准信息结构。在代理层的MBean server的一个功能是提供MBeans的元数据。<br>
&nbsp;&nbsp;&nbsp; 元数据类包含描述MBean的管理接口的所有组件的结构：属性、操作、通知和构造子。每一个元数据类包含有名字、描述和它的特性。例如，属性的特性是它为只读、只写还是可读写；操作的特性是它的参数的标识和返回类型。<br>
&nbsp;&nbsp;&nbsp; 不同类型的MBean扩展元数据类来提供附加的信息。通过继承，标准信息总是可用的，知道如何访问子类的管理程序可以获得额外的信息。<br>
<br>
<font style="font-weight: bold;" size="4">代理层的组件<br>
<br>
</font>&nbsp;&nbsp;&nbsp; 代理层的关键组件是工具层的对象都在其中注册的MBean server，和使JMX代理体现更自主和性能更好的智能管理可用的代理服务。<br>
<br>
<span style="font-weight: bold;">MBean Server</span><br>
&nbsp;&nbsp;&nbsp; 被管理Bean的服务，简称MBean
server，用来注册在代理中暴露给管理操作的对象。任何注册在MBean server中的对象对于管理程序都是可见的。MBean
server只暴露MBean的管理接口，而不是直接暴露对象的引用。<br>
&nbsp;&nbsp;&nbsp; 任何系统在代理JVM以外管理的资源都必须在MBean server中作为MBean注册。MBean
server也提供一个标准化的接口，给同一个JVM来访问MBeans，为本地对象提供手工可管理资源的所有好处。MBeans可以通过一下几类来实例
化和注册：<br>
&nbsp;&nbsp;&nbsp; 1.其他的MBean；<br>
&nbsp;&nbsp;&nbsp; 2.代理本身；<br>
&nbsp;&nbsp;&nbsp; 3.远程管理程序（通过分布式服务）<br>
&nbsp;&nbsp;&nbsp; 注册MBean的时候，必须为它指定一个唯一的对象名（Object Name）。管理程序用这个对象名来标识执行管理操作的对象。MBean可用的操作包括：<br>
&nbsp;&nbsp;&nbsp; 1.发现MBean的管理接口；<br>
&nbsp;&nbsp;&nbsp; 2.读写MBean的属性；<br>
&nbsp;&nbsp;&nbsp; 3.执行MBean定义的操作；<br>
&nbsp;&nbsp;&nbsp; 4.基于对象名或者属性值来查询MBean。<br>
&nbsp;&nbsp;&nbsp; MBean
server通过协议适配器和连接器使代理的JVM外的管理程序可以访问代理。通过指定的协议每种适配器提供所有注册在MBean
server中的MBean的实例的视图。例如，HTML适配器可以显示MBean到Web浏览器。协议适配器提供的视图因协议的不同而不同，在本规范中
不对其进行讨论。<br>
&nbsp;&nbsp;&nbsp;
连接器提供用来处理管理和代理之间通信的管理方接口。即使是不同的协议，每个连接器都提供相同的远程接口。当远程管理程序使用这些接口时，它就可以通过网
络透明的连接到代理，而不需要知道相关的协议。远程管理接口规范在JSR160“JMX Remoting 1.2”中进行讨论。<br>
&nbsp;&nbsp;&nbsp; 适配器和连接器使所有的MBean server操作对于远程管理程序可用。对于一个被管理的代理，它必须包含至少一个协议适配器或者连接器。代理也可以拥有多个适配器和连接器，使它可以被不同的管理者，通过不同的协议进行管理。<br>
<br>
<span style="font-weight: bold;">代理服务（Agent Services）</span><br>
&nbsp;&nbsp;&nbsp; 代理服务是可以在注册在MBean
server中的MBean上执行管理操作的对象。通过在代理上包含智能管理，JMX可以帮助你构建更加强大的管理解决方案。代理服务通常是允许它们和它
们的功能通过MBean server进行控制的MBeans。JMX规范定义了一下几种代理服务：<br>
&nbsp;&nbsp;&nbsp; 1.通过管理服务小程序从任意网络位置取回和实例化新的类和本地库动态载入类，实现动态的载入类；<br>
&nbsp;&nbsp;&nbsp; 2.观察MBean数字或字符串型的属性，并能通知其他对象某些类型改变了的监视器；<br>
&nbsp;&nbsp;&nbsp; 3.提供一个一次报警通知或者是重复的，周期的通知的定时机制的定时器；<br>
&nbsp;&nbsp;&nbsp; 4.定义MBeans之间关联和执行基于预定义关系类型关系的关系服务。<br>
&nbsp;&nbsp;&nbsp; 所有的代理服务托管在一个遵从JMX的实现中。<br>
<br>
<font style="font-weight: bold;" size="4">综述<br>
<br>
</font>&nbsp;&nbsp;&nbsp; 本部分指明了关于实现遵从JMX工具和代理规范（Version 1.2）的工具层和代理层的托管组件。<br>
<br>
<span style="font-weight: bold;">工具层（Instrumentation Level）</span><br>
&nbsp;&nbsp;&nbsp; 遵从JMX工具规范（Version 1.2）的实现必须提供在第2章“MBean
工具”、“第3章”开放MBeans“和第4章”模型MBean“中说明的所有组件。它包括通过Javadoc工具生成的相应的API文档中定义的相关
类。这些组件为标准和动态的MBean提供了支持。<br>
<br>
<span style="font-weight: bold;">代理层（Agent Level）</span><br>
&nbsp;&nbsp;&nbsp; 遵从JMX代理规范（Version
1.2）的实现必须提供在第二部分”JMX代理“中指定的所有组件。它包括MBean
server的实现，代理服务和通过Javadoc工具生成的相应的API文档中定义的相关类。因此所有指定的四种服务的实现是必须的。<br>
<br>
<br>
<br>
<img src ="http://www.blogjava.net/Tower/aggbug/952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Tower/" target="_blank">非飞</a> 2005-02-03 14:13 <a href="http://www.blogjava.net/Tower/articles/952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JMX (The Java Management extensions) 架构概述</title><link>http://www.blogjava.net/Tower/articles/898.html</link><dc:creator>非飞</dc:creator><author>非飞</author><pubDate>Tue, 01 Feb 2005 13:42:00 GMT</pubDate><guid>http://www.blogjava.net/Tower/articles/898.html</guid><wfw:comment>http://www.blogjava.net/Tower/comments/898.html</wfw:comment><comments>http://www.blogjava.net/Tower/articles/898.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Tower/comments/commentRss/898.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Tower/services/trackbacks/898.html</trackback:ping><description><![CDATA[<div style="text-align: center;">
<div style="text-align: left;"><font size="4"><span style="font-weight: bold;"></span></font>翻译：JMX规范Version 1.2<br>
<font size="4"><span style="font-weight: bold;"></span></font></div>
<font size="4"><span style="font-weight: bold;">JMX (The Java Management extensions) 架构概述<br>
</span></font><br>
<div style="text-align: left;">&nbsp;&nbsp;&nbsp; 本节主要介绍JMX规范中的各个部分，以及它与整个管理架构的关系：<br>
</div>
</div>
&nbsp;&nbsp;&nbsp; 1.工具层（Instrumentation Level）<br>&nbsp;&nbsp;&nbsp; 2.代理层（Agent Level）<br>&nbsp;&nbsp;&nbsp; 3.分布式服务层（Distributed Services Level）<br>&nbsp;&nbsp;&nbsp; 4.其他管理协议层（Additional Management Protocol Level）<br>&nbsp;&nbsp;&nbsp; 图一显示了在JMX的三层架构模型中，各主要组建之间的相互关系。这些组件将在接下来的”组件概述“几个小节进行讨论和介绍。<br>
<br>
<br>
<br>
<div style="text-align: center;">
（图一）<br>
</div>
<span style="font-weight: bold;">
工具层（Instrumentation Level）</span><br>&nbsp;&nbsp;&nbsp;
工具层为实现JMX可管理资源提供了一个规范。JMX可管理资源可以是应用、服务的实现、设备、用户等等。它可以是用Java开发或用Java封装，以至于能够被JMX-compliant程序管理。<br>&nbsp;&nbsp;&nbsp; 一个给定资源的工具是由一个或者多个标准的或动态的管理Bean或称作MBeans来提供。标准的MBeans是与源于JavaBeans(TM)组件模
型的某一设计模式相一致的Java对象。动态MBeans则遵照一个特定的接口，在运行期间提供更多的灵活性。详细信息请参看”Managed
Beans（MBeans）“。<br>&nbsp;&nbsp;&nbsp; 资源的工具通过代理层（Agent Level）使其可以被管理。MBeans不需要JMX代理知道他们的操作。<br>&nbsp;&nbsp;&nbsp; MBeans通常设计为灵活的、简单的并且容易实现。应用、服务、或者设备的开发者，通过一个标准的方法可以使他们的产品变成可管理，而不需要理解复杂的
管理系统。现存的对象可以轻松的提供自己的标准MBeans或者包裹成动态的MBeans，这样可以付出很少的代价使现存的资源变成可管理的。<br>&nbsp;&nbsp;&nbsp; 另外，工具层（Instrumentation Level）也制定了一个通知机制。这样就允许MBeans可以产生和传递通知事件到其他各层的组件中去。<br>&nbsp;&nbsp;&nbsp; 由于工具层（Instrumentation Level）是由设计模式和Java接口组成，所以参考实现只提供一个不同MBeans和它们的通知机制的例子。<br>&nbsp;&nbsp;&nbsp; 工具层（Instrumentation Level）的兼容性测试会检测MBeans是否与设计模式相一致，是否正确的实现了接口。<br>&nbsp;&nbsp;&nbsp; JMX的可管理资源能被遵从JMX规范的代理自动进行管理。同样，它们也可以被不遵从JMX规范，但支持MBeans设计模式和接口的系统管理。<br>
<br><span style="font-weight: bold;">
代理层（Agent Level）</span><br>&nbsp;&nbsp;&nbsp; 代理层（Agent Level）提供了一个实现代理的规范。管理代理之间控制被管理的资源，并使它们对于远程的管理程序可用。虽然并没有要求，但是代理通常与它所管理的资源放置在同一台机器上。<br>&nbsp;&nbsp;&nbsp; 代理层（Agent Level）构建在工具层（Instrumentation Level）之上，并且使用工具层（Instrumentation
Level），通过定义一个标准化的代理来管理JMX的可管理资源。JMX代理由一个MBean
Server和一系列的处理MBeans的服务组成。另外，JMX的代理需要至少一个通信适配器或连接器，在本部分内容不对其做详细的说明。MBean
Server的实现和代理服务都托管在一个JMX规范的实现上。<br>&nbsp;&nbsp;&nbsp; JMX代理可以嵌入在一台安装有JVM（Java Virtual
Machine），并安放了JMX可管理资源的机器里。同样，当被管理的资源只提供一个私有（non-Java）的环境时，JMX代理可以作为一个中介或
者集线器存在。JMX代理并不需要知道它为什么资源提供服务。任何JMX可管理资源可以使用任何一个提供它所需服务的JMX代理。<br>
&nbsp;&nbsp;&nbsp; 管理层通过一个协议适配器或连接器（在接下来的部分介绍），访问代理的MBeans，使用其提供的服务。对于JMX代理并不需要知道远程的管理程序是如何使用它们。<br>&nbsp;&nbsp;&nbsp; 管理系统中实现JMX代理的开发者能用标准的方法开发自己的产品，而不需要去理解JMX可管理资源的语义，以及管理程序的功能。<br>&nbsp;&nbsp;&nbsp; JMX代理的参考实现是一系列的，提供一个MBean Server和所有代理服务的Java类。<br>&nbsp;&nbsp;&nbsp; 代理的兼容性测试会检测被测试的代理是否遵从代理规范中提供的接口和功能。成功通过CTS测试的代理即可成为合格的JMX代理。<br>&nbsp;&nbsp;&nbsp; JMX代理运行在J2SE(tm) Version 1.3及以上版本，and on certain profiles of the J2ME(tm)。<br>&nbsp;&nbsp;&nbsp; JMX代理自动适应JMX分布式服务，也可以被支持JMX代理但不遵从JMX的系统使用。<br>
<br><span style="font-weight: bold;">
分布式服务层（Distributed Services Level）</span><br>&nbsp;&nbsp;&nbsp; 分布式服务层（Distributed Services Level）的详细定义超出了本规范的范围。为介绍JMX架构的概述，在此仅对其进行简单介绍。<br>&nbsp;&nbsp;&nbsp; 分布式服务层（Distributed Services Level）提供实现JMX管理的接口。本层定义可以在代理或者分层的代理操作的接口和组件。这些组件可以：<br>&nbsp;&nbsp;&nbsp; 1.提供管理程序的接口，通过一个连接器，透明的与代理和它的JMX可管理资源交互；<br>&nbsp;&nbsp;&nbsp; 2.通过将它们的语义映射到data-rich协议（例如超文本标志语言（HTML）或者简单网络管理协议（SNMP）），来暴露JMX代理的管理视图和它的MBeans；<br>&nbsp;&nbsp;&nbsp; 3.从高层的管理平台发布管理信息到JMX代理；<br>&nbsp;&nbsp;&nbsp; 4.提供安全。<br>&nbsp;&nbsp;&nbsp; 管理组件通过网络相互协作，提供分布的，可调节的管理功能。基于Java的自定义管理功能可以在这些组件之上进行开发，来部署一个管理程序。<br>&nbsp;&nbsp;&nbsp; 管理层和代理、工具层的联合，为设计和开发完整的管理解决方案提供了一个完整的架构。JMX技术为可移植，按需部署的管理功能，动态的或流动的服务，以及安全这类解决方案提供了唯一的工具。<img src ="http://www.blogjava.net/Tower/aggbug/898.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Tower/" target="_blank">非飞</a> 2005-02-01 21:42 <a href="http://www.blogjava.net/Tower/articles/898.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>