There is no such thing as a "JSF Server".
JSF is a JEE-standard framework to support forms-based MVC-style application design. It is not a "Master Control Program" that has to get its grubby little hands on each and every incoming HTTP request. A given webapp deployed within a
JEE server can have as much or as little of its code be in JSF as is convenient. Including zero. JSF is provided as part of the support environment for JEE servers just like EJBs or JMS and can be incorporated into partial-stack servers (such as
Tomcat), but there is absolutely no requirement that you use JSF in any of the webapps any more than that all deployed webapps need use EJB or JMS.
In order to generate non-HTML output from JSF, you have to do violent things to it. It isn't worth the trouble. If you need to generate a PDF, have a traditional
servlet generate the PDF. If you need to generate XML, consider using a traditional
JSP XML template. Or, for that matter, use Spring MVC to drive an XML template. JSF won't care.
JSF and non-JSF components in a webapp can easily share data, since a JSF session-scope object is exactly the same thing as a non-JSF session-scope object other than the fact that JSF automatically instantiated it on demand instead of requiring manual construction and storage of the session object in user-written code.