通过mbean操作抛出异常

时间:2012-09-10 20:43:19

标签: java exception jmx

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

1 个答案:

答案 0 :(得分:5)

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

  

表示由MBean方法引发的“用户定义”异常   剂。它“包装”了抛出的实际“用户定义”异常。

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

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