【问题标题】:Javamelody with Struts 2 . No action mapped for monitoringJavamelody 与 Struts 2 。没有为监控映射操作
【发布时间】:2019-10-16 20:50:28
【问题描述】:

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

【问题讨论】:

  • 请填写完整的web.xml。过滤器排序很重要。
  • Struts2 将请求中的所有内容都视为一个动作,为什么您没有为此进行配置?见stackoverflow.com/a/21097463/573032

标签: java struts2 java-melody


【解决方案1】:

javamelody user's guide 表示在 servlet 之前的 WEB-INF/web.xml 中编写 javamelody MonitoringFilter。但对于 Struts 2,there is no more servlet and Struts 2 is controlled by a filter

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

【讨论】:

  • 我错过了这句话。确实可以解决问题。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多