 <p>So, you are hitting tomcat hot-redeploy <code>ClassLoader</code> issues.</p> <p>There are two things you should do:</p> <ol> <li><p>Make sure that when your application is shutdown, your Hibernate <code>SessionFactory</code> gets <code>close()</code>ed as well. The best place to do this is a <code>ServletContextListener</code>. Otherwise, on hot redeploy, c3p0 Threads from a now-discarded app will continue to be running. See <a href="http://docs.jboss.org/hibernate/orm/5.0/javadocs/org/hibernate/SessionFactory.html#close--" rel="nofollow">SessionFactory.close()</a></p></li> <li><p>Try the settings described <a href="http://www.mchange.com/projects/c3p0/#tomcat-specific" rel="nofollow">here</a> to prevent stray references to objects from a defunct <code>ClassLoader</code>. You can just add</p></li> </ol> <hr> <pre><code>&lt;property name="hibernate.c3p0.privilegeSpawnedThreads"&gt;true&lt;/property&gt; &lt;property name="hibernate.c3p0.contextClassLoaderSource"&gt;library&lt;/property&gt; </code></pre> <hr> <p>to your c3p0 config section.</p> <p>(p.s. Be sure you are using a recent version of c3p0. These settings are new-ish.)</p>