A quick rant...
I just spent a week debugging this Java application, and it ended up being just a few missing fields. Normally I would have caught this right away, however some numbskull decided it would be a good idea to use custom exceptions, which basically meant I had no idea where the problem was. Even then this might not have been so bad if this project didn't have tens of thousands of lines of unecessary code. And finally I could have possibly been saved by RAD's debugger, however no one seems to be able to get it working with the Websphere Portal 5.0 Test Environment.
I had to track my way through Websphere Portal, into struts, around spring, over ejb, back through spring again, and finally to hibernate. All of this garbage and all this application does is track leads. This whole thing could be re-written with just struts in a few weeks, or in rails in a couple hours(ok, maybe a couple days :).
The moral of the story, while Java is good for truly enterprise applications, the majority of the applications is used for don't warrant such a beast.