 Although much more complicated I assume a better performing system would involve my own session control, request scope beans, stateless ejb and application managed entity manager (emf) where I only preserve the cache when it is a long standing transaction. This would create a pooled environment with less instances and thus threads, swapping, disc caching, etc. I've read substantially, built a test environment using a lot of BalusC suggestions and have a reasonable but theoretical understanding of most things from JSF lifecycle on. As much as the platform of JSF and EE seem like a good decision the learning curve is a little overwhelming. 