Each time when I need to debug a Java application deployed in a cluster environment, I'm in big trouble.
Company's environments (Test, Acceptance, etc.) usually is cluster environments with multiply servers and in front of the cluster, there is a proxy server that forwards the requests (HTTP) to one of the servers in the cluster. If you have no access to the individual servers and you are not allowed to lunch the app from one particular server then you must use the endpoint that comes from the proxy.
As I know one IntelliJ can open only one remote debug connection. That means if the request goes to another server in the cluster (where my debugger is not attached) then I can not see anything in my debug window. Maybe next time.
If you are lucky you can stop all servers in the cluster except one, what you are debugging. But to stop servers is also not easy, especially in Acceptance environments.
According to my colleagues, I can debug multiply servers with one Eclipse instance, but I really do not want to use Eclipse.
Okay, I guess that I can copy the whole source code to a different folder, open the code with a new IntelliJ instance, and from there I can connect to the 2nd server in the cluster. But this is a painful hack.
Is there any normal way how to debug the cluster environment with multiple servers with IntelliJ?
You can open as many number of debug sessions as many remote JVM are running on remote ends (on corresponding ip address and tcp port) by creating multiply Run Configurations and launch them:
For example to connect with the above host and port, the remove JVM must be started with
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
if you use JDK version 8 or less, and the
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
if you use JDK version 9 or newer.