JavaMelody与JRuby on Rails + Tomcat

时间:2015-03-06 11:47:31

标签: ruby-on-rails tomcat jruby jrubyonrails java-melody

我正在尝试将JavaMelody监控添加到Rails 4.0应用程序中,该应用程序在JRuby和Warbler的帮助下部署到在Windows 2008 R2上运行的Tomcat。正如JavaMelody user guide中所述,我已将javamelody.jarjrobin-1.5.9.jar添加到WEB-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日志确认已加载JavaMelody monitoring过滤器和SessionListener,但似乎没有显示任何错误。我错过了什么?

1 个答案:

答案 0 :(得分:0)

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

<filter-mapping>
  <filter-name>monitoring</filter-name>
  <url-pattern>/monitoring</url-pattern>
</filter-mapping>
如果可以映射它需要处理的路径,那么

或者不将所有内容路由到JRuby-Rack(您可能还需要更改监视过滤器路径,或者如果您不介意,请尝试使用RackServlet&#34;替换& #34;容器默认servel)