vendredi 27 février 2015

Identify Java jdwp Debugger Assigned (Ephemeral) Port



I am using the following JVM parameters to start-up a JVM with the hostpot debugger.



-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=0


Note that I am assigning port zero, so that the JVM asks the OS for an ephemeral port. This is critical for my use-case, to make sure the JVM will not fail to start-up due to contention for some pre-defined port.


As a result my JVM starts-up, and the following log entry is outputted to stdout:



Listening for transport dt_socket at address: XXXX


I would like to find some way to identify the debug port from inside or outside of the JVM, so it would be possible for me to record it in a state management serverice.


What options are available for this use-case? I have considered the following, with little joy:



  • JMX Connector - Connect using JConsole to the process, find some MBean which details which port was use. However, I cannot find any such MBean

  • RMI Registry - Is it possible to have the debug agent register itself against an RMI Registry? I've not found any evidence this could work.

  • Java Agent - Specify a JVM agent that could intercept some aspect of the debugger and obtain the port details, again no evidence to support the feasibility of this idea.




Aucun commentaire:

Enregistrer un commentaire