1.引入jar包JavaMelody
<!-- Java应用程序监控JavaMelody begin -->
<!-- 启动后直接http://localhost:2121/monitoring查看参数 -->
<dependency>
<groupId>net.bull.javamelody</groupId>
<artifactId>javamelody-core</artifactId>
<version>1.70.0</version>
</dependency>
<!-- Java应用程序监控JavaMelody end-->
2.不需做任何配置,启动项目后
访问:http://<host>/<context>/monitoring
如http://localhost:2121/demo/monitoring即可访问
javamelody启动原理
按照正常使用步骤,除了导入javamelody的jar包,还需要在web.xml配置文件里,配置过滤器filter和filter-mapping,还有一个listener监听器。
为什么现在只需导入jar包,不需要任何配置,启动容器监控程序也跟着启动?这个要从Servlet3.0的规范说起。
Servlet3.0
Servlet3.0对于模块化支持
也就是说现在我们可以把各Web组件单独拿出来进行开发,之后把它们打成对应的jar包放到主项目中就可以了,而不必像之前那样——所有的内容都必须在web.xml文件中进行定义。有了对模块化的支持后我们在实际应用中就可以把某些通用功能的Filter、Listener、Servlet作为一个单独的Web模块进行定义,在需要使用它们的项目中就把对应Web模块对应的jar包加进去就可以了。是不是很有用呢?接下来我们就来看一下这些Web组件究竟是怎样模块化的。
Web模块打成的jar包的内容的文件结构要求是这个样子的:
|--META-INF
| |--web-fragment.xml
| |--resources
| | |--jsp、图片等,相当于web的根目录
|--class文件和类路径下的文件
容器启动时,会去读取每个jar包的META-INF下的信息
查看javamelody-core的jar包会发现,在META-INF文件夹下有个web-fragment.xml,说明这个jar包本身就是一个Web模块
打开这个文件,会发现,其实运行监控的过滤器和监听器,已经在这个文件里定义了。这也是为什么不需要再做配置的原因
Servlet 3.0需要Tomcat 7.0以上版本才支持(包含7.0)