The last couple of weeks have been very interesting, as I was in the last stages of a project at work. I no longer hate WSAD (Websphere Studio Application Developer) so much. I still find a lot of missing features from the latest Eclipse releases (WSAD is based on Eclipse 2.x), but I found the integration with Websphere to be very nice, and developing EJBs is almost easy.
However, the more I use EJBs, the less I like them. After using Spring to create POJO-like services, EJBs feel too cumbersome, not to mention that we mostly do Stateless Session Beans and never even touch Entity Beans, as they impact performance too much. So, there’s really not much sense in using EJBs.
One of the main things I don’t like about EJBs is that they’re not easy to test. With Spring, I could easilly do testing, and not only unit testing but also Integration testing, using Spring’s AbstractTransactionalDataSourceSpringContextTests, which allows me to insert and update the database and rollback those changes afterwards, so the db isn’t affected. With EJBs, so far I’ve only found Cactus, and I still feel a little vague on how to exactly use it, since EJBs are required to run inside an Appserver.
Anyway, I was able to finish the project, and WSAD helped.
Try EJB3. You can probably even use it in WebSphere if you use the embeddable Hibernate implementation.