sync.beforeCompletion();
} catch (RuntimeException e) {
setRollbackOnly(e);
RollbackException newException = new RollbackException(e.toString());
newException.initCause(e);
throw newException;
} catch (Throwable e) {
log.log(Level.FINE, e.toString(), e);
}