10

设计 JMX MBean 的一些最佳实践是什么?有什么你觉得特别有用的例子吗?

4

4 回答 4

6

返回绝对计数而不是速率。例如,返回数据库提交的总数,而不是得出一个比率。

通过这样做,您的客户可以在他们需要的任何时间段内自行监控和得出费率。也许更重要的是,这可以保护客户在不经常连接的情况下不会错过费率激增。

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

  1. 输出格式正确的字符串,表示返回的对象。获得默认toString()输出可能几乎没用
  2. 捕获并显示异常。否则,您可能会得到一个空白页面,并且必须转到日志文件以确定出了什么问题
  3. 如果您正在显示不同的字符集,您可能必须适当地转义输出以防止显示问题(我在显示我们的中文数据的 JMX 控件中遇到了这个问题)
  4. 对公开方法的输入应该进行适当的清理(例如,如果您输入一个 id 作为操作的一部分,您可能希望trim()它删除空格等)

以上将重点从简单地通过 JMX 公开的 bean 转变为接近可用管理控制台的东西。

于 2009-03-31T14:11:52.460 回答
4

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

于 2009-03-31T13:51:13.493 回答
3

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

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

于 2009-03-31T21:57:00.313 回答
1

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

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

于 2009-11-30T12:24:58.607 回答