That all makes sense to me (except the part where you decided you wanted to have a servlet act as a SocketServer). The first request creates a SocketServer which listens on port X, and presumably goes into a loop waiting for connections. The second and subsequent requests attempt to create a SocketServer which listens on port X, but of course they can't because something else is already listening on port X.
You should not find this surprising.
I'm not sure why your server (you were referring to the SocketServer, not the servlet container, right?) is unresponsive. But that doesn't really matter because a servlet is an extremely poor choice for that task. I would suggest just running an ordinary server application which listens on port X and keep
Java EE out of the picture entirely.