I tried to use Visio to generate the UML diagrams for the
Struts article I published way back when. It kept trying to force me into Visual Basic and I finally gave up on the UML support and drew them by vrute force.
There are several UML tools written in Java, but I don't know if any of them can reverse-engineer sequence diagrams. My sequence diagrams are usually pretty abstract, so I do them by hand. A blow-by-blow diagram would have too much extraneous detail, and would be nearly impossible to generate in cases where multiple clients and servers are conversing. Some of them might be external "black boxes" and some might not even be in Java.
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.