Yah. Don't mistake the user's browser for a client/server client program. Web browsers are "hit-and-run". The user has no real idea
what is happening when they hit Submit and nothing comes back for minutes at a time. For all they know, the server crashed.
I have a project where the backend can take literally
hours. Among other things, this was holding the entire
Tomcat server for ransom when I ran it in the Tomcat JVM. If some other process went south, we couldn't restart Tomcat without killing the backend engine as a side-effect.
Finally ended up making the engine a separate application altogether and used RMI from Tomcat to invoke it and query for run status.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.