In my class on engineering large-scale Internet applications, the project requires that the students build a course registration system for small college. In the first part project, they use JSPs and MySQL to build a fairly straightforward 2-tier implementation. In Part II they refactor the implementation from Part II to use EJBs. Without a doubt, the worst part of the whole project is CMP entity beans. In concept they're sweet, but the mechanics of getting everything working right causes no end of headaches--even with several working example to build from. I'm sure that my students will be grateful to know that EJB 3.0 will offer an alternative to entity beans that allows plain old java objects (POJOs) to be persistent.
There has apparently been some controversy over whether to use JDO 2.0 or the jBoss Group's Hibernate as the persistence mechanism for POJOs. Just last week the EJB expert group decided on Hibernate as the standard for EJB 3.0. Clearly Marc Fleury and the rest of the jBoss team of crowing and the JDO proponents are moping, but most of us are just hoping for an easier way to create persistence in our EJB projects.
I tell my class that application servers are at the same point operating systems were in the 1960s. There was enough hassle that many people didn't consider using them because while their benefits were real, the pain to get there was too great. Over time, the hassle decreased and the benefits went up to the point that no one would consider building a machine without an operating system. The very idea is ludicrous. Eventually the benefits that applications servers (whether its EJB or not is a different question, I think) will be so great compared to the hassle that programming large distributed applications without the benefit of one will seem equally ludicrous.
I think that for Web services, we're already there. The middleware of the Web services world, Web services intermediaries (WSI), are already so easy to use and offer such significant benefits to a large-scale Web services project that in my mind, its just plain silly to do without one. So far, however, there's no jBoss of the WSI space.