gpt4 book ai didi

tomcat - 如何使用ssh隧道远程连接到tomcat上的jmx而不破坏ehcache

转载 作者:行者123 更新时间:2023-11-28 21:46:41 25 4
gpt4 key购买 nike

我已按照以下链接中的说明在 tomcat 内的单个端口上创建我自己的 RMI 注册表和 jmx 服务器。根据评论,我需要设置-Djava.rmi.server.hostname=localhost。完成后,我确实可以使用 ssh 端口转发通过 jconsole 连接到我的服务器。

http://blogs.oracle.com/jmxetc/entry/connecting_through_firewall_using_jmx

但是,我发现它有破坏我们使用 RMI 的 ehcache 复制的非常糟糕的副作用。它无法提示它无法从远程对等本地主机引导。我猜是因为对等点都通过设置 -Djava.rmi.server.hostname=localhost 将其 rmi 服务器主机名设置为 localhost。

有没有人可以解决这个问题?

最佳答案

我刚遇到这个问题。问题是 java.rmi.servername.hostname 属性是全局的。为了使 ehcache 和 jmx 服务器协调运行,您必须在运行 VisualVM 的机器上执行一些 hack。

这是您需要做的。这是基于为客户端使用 Mac,因此请根据需要修改命令。

  1. 删除 -Djava.rmi.server.hostname=localhost。

  2. 编写一个测试程序,它将为您提供要分析的服务器计算机上的 InetAddress.getLocalHost().getHostAddress() 的值。这应该给你本地 ip(如果 nat'd 是私有(private)的)。您必须在本地计算机上引用此 IP。在下面的命令说 IP 的地方使用这个 IP。

  3. 现在,这是有趣的部分:将内部 IP 添加到计算机上的环回接口(interface)。 (ifconfig lo0 IP netmask 255.255.255.0 up)

  4. 测试这实际上会将流量定向到环回。它应该返回环回。 (路由获取IP)

  5. 启动 SSH 隧道:ssh -C -L IP:PORT:localhost:PORT -L IP:OTHER_PORT:localhost:OTHER_PORT user@host。

注意 ssh 隧道的 IP 实际上是现在绑定(bind)到环回的 IP。您不再指本地主机,而是指机器的 IP。您还必须修改 JMX URL 以引用此 IP 而不是本地主机。

关于tomcat - 如何使用ssh隧道远程连接到tomcat上的jmx而不破坏ehcache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2777631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com