glassfish应用服务器提供了一个很好的监控REST接口(interface)。 要使用它,您可以在管理控制台中启用多个可监视项目,例如 EJB 容器。文档说,您可以检索每个已部署应用程序的 EJB 统计信息。
如果您请求类似 localhost:4848/monitoring/domain1/server/applications/APPNAME/EJBNAME 的 URL,您将获得应用程序的给定 EJB 的统计信息。
此外,还可以更深入地研究 ejb 的每个 bean 方法,例如执行时间,文档对此有说明:
“最后一次成功/不成功尝试运行该方法所花费的时间(以毫秒为单位)。如果在 EJB 容器上启用了监视,则会为无状态和有状态 session Bean 和实体 Bean 收集该时间。“
现在的问题是,在 EJB 容器上启用了监视(级别设置为 HIGH),但在任何已部署应用程序的任何 EJB 的任何 bean 方法中都没有采样任何内容。
bean 和/或 Glassfish 有什么特别的作用吗?
提前感谢您的帮助,
克里斯
编辑:
好吧,我注意到了有关该行为的更多信息:
在服务器日志中,您会收到每个已部署 EJB 的日志消息,如下所示:
INFO: EJB5181:Portable JNDI names for EJB DataFetcher // ...
如果我将 ejb-container 监控级别设置为“高”(这正是我想要做的),则无论我部署哪个应用程序,我都会收到每个部署的 EJB 的以下警告:
WARNING: MNTG0201:Flashlight listener registration failed for listener class : com.sun.ejb.monitoring.stats.StatelessSessionBeanStatsProvider , will retry later
我用 google 搜索了该警告,但没有任何结果真正帮助我启用 EJB 监控...
最佳答案
这似乎是 Glassfish 中的一个错误。
EJB 监控目前在 3.1.2 中不工作。
JIRA 问题已提出:http://java.net/jira/browse/GLASSFISH-19677
关于methods - glassfish 3.1.2 监控EJB容器、bean-methods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13747147/