Visio has this unfortunate habit of trying to force my project from
Java into Visual Basic. I got into a real fight with it while trying to do UML diagrams back several years ago.
I haven't used Rational - too pricey for me - but I've used the reverse engineering abilities of the open-souce ArgoUML tool once or twice.
For Struts apps, I never felt the need to diagram the Struct class objects - since the most complex app I ever did was still well-defined enough to manage. However ORM data models are less orderly, so I've found them to be good candidates for graphing.
You might want to look at the Eclipse Modelling Framework (EMF). I've yet to gain any traction on it, but hope to do so eventually.
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.