The usecase I have in mind is trying to detect if there is already an OpenLDAP directory (C/C++) listening to the same port as A-DS, at the time that A-DS is started.
In this situtation I have found that the OpenLDAP directory gets all the traffic but there is no way to draw the user's attention to the problem. My understanding is that ServerSocket.bind() would detect the situation, but because of the current implementation (based on nio) the check is simply not being performed. I had in mind the Tomcat behaviour, where it won't start up when it's port is busy (or is it just the easier case of simply detecting when another Tomcat is using the same port ?). I thought there was stuff in socket support to tell if a particular socket was already being listened to, but then it's been a long time since I last visited this low in the comms stack... Quoting from http://www.cafeaulait.org/course/week12/26.html (which is admittedly old) which I found in a google : "When you create a ServerSocket object, it attempts to bind to the port on the local host given by the port argument. If another server socket is already listening to the port, then a java.net.BindException, a subclass of java.io.IOException, is thrown. No more than one process or thread can listen to a particular port at a time. This includes non-Java processes or threads. For example, if there's already an HTTP server running on port 80, you won't be able to bind to port 80." The rest of my post was thinking out load about how to allow flexible configuration of the "port busy" check, assuming that this check would not required in all deployment situations (although it seems to me to be the more sensible default).
