- Introduction
- Quick Start
- Design
- Tutorial
- Spring MVC
- JSP/JSTL/Servlet
- JQuery and plugins
- Ajax
- Twitter Bootstrap CSS
- SiteMesh
- YUICompressor
- Spring Restful Service
- JAX-WS/CXF
- Spring Data JPA
- JPA/Hibernate
- MyBatis
- Database
- H2 Database
- Datasource
- Transaction
- Redis
- Cache Overview
- Guava Cache
- Ehcache
- Memcached
- Shiro Security
- Crypto
- Schedule/Quartz
- Jmx
- System Protection
- Hystrix
- Rate Limiter
- Monitoring and Metrics
- Metrics-library
- Graphite
- Logging/Slf4j/Logback
- Logstash
- Spring
- Validation Overview
- JQuery Validation
- Hibernate Validator
- General Utilizes
- JSON/JAXB
- Date
- Test Overview
- Unit Test/Mockito/AssertJ
- Selenium2
- BDD
- Performace-test
- JMeter
- Profiler
- Simulator Overview
- Nodejs
- Eclipse
- Maven
- Sonar
- git
- Travis CI
- Jetty
- Micro-Service Architecture/Executable War
- AssertJ
- CreateNewProject
- Dozer
- Graphite-Windows
- Hello-Everybody
- Jaxb
- Json
- Mock
Jmx
Overview
JMX曾经是一个很吃香的监控/管理协议,那些非Java的应用都要羡慕JavaEE有这样的标准协议。
但随着时间推移,JMX也显示出一定的局限性,首先它的协议只有Java一族的应用自己能懂,不符合现在平台大混合的潮流。 另外它的使用也依赖于有XWindows的机器启动的JConsole, 或者某些应用服务器提供的,功能有限的Web界面。 这时,像MongoDB提供的JSON格式的Restful监控管理接口,给人感觉更加好用。
幸好,这时候出来一个Jolokia,可以把JMX的MBean Restful JSON 化。
Jolokia
使用超简单,只要将一个Servlet加入web.xml中,然后就可以用一些restful的url来获取属性,设置属性和调用MBean函数了。
见SpringSide showcase 示例,在jmx.jsp里,演示了数种典型的用法:
- 获取showcase下所有MBean的所有属性: /jolokia/read/showcase:name=*
- 获取ApplicationStatistics MBean下的所有属性: /jolokia/read/showcase:name=ApplicationStatistics
- 只获取MBean下的ListUserTimes属性: /jolokia/read/showcase:name=ApplicationStatistics/ListUserTimes
- 设置设置Root Logger Level属性: /jolokia/write/log4j:name=Log4j/RootLoggerLevel/INFO
- 执行获取特定Logger的Level的命令:/jolokia/exec/log4j:name=Log4j/getLoggerLevel/org.springside.showcase
- 列出showcase域下的所有MBean及其描述: /jolokia/list/showcase
返回值看起来是这个样子的, 前面部分是关于请求的复述,value部分是返回值:
{"timestamp":1335280389,"status":200,
"request":{"mbean":"showcase:name=ApplicationStatistics","type":"read"},
"value":{"UpdateUserTimes":0,"ListUserTimes":0}}
最后,提醒一下注意安全,最好用Shiro的URL Filter之类的机制将/jolokia/* 保护起来.
Spring JMX
为了将一个POJO变为MBean,一个做法是定义一个XXXXMBean为名的接口,然后实现它。
而Spring提供了一种更简单的方法,只需要使用@ManagedResourc这样的Annotation注释即可,既可以将POJO变为MBean,还可以为属性,方法及其参数都加上描述,为JConsole进行操作时提供更好的帮助信息。
SpringSide core中的Log4jManager 和 showcase中的ApplicationStatistics都是例子。 注意如果属性是可读可写的,就在getter和setter上都注释@ManagedAttribute,只读的话就只在getter上注释。
让Spring JMX工作很简单,參考springside showcase 中的 applicationContext-jmx.xml,加入
<context:mbean-export default-domain="showcase" registration="replaceExisting" />
支持JMX远程连接
如果是用Jolokia将JMX Restful JSON的话,远程连接就不是必须的。如果仍然要远程连接,可以在启动JVM时加上系统参数
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=3099
JConsole
如果JConsole与应用在同一台机器,直接选择该进程
远程进程URL可以简单的写host:port 如 localhost:2099 ,练打字的话写完整版的service:jmx:rmi:///jndi/rmi://localhost:2099/jmxrmi
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论