java - 通过mbean操作抛出异常

标签 java exception jmx

MBean 操作的正确异常处理策略是什么?其中一些操作可能会失败(例如删除未连接的用户)并且应该报告异常,但我不知道我的异常如何渗透到 JMX 层。我最好的想法是 C 风格的返回码。

最佳答案

这就是 javax.management.MBeanException 的意图,它被声明为从 MBeanServerConnection.invoke 抛出。引用 JavaDoc 中的内容:

Represents "user defined" exceptions thrown by MBean methods in the agent. It "wraps" the actual "user defined" exception thrown.

因此,与其返回神秘的整数代码(或者 BigDecimal,如果越大越好;)),只需捕获“业务异常”,使用业务异常创建一个新的 MBeanException 并将其抛出。如果您的业务异常是可序列化的并且存在于调用者的类路径中,则调用者应该能够解开 JMX 异常并获取业务异常。

如果这些假设中的任何一个不成立,只需根据业务异常类名称和消息创建一条消息,并从新的异常(以便您获得堆栈跟踪)和新的错误消息创建 MBeanException。

关于java - 通过mbean操作抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12359151/

相关文章:

eclipse - 从 eclipse 自动启动 jconsole

java - java中循环迭代时如何计算特定字符串是否匹配?

java - 将 POJO 作为值的 HashMap 转换为 JSON 字符串

java - JScrollPane 内的 JList setMimimumSize()

c++ - switch() 中未处理的枚举类值 - 异常还是断言?

java - 我可以阻止java抛出某些异常吗?

macos - 使用适用于 Mac 的 Docker 连接 JMX

java - ImageIcon 无法更改默认的 JOptionPane 图标

java - 使用缓存的问题

java - JMX.newMBeanProxy() 的意外行为