For some reasons, we often need to know if there is a running server instance. By establishing a connection to a specific port such as 1099, we may get the status of server. However, the method doesn't work if default port number is changed, especially in multi-instances scenario. In multi-instances scenario, we hope to know if any instance is running.
Below is my thoughts about the solution. Any comments or suggestions, please feel free to tell me. It will be appreciated if any better solution could be provided.
We may create flag file for each instance and lock the file with FileChannel.lock() when a server instance is starting up. It will be unlocked and deleted when the server is stopped. Unlocking will be automatically done when JVM exits; deleting the file can be done in shutdown hook in FrameworkLauncher.launch().
In this way, if any flag file has been locked, we may deduce that there is at least one running server instance; if no locked files found, we may think all server instances are stopped. We can put all the flag files in a same directory for us to track.