This servlet was written from the standpoint that is loaded once at server restart and stays up until server shutdown.
I don't have an idea on how to prove this w/o code changes, but I seem to remember that the servlet spec is quite clear on that it is up to the servlet container on when to initialize and destroy a servlet. While most do it once on web app startup/shutdown (which is reasonable), that is not guaranteed behavior. So if the servlet is written in a way like you describe, I'd call that a bug, because it is relying on undocumented behavior (which may change from container to container, and even between versions of the same container).