【问题标题】:Access Java EE monitoring data inside a servlet访问 servlet 内的 Java EE 监控数据
【发布时间】:2011-11-07 14:46:57
【问题描述】:

我正在尝试访问 glassfish v3 在我打开监控服务和 mbean 服务后收集的监控数据。

我想在同一台机器上的“QuickInfo”servlet 中显示 ProcessingTime 或 RequestCount 等数据,以便在机器忙时向用户/管理员显示。

我认为数据的入口可能是InitalContext JNDI ...但我找不到示例。

感谢您的帮助。

【问题讨论】:

    标签: java servlets glassfish monitoring


    【解决方案1】:

    要排除故障并找到您感兴趣的数据的确切名称,请使用以下命令:

    asadmin get -m pattern-here
    asadmin get -m "server.web.request.*"   # for example
    

    你需要一个依赖:

       <dependency>
            <groupId>org.glassfish.flashlight</groupId>
            <artifactId>flashlight-framework</artifactId>
            <version>3.2-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
    

    对于版本,请使用您正在使用的 GlassFish 的任何版本。

    输出有点乱,但它会给你一个想法。

    import org.glassfish.flashlight.MonitoringRuntimeDataRegistry;
    import org.glassfish.flashlight.datatree.TreeNode;
    import javax.annotation.Resource;
    
    @Resource
    private MonitoringRuntimeDataRegistry datareg;
    
    private String showOneNode() {
        StringBuilder sb = new StringBuilder("<ul>\n");
        TreeNode mainNode = datareg.get("server");
        List<TreeNode> ltn = mainNode.getNodes("server.web.request.*");
    
        for(TreeNode tn : ltn) {
            String val = tn.getValue().toString();
            sb.append("<li>").append(tn.getCompletePathName() + val);
        }
    
        sb.append("</ul>");
        return sb.toString();
    }
    

    ============

    链接:

    【讨论】:

    • 感谢您的回答。我让它工作了。我必须将 flashlight-framework.jar 添加到我的 eclipse 项目中。现在我得到了很多关于 server.web.* 的信息,但是我如何指定一个特定的 bean 或 servlet?
    • 看看这个命令的输出,你就会知道怎么做:asadmin get -m "*"
    猜你喜欢
    • 2011-03-18
    • 1970-01-01
    • 2014-06-20
    • 2013-08-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多