0

我有一个在 Wildfly 10 上运行的 Struts 2、Java 8 Web 应用程序并想集成 Javamelody 但无论我在 web.xml 和 struts.xml 中的配置如何,我都无法访问监控页面

我使用以下 Maven 依赖项

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

在我的 web.xml (web-app version="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 /* 的过滤器才能正常工作。有解决方法吗?当然,有了这个配置,我就不能再访问我的任何页面了。

4

1 回答 1

1

javamelody用户指南说在 servlet 之前在 WEB-INF/web.xml 中编写 javamelody MonitoringFilter。但是在 Struts 2 的情况下,没有更多的 servlet 并且 Struts 2 由一个过滤器控制

因此,您必须在 Struts 2 过滤器之前在 WEB-INF/web.xml 中编写 javamelody MonitoringFilter。

于 2019-05-31T21:29:44.473 回答