我正在尝试添加 JavaMelody在 JRuby 和 Warbler 的帮助下,监控我们部署到在 Windows 2008 R2 上运行的 Tomcat 的 Rails 4.0 应用程序.如 JavaMelody user guide 中所述,我同时添加了 javamelody.jar
和 jrobin-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
已经加载并且似乎没有显示任何错误。我错过了什么?
最佳答案
由于您将 JRuby-Rack 映射为处理所有内容 (/*),您需要重新安排映射以确保特定路径优先于其他过滤器处理,例如
<filter-mapping>
<filter-name>monitoring</filter-name>
<url-pattern>/monitoring</url-pattern>
</filter-mapping>
或者如果可以映射需要处理的路径,则不将所有内容路由到 JRuby-Rack(您可能还需要更改监视过滤器路径,或者如果您不介意“替换”容器,则尝试使用 RackServlet默认服务器)
关于ruby-on-rails - JavaMelody 与 JRuby on Rails + Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28898138/