我正在尝试让 visualvm 和 websphere 7 在我的本地 Windows 桌面上一起工作。我尝试通过 JMX 连接,但没有运气。有没有人设法让visialvm和websphere 7工作,你是怎么做到的?
问候FF
在 Praha 的 VisualVM 团队的帮助下,我得到了它的帮助(感谢 Tomas!):
1) 在管理控制台上(单击Servers -> Server types -> WebSphere application servers -> server1 -> Java and Process Management -> Process definition -> Java Virtual Machine),将以下行添加到
Generic JVM Argument字段中(请注意,第一个系统属性
等于空,第二个系统属性没有等号):
-Djavax.management.builder.initial= -Dcom.sun.management.jmxremote
2)在文件/opt/IBM/WebSphere/AppServer/java/jre/lib/management/management.properties(或/lib/management/management.properties)中添加或取消注释以下三行:
com.sun.management.jmxremote.port=3333
com.sun.management.jmxremote.authenticate=false
com.sun.management.jmxremote.ssl=false
com.sun.management.jmxremote.local.only=false
3)连接VisualVM!
可以将这些参数 port、authenticate 和 ssl 设置为 JVM 参数,例如 -Dcom.sun.management.jmxremote.port=1300
我还有另一个问题:通过使用 mbean visualvm 插件,我看不到任何相关的 Websphere mbean。
这取决于您想要实现的目标和您的限制。您需要知道的是,WebSphere 中有两个 MBean 服务器:除了 JRE 自动创建的平台 MBean 服务器之外,WebSphere 还创建了自己的 MBean 服务器。这里有两个选项:
按照 user271858 给出的答案中的描述配置您的 WebSphere 服务器。这将允许您连接到平台 MBean 服务器。您将可以访问提供进程信息(RAM、CPU、线程等)的标准平台 MBean。另一方面,您将无法访问 WebSphere 的 MBean(实现某些管理操作、提供应用程序指标等)。您还需要注意,通过更改 WebSphere 服务器的配置,您绕过了 WebSphere 的安全性。
连接到 WebSphere 的 MBean 服务器。WebSphere 支持多种协议来做到这一点(主要是 SOAP 和 RMI),但它们都不是完全标准的。这意味着您需要将一些 WebSphere 库(即管理瘦客户端)添加到 VisualVM。这样做可能是可能的(它适用于 JConsole,因此原则上它也应该适用于 VisualVM),但这很棘手,尤其是您需要连接到启用了安全性的 WebSphere 服务器。
一个更简单的选择是将VisualWAS插件安装到 VisualVM 中。它依赖于专有 WebSphere 协议之一的开源实现,因此不需要任何额外的 WebSphere 库。
这将允许您访问注册在 WebSphere 的 MBean 服务器中的 MBean,但不能访问标准平台 MBean,即 VisualVM 中的相关部分(与内存、CPU 和线程相关)将被禁用。但是,您可以在 WebSphere 的 MBean 服务器中交叉注册平台 MBean,VisualWAS 项目也为此提供了一个解决方案(以要安装到 WebSphere 中的插件的形式)。然后,您将可以访问 VisualVM 中的所有功能,并且无需绕过 WebSphere 的安全性。