带有 Struts 2 的 Javamelody。没有为监视映射的操作

Javamelody with Struts 2 . No action mapped for monitoring

我在 Wildfly 10 上有一个 Struts 2 , Java 8 网络应用程序 运行 并且想集成 Javamelody 但我无法访问监控页面无论我在 web.xml 和 struts.xml

中的配置如何

我使用下面的maven依赖

<dependency>
    <groupId>net.bull.javamelody</groupId>
    <artifactId>javamelody-core</artifactId>
    <version>1.77.0</version>
</dependency>

在我的web.xml(网络应用程序版本=“3.0”)中,我有以下配置:

<filter>
    <filter-name>monitoring</filter-name>
    <filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
    <async-supported>true</async-supported>
</filter>
<filter-mapping>
    <filter-name>monitoring</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ASYNC</dispatcher>
</filter-mapping>
<listener>
    <listener-class>net.bull.javamelody.SessionListener</listener-class>
</listener>

我的struts配置如下

<interceptor-stack name="myStack">
    <interceptor-ref name="monitoring"/>
    <interceptor-ref name="defaultStack"/>
</interceptor-stack>

并将 myStack 设置为默认值

<default-interceptor-ref name="myStack" />

当我尝试访问 http://localhost:8080/myapp/monitoring 时出现以下错误: [org.apache.struts2.dispatcher.Dispatcher](默认任务 3)找不到操作或结果:没有为命名空间 / 和操作名称监视映射的操作。 - [未知位置]

我在网络上找不到很多关于此问题或 Struts 配置的资源。有什么想法吗?

注意:我更近了一步,但我不明白为什么会这样。 我必须删除所有具有 url-pattern /* 的过滤器才能工作。 有解决方法吗?当然,使用此配置我无法再访问我的任何页面。

javamelody user's guide says to write the javamelody MonitoringFilter in WEB-INF/web.xml before your servlet. But in the case of Struts 2, there is no more servlet and Struts 2 is controlled by a filter.

所以你必须在 WEB-INF/web.xml 中编写 javamelody MonitoringFilter 在你的 Struts 2 过滤器之前。