An application may consist of three layers. Data layer, business layer and web client. EJB's typically reside in the business layer. The web client is built according to the MVC design pattern. Struts is an implementation of the MVC pattern. It is very common for Struts Actions to talk to Session Beans (business layer).
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