精心设计的JMX MBean的特征是什么?

时间:2009-03-31 13:37:40

标签: java performance jmx

设计JMX MBean有哪些最佳实践?您觉得哪些例子特别有用?

4 个答案:

答案 0 :(得分:6)

返回绝对值而不是率。例如返回db提交的总数,而不是导出一个速率。

通过这样做,您的客户可以在他们需要的任何时间段内自行监控和获取费率。也许更重要的是,如果它们不经常连接,这可以保护客户免受费率上涨的冲击。

如果您主要通过HTML界面使用JMX bean,那么我会遵循几种做法。下面通常意味着您的JMX bean应该包装一个现有的bean(而不仅仅是JMX暴露现有的方法):

  1. 输出表示返回对象的格式正确的字符串。获得默认的toString()输出可以是无用的
  2. 捕获并显示异常。否则,您可能会得到一个空白页面,并且必须转到日志文件以确定出现了什么问题
  3. 如果你正在显示不同的字符集,你可能必须适当地转义输出以防止显示问题(我遇到了显示我们中文数据的JMX控件)
  4. 对暴露方法的输入应该正确清理(例如,如果您输入id作为操作的一部分,您可能希望trim()删除空格等。)
  5. 以上内容将重点从简单通过JMX公开的bean转移到接近可用管理控制台的位置。

答案 1 :(得分:4)

第一件让我使用我的第一个JMX bean的是返回类型 - 如果你的方法返回字符串会更容易 - 这样你的客户端就可以轻松地显示响应(我主要使用JConsole) - 如果你不喜欢做到这一点,你得到com.mycompany.Response@xxxx这样的回复,这并不意味着:)

答案 2 :(得分:3)

确保属性没有副作用,并且在操作中是可预测的。

没有什么比执行耗时(或资源消耗)操作的无辜外观属性更糟糕的了。我在我的时间里见过一些蠢货..

答案 3 :(得分:1)

不要使用JMX进行日志记录,例如,不要使用MBean函数返回自启动以来所有连接的详细信息。

应该记住,JMX用于监控。含义 - 仅显示与当前时刻相关的数据。