Eu tive este problema de forma consistente e foi o arquivo .pid para o processo antes da reinicialização ainda estar lá. Estes são exemplos da RedHat, mas o conceito é o mesmo. Um "service tomcat stop" interrompe o processo do apache e exclui o arquivo .pid que o acompanha. Uma reinicialização não estava removendo o arquivo .pid. O que acabei fazendo no início foi manualmente parar e reiniciar o tomcat depois que o servidor voltou a funcionar. Mais tarde modifiquei o script de inicialização para fazer um desligamento automático primeiro. Isso me daria um erro se ele tentasse parar alguma coisa, mas o servidor da Web começou depois disso.