我在 MAC OSX 山狮上遇到了 TomEE 1.5.1 和 VisualVM 1.7.0_09 的一个非常奇怪的问题。
TomEE 加载一些 webapp 后。使用 VisualVM 连接本地 TomEE 进程需要很长时间,连接后 gc 按钮被禁用,我无法进行堆转储。VisualVM 的日志显示一些错误。
com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
at sun.tools.attach.BsdVirtualMachine.<init>(BsdVirtualMachine.java:90)
at sun.tools.attach.BsdAttachProvider.attachVirtualMachine(BsdAttachProvider.java:63)
at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:213)
at com.sun.tools.visualvm.attach.AttachModelImpl.getVirtualMachine(AttachModelImpl.java:104)
Caused: java.io.IOException: Unable to open socket file: target process not responding or HotSpot VM not loaded
该.java_pid<pid>
文件未在 tmp 文件夹中创建。
但是如果我在启动它之后和加载任何 webapps 之前使用 VisualVM 连接 TomEE,.java_pid<pid>
文件将创建,VisualVM 将立即连接到它,并且堆转储工作。
另一种解决方法是修改 catalina.sh 以将 tools.jar 添加到 ClassPath 并删除 openejb javaagent,然后在 TomEE 完全启动后连接工作正常。
无法在 ubuntu 机器上重现。