【问题标题】:VisualVM 1.3.7 cannot get the list of Java Web Applications from GlassFishVisualVM 1.3.7 无法从 GlassFish 获取 Java Web 应用程序列表
【发布时间】:2014-03-06 23:54:55
【问题描述】:

当我运行 Java 应用程序(带有 main 方法的简单应用程序)时,VisualVM 将其列为正在运行的应用程序。但是,在 NetBeans 上运行我的 Java Web 应用程序后,VisualVM 1.3.7 仅在 Local 下显示 NetBeans IDE 7.2.1 (pid 4708)、VisualVM 和 GlassFish (pid 2136)。

在 Netbeans 配置中,我使用的是 JDK 1.7,J2EE 版本是 Java EE6,Profile 设置为 Web,它在 GlassFish Server 4 上运行。

我还根据this 的“无法从 GlassFish 获取 Web 应用程序列表”部分将 Web 容器设置为高。

根据我为解决问题的研究,我下载并安装了 VisualVM-Extensions 插件也无济于事。

我使用了以下所有方法来运行 VisualVM。

  1) I ran it by executing the VisualVM.exe file
  2) using following command in console 
      visualvm --jdkhome "C:\Program Files\Java\jdk1.7.0_13" --userdir "C:\Users\Alex\AppData"
  3) using following command in console
      visualvm --jdkhome "C:\Program Files\Java\jdk1.7.0_13" --userdir "C:\Documents and Settings\Alex\AppData\Roaming\VisualVM\1.3.7" 

【问题讨论】:

  • 我假设“在 NetBeans 上运行我的 Java Web 应用程序”意味着它正在使用 Glassfish 容器来托管您的 Web 应用程序?这就是为什么您可以看到 Glassfish 过程的原因。当您说“当我运行 Java 应用程序时”时,这是什么意思?你有一个 jar 文件,里面有像 Jetty 这样的嵌入式 Web 服务器吗?如果您直接从 Java 命令运行它,您会将其视为自己的进程。有关执行环境中任何差异的更多详细信息会有所帮助。
  • @EdH yiu 是对的,我的服务器是 GlassFish。关于 java 应用程序我的意思是一个非 web java 应用程序,它是一个带有 main 方法的简单应用程序。

标签: java netbeans-7 glassfish-4 visualvm


【解决方案1】:

好的,所以 VisualVM 只是查看正在运行的 JVM。当您在 Glassfish 中运行 Web 应用程序时,会有一个包含 Glassfish 的 JVM(在其中托管您的 Web 应用程序)。 VisualVM 只能看到在 JVM 层运行的内容。与使用命令行方法直接运行 Java 类相比,它不会对托管 glassfish 的 JVM 有任何不同的看法。

除非有适用于 Glassfish 的 VisualVM 插件知道如何查询相关的 JMX bean 以提取其中定义的容器详细信息,否则标准 VisualVM 只会将容器视为任何其他 JVM。

如果您想查看 Glassfish 容器中部署了哪些 Web 应用程序(或其他任何东西),您可以使用它的 Web 控制台,如果您想以编程方式检查它,可以使用它的 JMX 接口。

【讨论】:

    猜你喜欢
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多