From a high level, a CMP is an entity bean, which should really only be used for database transactions i.e. select, update, remove. You most likely would call CMP from other type of beans/Java clients to perform those functions. It is good practice to keep your database transactions away from your application logic. Stateless Session beans and CMP have different bean lifecycles and different requirements ... do u require a list?
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