Setting hibernate.ejb.resource_scanner to an implementation that returns static results and doesn't do any scanning works around the problem for us, which suggests the leak is somewhere in scanning.