抱歉,如果这是重复之前提出的问题,但我已经尝试了此处和其他地方提供的解决方案,但似乎没有一个对我有用。
场景:我需要分析位于防火墙后面的生产 Tomcat 7 服务器。我只能通过 SSH 访问此服务器。选择的分析工具是 Visualvm,这些服务器没有安装 GUI。我尝试从运行 Ubuntu 10.04 服务器 LTS 连接的服务器和机器。
可能的解决方案:似乎可以通过 SSH 隧道使用 visualvm,下面给出的链接提供了非常详细的指南:
此外,我还在 Tomcat 的 /conf 目录中添加了一个 jmxremote.access 文件,其中包含以下两行:
monitorRole readonly
controlRole readwrite
问题:我按照文章中提供的步骤进行操作,一切似乎都很好。我可以使用 jmxterm 和指南中给出的连接字符串在本地(从服务器)连接到服务器中的 jmx 端口。
我按照指南配置了本地 tomcat 作为测试,Visualvm 使用连接字符串连接到这个 tomcat 实例没有问题。
但是,VisualVM 不会通过 SSH 隧道连接到远程服务器。我尝试了 JConsole,因为它更简单并且具有更好的日志记录工具,并且我收到以下消息序列:
FINER: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi://localhost:12009/jndi/rmi://localhost:12008/jmxrmi] connecting...
FINER: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi://localhost:12009/jndi/rmi://localhost:12008/jmxrmi] finding stub...
FINER: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi://localhost:12009/jndi/rmi://localhost:12008/jmxrmi] connecting stub...
FINER: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi://localhost:12009/jndi/rmi://localhost:12008/jmxrmi] getting connection...
FINER: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi://localhost:12009/jndi/rmi://localhost:12008/jmxrmi] failed to connect: java.rmi.NoSuchObjectException: no such object in table
关于我在这里做错了什么的任何想法?任何帮助是极大的赞赏!
谢谢你。