BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

jmx4r——JMX的Ruby之路

| 作者 Werner Schuster 关注 6 他的粉丝 ,译者 宋玮 关注 0 他的粉丝 发布于 2007年7月1日. 估计阅读时间: 4 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。
运行在一个如Java这样的成熟平台上的好处之一是可用性,比如有监控这样的成熟特性。JRuby核心团队成员Ola Bini,发现这对监控JRuby应用的内存行为是有用的
只需在Java 6上运行JRuby,你就可免费获得它。本质上你可以把它连上任何Java进程。远程也可以。并且获取这类信息。你的Ruby能做这事吗?
他用来监控JVM进程的工具是JConsole,该工具从Java 5开始就自带了。现在有另一种访问JMX信息的方法了:Jeff Mesniljmx4r ,它允许从JRuby代码中访问JMX MBeans。下面是一个简单的例子:
require 'java'
require 'jmx4r'
memory = JMX::MBean.find_by_name "java.lang:type=Memory"
memory.verbose = true
memory.gc
这是用默认连接参数连接到localhost上MBean服务器,你还可以使用自定义的JMX Service URL。

Jmx4r使用RubyMetaprogramming技术从JMX客户端代码中删除了样板文件。这允许以Ruby的方式访问JMX MBean的操作和属性。

在例子中,memory.verbose是一个属性,通常必须使用verbose JMX方法调用来设置。Jmx4r在代表memory MBean的类中设置访问器(accessor)。关于该MBean的信息被获取,而且define_method被用来为每个属性创建必要的方法。

method_missing帮助支持操作,当方法调用没有找到对应的方法定义时,该方法被调用。例子中,memory.gc是一个对Memory Mebean操作的调用,用来运行垃圾回收器(Garbage Collector)——但是该方法并没有在memory对象所属类中定义。取而代之,method_missing方法被调用,确定是否有该方法名的操作,接着利用JMX API调用该操作。

像jmx4r这样的类库的最大优势是,可以与JRuby交互式shell(如jirb)一起工作。这就允许开发者或JRuby savy admin去访问一个(或多个)MBean服务器,而保留该语言的所有强大能力。这对还没有自动化的批量工作处理是有用的。另一个来自jmx4r网站的例子如下:
logging = JMX::MBean.find_by_name "java.util.logging:type=Logging"
logging.logger_names.each do |logger_name|
 logging.set_logger_level logger_name, "INFO"
end

该例查询所有logger并一举改变了它们的log级别。在一个图形化工具中,需要对每个logger点击数下才能达到同样效果。更不用说,一旦该代码被编写并证明可用,可以保存到脚本中并重复使用。另一个好处是JRuby进程通过联系其MBean服务器具有监控其自己JVM的能力。

最近新增的特性是提供认证支持。下面是使用样例:
JMX::MBean.establish_connection :host => "localhost", 
 :username => "jeff", :password => "secret"

查看英文原文:JMX the Ruby way with jmx4r

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT