我感兴趣的是使用JMX监视/配置一个简单的Java客户机/服务器应用程序。例如,我们将捕获Java程序中发生的任何网络异常。
MBeans可以以这种方式扩展吗?或者,它们仅限于更具体的get & set函数?
到目前为止,我已经在通知和监视MBeans看过了
谢谢
发布于 2016-03-19 23:11:25
嗯,我想说这绝对是可行的。我之前在Apache应用程序中使用了JMX,并使用了自定义MBeans。总之,MBeans只是服务器应用程序中某些逻辑的包装器。因此,您可以直接从应用程序中获取数据。
如果您想要举一个例子,在一个工作的应用程序中是如何做到的,那么您可能需要签出以下内容:
这个类基本上保存了对应用程序的引用,并直接请求服务器应用程序中的数据。
当服务器启动时,它通过初始化类https://github.com/apache/wicket/blob/master/wicket-jmx/src/main/java/org/apache/wicket/jmx/Initializer.java注册所有的https://github.com/apache/wicket/blob/master/wicket-jmx/src/main/java/org/apache/wicket/jmx/Initializer.java。
然后,每次您查看您的MBean服务器,您将看到最新的最新信息,直接从应用程序。
不过,也有一些警告。一个警告是,Java通常没有提供任何好的抽象来捕获来自应用程序的任何源的给定类型的所有异常。您可以注册所有捕获异常处理程序,但据我所知,它并不完美。
当我不得不这样做时,我所做的是使用AspectJ注册一个所有捕获位置来处理异常。我使用编译时编织来减少性能影响,但我不确定它对整体性能的影响有多大(如果有影响的话)。
¯\_(ツ)_/
另一个警告是,JMX连接通常很难在企业环境中建立。如果您必须通过两个跳登录才能到达生产服务器,因为到处都是防火墙,您的监控连接肯定会失败,您需要继续为您的sysadmin购买啤酒,并使您的经理相信这不会带来任何安全风险。:)
不过有一件事。你说
监视/配置简单的Java客户机/服务器应用程序
您也想配置/监视客户端吗?我从没做过。我甚至不确定这是可能的。
https://stackoverflow.com/questions/36043178
复制相似问题