当我运行Java应用程序(带有main方法的简单应用程序)时,VisualVM会将其列为正在运行的应用程序。但是,在NetBeans上运行我的Java Web应用程序后,VisualVM 1.3.7仅在本地下显示了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"
最佳答案
好的,因此VisualVM只是要查看正在运行的JVM。当您在Glassfish中运行Web应用程序时,将有一个包含Glassfish的JVM(在其中托管了Web应用程序)。 VisualVM仅能够查看JVM层上正在运行的内容。与使用命令行方法直接运行Java类的情况相比,JVM托管玻璃鱼的情况不会有所不同。
除非那里没有用于Glassfish的VisualVM插件知道如何查询相关的JMX Bean以提取其中定义的Container详细信息,否则库存标准的VisualVM只会像对待其他JVM一样查看该容器。
如果要查看在Glassfish容器中部署了哪些Web应用程序(或其他任何东西),可以使用它的Web控制台,或者如果要以编程方式检查它,则可以使用其JMX界面。
关于java - VisualVM 1.3.7无法从GlassFish获取Java Web应用程序列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22238712/