如何使用 IntelliJ IDEA 调试部署在集群环境中的 Java 应用程序?

How do I debug a Java application deployed in a cluster environment using IntelliJ IDEA?

每次需要调试部署在集群环境中的Java应用程序,我都遇到了大麻烦。

公司的环境(测试、验收等)通常是多台服务器的集群环境,在集群的前面,有一个代理服务器将请求(HTTP)转发到集群中的其中一台服务器。如果您无权访问各个服务器并且不允许从一个特定服务器使用午餐,那么您必须使用来自代理的端点。

据我所知,一个 IntelliJ 只能打开一个远程调试连接。这意味着如果请求转到集群中的另一台服务器(我的调试器未连接),那么我在调试中看不到任何东西 window。也许下次吧。

如果幸运的话,您可以停止集群中的所有服务器,除了一个,您正在调试的服务器。但是要停止服务器也不是一件容易的事,尤其是在验收环境中。

据同事说,我可以用一个Eclipse实例调试多个服务器,但我真的不想用Eclipse。

好的,我想我可以将整个源代码复制到不同的文件夹,使用新的 IntelliJ 实例打开代码,然后我可以从那里连接到集群中的第二台服务器。但这是一个痛苦的黑客攻击。

有没有什么正常的方法可以用IntelliJ调试多台服务器的集群环境?

您可以通过创建多重 运行 配置并启动它们,在远程端(在相应的 ip 地址和 tcp 端口上)打开与远程 JVM 一样多的调试会话数 运行:

例如要连接上述主机和端口,删除 JVM 必须启动

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

如果您使用 JDK 版本 8 或更低版本,并且

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005

如果您使用 JDK 版本 9 或更高版本。