I believe that the issue is not really entity manager that is cached but the underlying db connection instance. The entity manager should be properly closed cleaned but when it tries to use connection it is broken and thus failing in general. I noticed that you use Apache DBCP connection pool so you can configure the pool to verify the connection on various phases - it will execute simple query to check if connection is valid before it is delivered to the application - in this case entity manager. See here for more details about validation of connection in DBCP.
HTH