You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaMelody:@net.bull.javamelody.Monitored注解无法展示类/方法统计

JavaMelody CDI Bean监控无统计数据的排查方案

以下是你需要检查的前置条件和排查要点,确保CDI Bean的方法统计能正常收集:

  • 确认CDI Bean的注入方式正确:必须通过@Inject让CDI容器管理Bean实例,绝对不能用new手动创建。JavaMelody依赖CDI生成的代理对象来拦截方法调用,手动实例化的对象不会被监控。
  • 验证CDI扩展加载状态:
    • 确保项目中JavaMelody的CDI扩展类net.bull.javamelody.CdiMonitoringExtension能被容器加载。检查META-INF/services/javax.enterprise.inject.spi.Extension文件是否存在,且包含该类的全限定名。
    • 查看应用服务器启动日志,确认有该扩展初始化的日志记录,比如net.bull.javamelody.CdiMonitoringExtension initialized。
  • 检查方法的访问修饰符:被@Monitored注解的方法必须是public。CDI代理无法拦截private、protected或包级私有方法,自然不会产生统计数据。
  • 确认SessionScoped注解正确:使用CDI原生的javax.enterprise.context.SessionScoped,不要混用其他框架(如JSF)的同名注解。如果注解错误,Bean不会被CDI容器正确管理,监控代理也无法生效。
  • 检查beans.xml配置:
    • 如果项目中有beans.xml,确保bean-discovery-mode不是none,否则CDI容器不会发现你的Bean。建议设置为annotated或all。
    • 若beans.xml中显式配置了拦截器列表,必须添加JavaMelody的拦截器:
      <interceptors>
          <class>net.bull.javamelody.MonitoringInterceptor</class>
      </interceptors>
      
  • 确认方法被实际调用:测试时务必调用被注解的方法,且调用的是CDI注入的Bean实例。可以在方法中添加日志,确认方法确实被执行过,再去/monitoring端点查看统计。
  • 排查排除规则:检查javamelody.properties配置文件,确认没有通过excluded-methods或excluded-classes将你的Bean或方法排除在监控之外。临时注释这些配置项测试是否恢复正常。

内容的提问来源于stack exchange,提问作者mabasha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 06:35:17