The thread dump clearly shows that the code is not stuck in any JavaMail method, so I don't know
what happened between the "before" print and the "after" print. You're sure that thread didn't
generate any exceptions, right? Try wrapping it all in a try/catch(Throwable).
Any chance you can run with a debugger attached to the process and set breakpoints?
I simply replaced the catch(Exception e) part with catch(Throwable t) which finally printed something to the console stating that idle() cannot be executed on a closed folder.
So I added two lines of code which check if the folder is open or not. If it's closed, I open it.
Now, server push works beautifully!
Thank you very much for your help, Bill! (As always :-))