【问题标题】:Accessing Tomcat Internals from Servlet (or Filter)从 Servlet(或过滤器)访问 Tomcat 内部
【发布时间】:2010-11-26 12:29:23
【问题描述】:

我想从 servlet(或过滤器)访问 Tomcat 内部数据。特别是,我想从线程池管理器中阅读有关繁忙线程的信息。所以,我的问题是是否有可能(我可以想象出于安全原因它可能会被阻止)?如果可能的话,也许有人可以给我任何建议从哪里开始(一些入口点单例等)?

我知道,我可以通过 JMX 检索此信息。但我更喜欢直接 API(因为 JMX 可能很重,不是吗?)。

【问题讨论】:

  • 我不能直接回答这个问题,但我想抛出一些东西来思考。使用 JMX 框架将使您的应用程序更加独立于平台,而直接 API 调用会将您的应用程序绑定到 Tomcat。这是否是一个问题是一个设计决策,但值得考虑。

标签: java tomcat servlets threadpool internal


【解决方案1】:

ServerFactory#getServer() 会帮忙吗?它提供对运行 servlet/过滤器的 Tomcat 服务器实例的访问。从那里,您可能能够深入挖掘以找到您需要的信息/

回答您关于 JMX “沉重”的问题:可能不是。如果您只是对数据进行定期监控,那应该没问题,尤其是当您通过平台 MBeanServer 访问同一 VM 内的 mbean 时

【讨论】:

  • 感谢您对 ServerFactory 的建议。这似乎真的是一个很好的起点。我会尝试调查这条路。关于 JMX:我想监控每个请求的线程池使用情况,以将一些自适应算法应用于处理。所以,我怀疑 JMX 引入了太大的足迹。但如果 ServerFactory 尝试失败,我也会检查这种可能性。
【解决方案2】:

您到底想完成什么? Lambda Probe 是一款出色的 Tomcat 监控工具,它可能拥有您想要的东西。

【讨论】:

  • 谢谢,但我想监控每个请求的线程池使用情况,以便将一些自适应算法应用于处理。所以,我需要在我的 servlet(或过滤器)中执行此操作。
【解决方案3】:

在测试了不同的方法后,我最终决定使用 JMX。开销似乎没有我预期的那么大。

【讨论】:

    猜你喜欢
    • 2017-08-08
    • 2011-01-25
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 2011-08-14
    相关资源
    最近更新 更多