I am currently facing an issue with one of our environment whereby the services try to restart but the web (apache tomcat) service is hanging and not restarting. This is causing 8080 port to be locked to that hanged web service and Catalina is throwing up errors. When this happens we have to manually kill the process or net stop nlserver6.
Why is the service not restarting? upon some investigation, I think is because requests are still being processed.
SEVERE: StandardServer.await: create:
java.net.BindException: Address already in use: JVM_Bind
SEVERE: The web application [/nl] is still processing a request that has yet to finish. This is very likely to create a memory leak. You can control the time allowed for requests to finish by using the unloadDelay attribute of the standard Context implementation.
Tomcat has a property that can be configured to give what ever process is running more time for requests to be finished (like a delay) using the unloadDelay property but I dont want to go down this route.
In the issue description I've explained that the Neolane Web service is hanged (unresponsive) and is not releasing port 8080 at the point of services restart. What I saw the other day was the Neolane spawned a new web service whilst the old one was still running. Obviously the new web service would have not been able to listen on the 8080 port as the unresponsive service is not releasing it.