Es kann sein, dass Ihre Anwendung nicht vollständig bereitgestellt werden kann, da Hintergrundthreads vorhanden sind (die Sie höchstwahrscheinlich selbst gestartet haben) oder lang andauernde Anforderungen, die verhindern, dass die Anwendung vollständig beendet wird.
Haben Sie die Protokolldateien überprüft? Haben sie angegeben, ob die Anwendung erfolgreich deinstalliert werden konnte? Oder das Gegenteil? Können Sie einen Thread-Dump erhalten, nachdem Sie versucht haben, die Deimplementation durchzuführen (kill -3 processid auf Unix, Ctrl-Break in einer Konsole in Windows) und sehen, ob etwas noch läuft, das sollte nicht?
Beachten Sie auch, dass die meisten Anwendungen, die ich gesehen habe, nicht vollständig in Bezug auf den Speicher entfaltet werden können, die sie genommen haben. Ich bin ziemlich oft auf OutOfMemoryErrors (PermGen) gestoßen, besonders nach dem erneuten Einsatz von Webapps (Sie finden viele Referenzen auf PermGen, wenn Sie danach googeln). Ich denke, eine Neuverteilung ist in Ordnung für Entwicklungsmaschinen, aber nicht für Produktionsmaschinen. Es ist besser, dies zu wissen, bevor Sie sich in der Produktion darüber wundern.
Dieser Trick funktionierte für mich. Ich hatte Probleme, meine Grails-App mit dem Befehl "grails test tomcat undeploy" zu deimplementieren. Aber mit diesen Optionen fing es einfach magisch an zu arbeiten –
Achte darauf, Tomcat docs sagt: "' antiJARLocking' ist eine Teilmenge von 'antiResourceLocking' und deshalb, um doppelte Arbeit und mögliche Probleme zu vermeiden, sollte nur eines dieser Attribute auf True gesetzt werden jedes Mal. ". – bluish