Identified a possible source of the session is closed problem.  It seems that committing a transaction is also closing the session (for this particular configuration of hibernate).  So I've restructured the hibernate filter to do the commit and then removed the helper methods for committing stuff to discourage people doing it