我正在尝试在Web应用程序中使用java-melody
进行监控。
build.gradle中的依赖
compile group: 'net.bull.javamelody', name: 'javamelody-core', version: '1.69.0'
使用web.xml(Works Fine)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<filter>
<filter-name>javamelody</filter-name>
<filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
<async-supported>true</async-supported>
</filter>
<filter-mapping>
<filter-name>javamelody</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ASYNC</dispatcher>
</filter-mapping>
<listener>
<listener-class>net.bull.javamelody.SessionListener</listener-class>
</listener>
</web-app>
应用程序init类
@ApplicationPath(value = "/*")
public class TestJavamelodyApp extends ResourceConfig {
public TestJavamelodyApp() {
packages("com.test.resources")
.register(CustomWebExceptionMapper.class)
.register(new TestCustomBinder())
}
}
直到这里工作正常。
但我不想使用web.xml
,因为我们可以在Servlet 3.x
中执行此操作。所以我确实喜欢下面,这似乎不起作用......
过滤器
@WebFilter(urlPatterns = "/*", asyncSupported = true, dispatcherTypes = {DispatcherType.REQUEST, DispatcherType.ASYNC})
public class JavaMelodyMonitoringFilter extends MonitoringFilter {
}
修改后的应用初始化
@ApplicationPath(value = "/*")
public class TestJavamelodyApp extends ResourceConfig {
public TestJavamelodyApp() {
packages("com.test.resources")
.register(CustomWebExceptionMapper.class)
.register(new TestCustomBinder())
.register(MonitoringFilter.class)
.register(SessionListener.class);
}
}
我在这里做错了什么? Aren都一样吗?
什么行不通
使用web.xml
,我可以访问http://localhost:8080/test-app/monitoring
处的资源,所有图表都显示正常。但是,如果没有任何web.xml
和@WebFilter
,则无法访问该资源。