Glassfish Jolokia Java客户端

Glassfish Jolokia Java客户端,glassfish,jvm,jconsole,jolokia,Glassfish,Jvm,Jconsole,Jolokia,我是JMX的新手。我开发了一个Web服务,使用Glassfish作为服务器。现在我想监控我的应用程序 我的第一个想法是远程使用Jconsole和JVM作为监控工具。继续研究后,我发现以下文章: 这就意味着我必须使用一座像Jolokia这样的桥,我显然不理解其原因。JConsole+mbeans还不够吗 我继续我的研究,并用他们的例子创建了一个java项目: public static void main(String[] args) throws MalformedObjectNameE

我是JMX的新手。我开发了一个Web服务,使用Glassfish作为服务器。现在我想监控我的应用程序

我的第一个想法是远程使用Jconsole和JVM作为监控工具。继续研究后,我发现以下文章:

这就意味着我必须使用一座像Jolokia这样的桥,我显然不理解其原因。JConsole+mbeans还不够吗

我继续我的研究,并用他们的例子创建了一个java项目:

  public static void main(String[] args) throws MalformedObjectNameException, J4pException {
        J4pClient j4pClient = new J4pClient("http://localhost:8080/jolokia/");
        J4pReadRequest req = new J4pReadRequest("java.lang:type=Memory",
                "HeapMemoryUsage");
        J4pReadResponse resp = j4pClient.execute(req);
        Map<String, String> vals = resp.getValue();
        System.out.println("Memory usage: used: " + vals);

    }
publicstaticvoidmain(字符串[]args)抛出格式错误的ObjectNameException、J4pException{
J4pClient J4pClient=新J4pClient(“http://localhost:8080/jolokia/");
J4pReadRequest req=新的J4pReadRequest(“java.lang:type=Memory”,
“HeapMemoryUsage”);
J4pReadResponse resp=j4pClient.execute(req);
Map vals=resp.getValue();
System.out.println(“内存使用:已使用:“+VAL”);
}
它起作用了,我收到了一些与我的使用记忆有关的信息。但是,我不知道那是什么姿势


监视Web服务的最佳方法是什么?

我建议使用JVisualVM。它真的很容易使用,并提供了大量信息。只需启动应用程序,然后启动JVisualVM,它就会检测到正在运行的java应用程序。您可以点击它以图形形式获取各种信息。使用它来监视内存、线程、垃圾收集和创建堆转储

您提到的Jolokia工具提供了一种以较低的影响监控应用程序的方法, 但是看起来你需要做更多的编码。JVisualVM提供了大量现成的信息


您可能需要考虑JVisalVM的性能影响,但首先我不会担心它,除非您的网站命中率很高。您还可以选择要监控的内容,以降低影响

我会先问我想监控什么?而不是继续我该怎么做