Have you tried creating a thread dump at the moment that your application hangs? If you're on linux you could try to do:
$ kill -3 <pid>
The thread dump is written to the standard output. It may logged in the console or /logs/stdout or /logs/catalina.out.