if (tx) {
log.finest("beginning hibernate transaction");
org.hibernate.Transaction hibernateTransaction = session.beginTransaction();
// get the standard-transaction
StandardTransaction standardTransaction = null;
if (standardTransactionName!=null) {
standardTransaction = (StandardTransaction) wireContext.get(standardTransactionName);
} else {
standardTransaction = wireContext.get(StandardTransaction.class);
}
if (standardTransaction==null) {
throw new WireException("couldn't find standard-transaction "+(standardTransactionName!=null ? "'"+standardTransactionName+"'" : "by type ")+"to enlist the hibernate transaction");
}
// enlist the hibernate transaction to the global transaction
HibernateTransactionResource resource = new HibernateTransactionResource(hibernateTransaction, session);
standardTransaction.enlistResource(resource);
}
// make sure that the session is closed when the context closes.
// method event will be called (see below)
wireContext.addListener(new SessionCloser(session));