1

我正在尝试在JRuby 和Warbler的帮助下将JavaMelody监控添加到我们部署到运行在 Windows 2008 R2 上的 Tomcat 的 Rails 4.0 应用程序中。如JavaMelody 用户指南中所述,我添加了和并扩展了我们的外观,基本上如下所示:javamelody.jarjrobin-1.5.9.jarWEB-INF/lib/web.xml

<!DOCTYPE web-app PUBLIC
  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>

<!-- JavaMelody -->

<filter>
  <filter-name>monitoring</filter-name>
  <filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
  <init-param>
    <param-name>log</param-name>
    <param-value>true</param-value>
   </init-param>
</filter>

<filter-mapping>
  <filter-name>monitoring</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

<listener>
  <listener-class>net.bull.javamelody.SessionListener</listener-class>
</listener>

<!-- JRuby-Rack-->

<filter>
  <filter-name>RackFilter</filter-name>
  <filter-class>org.jruby.rack.RackFilter</filter-class>
</filter>

<filter-mapping>
  <filter-name>RackFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

<listener>
  <listener-class>org.jruby.rack.rails.RailsServletContextListener</listener-class>
</listener>

</web-app>

这似乎在某种程度上起作用 - 似乎记录了监控信息,因为我可以看到<TOMCAT_HOME>\temp\javamelody创建了一个文件夹,并且其中的文件似乎更新了我向应用程序发出的每个请求。

但很遗憾,不起作用的其实是打开了监控报告。当我转到 时http://localhost:8080/ourapp/monitoring,我没有得到用户指南中描述的报告页面,而是我们的 Rails 应用程序的 404 页面。Tomcat 日志确认 JavaMelodymonitoring过滤器和SessionListener已加载并且似乎没有显示任何错误。我错过了什么?

4

1 回答 1

0

由于您将 JRuby-Rack 映射为处理所有内容 (/*),因此您要么需要重新安排映射,以确保特定路径优先由其他过滤器处理,例如

<filter-mapping>
  <filter-name>monitoring</filter-name>
  <url-pattern>/monitoring</url-pattern>
</filter-mapping>

或者,如果可以映射需要处理的路径,则不将所有内容路由到 JRuby-Rack(您可能还需要更改监视过滤器路径,或者如果您不介意“替换”容器默认服务器,请尝试使用 RackServlet)

于 2015-03-15T13:04:47.057 回答