The conclusion we came to in the book: EJB 2.1 CMP Entity Beans have fallen out of favor. Hibernate is catching a lot of buzz, but it is not spec-compliant. (We used it anyway.) EJB3 looks very interesting, but it won't be in mainstream use for another year or so.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com