found a partial solution / work-around.
recall that i was looking for a hook that's launched at application-stop (similar to the Runtime shutdown hook that is called upon server-stop).
in other words, a method that's automatically called upon application-stop.
it turns out that application-stop launches the Garbage Collector, or at least it does in the tests that i've done.
i think the GC will call the destroy() method on all your loaded servlets.
so it suffices to add a destroy() method to a servlet, and there you have your application-stop hook.
so i wrote a simple servlet that launches upon application-startup (web.xml : <load-on-startup>1</load-on-startup>) and its destroy() method redefines a static boolean in a Singleton class that i've added as a condition to my while loop above.
when i do an application-stop in weblogic, the GC is launched, the destroy() is called, the boolean is redefined, the while loop stops, and we're golden.