I think this article has sumarized the problem with Java adoption quite well. And I agree to the skill sets needed for the solution; Java, Servlets, Classpaths, Jar and Tomcat should be enough to construct a nice system.
But there is one big block for these technologies from becoming more widely adopted for general use. Hosting is too expensive.
I was attracted to moving from the bazaar set which was mentioned here, to servlets about four years ago. I was often distracted by tangential J2EE information, but I found that basically Servlets and XSLT was really all I needed to be happy.
But to find an inexpensive host has been a real problem and a much bigger one than learning anything.
If there were one suggestion I'd have to folk who want Java to compete with .net for small to mid-level development it would be to provide features for easy-to-manage virtual hosting.
The cheapest reliable Tomcat host I could find was about $100 a month which is too much for an individual developer like me. Eventually I found a JRun virtual host for $50 a month which will make me happy, but there aren't too many out there. A few of JRun 4's design choices seem to be in order to help provide virtual hosting, so this may help if I am right and folk don't ignore it; but the folks at Dreamhost, who would let me use JServ, but not jar files (for configuration reasons), and who I would have liked to use for this, said that Tomcat just had too many problems when it came to virtual hosting for them to try and find a way to offer it.
But the .net folk are finding inexpensive virtual hosts pretty quickly. If folk want to get mid-level developers using Java, I'd suggest focusing on this.