HHH-1786 : more WebSphere JTA garbage;
copyright headers clean-up git-svn-id: https://svn.jboss.org/repos/hibernate/core/trunk@14449 1b8cb986-b30d-0410-93ca-fae66ebed9b2
This commit is contained in:
parent
e01a7bfe54
commit
f2ccf54a49
|
@ -35,7 +35,7 @@ import java.util.Hashtable;
|
|||
* the {@link #buildOrObtainSession()} method) for easier subclassing for custom
|
||||
* JTA-based session tracking logic (like maybe long-session semantics).
|
||||
*
|
||||
* @author <a href="mailto:steve@hibernate.org">Steve Ebersole </a>
|
||||
* @author Steve Ebersole
|
||||
*/
|
||||
public class JTASessionContext implements CurrentSessionContext {
|
||||
|
||||
|
|
|
@ -1,8 +1,31 @@
|
|||
//$Id: BESTransactionManagerLookup.java 4388 2004-08-20 07:44:37Z oneovthafew $
|
||||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
/**
|
||||
* A <tt>TransactionManager</tt> lookup strategy for Borland ES.
|
||||
*
|
||||
* @author Etienne Hardy
|
||||
*/
|
||||
public final class BESTransactionManagerLookup extends JNDITransactionManagerLookup {
|
||||
|
|
|
@ -1,19 +1,44 @@
|
|||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.transaction.TransactionManager;
|
||||
import javax.transaction.Transaction;
|
||||
|
||||
import org.hibernate.HibernateException;
|
||||
|
||||
/**
|
||||
* TransactionManager lookup strategy for BTM
|
||||
*
|
||||
* @author Ludovic Orban
|
||||
*/
|
||||
public class BTMTransactionManagerLookup implements TransactionManagerLookup {
|
||||
|
||||
/**
|
||||
* @see org.hibernate.transaction.TransactionManagerLookup#getTransactionManager(Properties)
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public TransactionManager getTransactionManager(Properties props) throws HibernateException {
|
||||
try {
|
||||
|
@ -26,9 +51,16 @@ public class BTMTransactionManagerLookup implements TransactionManagerLookup {
|
|||
}
|
||||
|
||||
/**
|
||||
* @see org.hibernate.transaction.TransactionManagerLookup#getUserTransactionName()
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public String getUserTransactionName() {
|
||||
return "java:comp/UserTransaction";
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public Object getTransactionIdentifier(Transaction transaction) {
|
||||
return transaction;
|
||||
}
|
||||
}
|
|
@ -1,4 +1,26 @@
|
|||
//$Id: CMTTransaction.java 9680 2006-03-22 23:47:31Z epbernard $
|
||||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
import javax.transaction.Status;
|
||||
|
@ -14,8 +36,13 @@ import org.hibernate.jdbc.JDBCContext;
|
|||
import org.hibernate.util.JTAHelper;
|
||||
|
||||
/**
|
||||
* Implements a basic transaction strategy for CMT transactions. All work is done
|
||||
* in the context of the container managed transaction.
|
||||
* Implements a basic transaction strategy for CMT transactions. All work is
|
||||
* done in the context of the container managed transaction.
|
||||
* <p/>
|
||||
* The term 'CMT' is potentially misleading here; the pertinent point simply
|
||||
* being that the transactions are being managed by something other than the
|
||||
* Hibernate transaction mechanism.
|
||||
*
|
||||
* @author Gavin King
|
||||
*/
|
||||
public class CMTTransaction implements Transaction {
|
||||
|
@ -32,6 +59,9 @@ public class CMTTransaction implements Transaction {
|
|||
this.transactionContext = transactionContext;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void begin() throws HibernateException {
|
||||
if (begun) {
|
||||
return;
|
||||
|
@ -50,6 +80,9 @@ public class CMTTransaction implements Transaction {
|
|||
jdbcContext.afterTransactionBegin(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void commit() throws HibernateException {
|
||||
if (!begun) {
|
||||
throw new TransactionException("Transaction not successfully started");
|
||||
|
@ -68,6 +101,9 @@ public class CMTTransaction implements Transaction {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void rollback() throws HibernateException {
|
||||
if (!begun) {
|
||||
throw new TransactionException("Transaction not successfully started");
|
||||
|
@ -87,10 +123,18 @@ public class CMTTransaction implements Transaction {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for property 'transaction'.
|
||||
*
|
||||
* @return Value for property 'transaction'.
|
||||
*/
|
||||
public javax.transaction.Transaction getTransaction() throws SystemException {
|
||||
return transactionContext.getFactory().getTransactionManager().getTransaction();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public boolean isActive() throws TransactionException {
|
||||
|
||||
if (!begun) return false;
|
||||
|
@ -111,6 +155,9 @@ public class CMTTransaction implements Transaction {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public boolean wasRolledBack() throws TransactionException {
|
||||
|
||||
if (!begun) return false;
|
||||
|
@ -131,6 +178,9 @@ public class CMTTransaction implements Transaction {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public boolean wasCommitted() throws TransactionException {
|
||||
|
||||
if ( !begun ) return false;
|
||||
|
@ -151,6 +201,9 @@ public class CMTTransaction implements Transaction {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void registerSynchronization(Synchronization sync) throws HibernateException {
|
||||
try {
|
||||
getTransaction().registerSynchronization(sync);
|
||||
|
@ -160,6 +213,9 @@ public class CMTTransaction implements Transaction {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void setTimeout(int seconds) {
|
||||
throw new UnsupportedOperationException("cannot set transaction timeout in CMT");
|
||||
}
|
||||
|
|
|
@ -1,4 +1,26 @@
|
|||
//$Id: CMTTransactionFactory.java 9595 2006-03-10 18:14:21Z steve.ebersole@jboss.com $
|
||||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
import java.util.Properties;
|
||||
|
@ -13,9 +35,8 @@ import org.hibernate.jdbc.JDBCContext;
|
|||
import javax.transaction.SystemException;
|
||||
|
||||
/**
|
||||
* Factory for <tt>CMTTransaction</tt>.
|
||||
* Factory for {@link CMTTransaction} instances.
|
||||
*
|
||||
* @see CMTTransaction
|
||||
* @author Gavin King
|
||||
*/
|
||||
public class CMTTransactionFactory implements TransactionFactory {
|
||||
|
|
|
@ -1,4 +1,26 @@
|
|||
//$Id: CacheSynchronization.java 9239 2006-02-08 22:34:34Z steveebersole $
|
||||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
import javax.transaction.Status;
|
||||
|
@ -8,11 +30,15 @@ import javax.transaction.Transaction;
|
|||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.hibernate.TransactionException;
|
||||
import org.hibernate.jdbc.JDBCContext;
|
||||
import org.hibernate.util.JTAHelper;
|
||||
|
||||
/**
|
||||
* A JTA transaction synch used to allow the {@link org.hibernate.Session} to know about transaction
|
||||
* events.
|
||||
*
|
||||
* @author Gavin King
|
||||
*/
|
||||
public final class CacheSynchronization implements Synchronization {
|
||||
|
@ -28,14 +54,16 @@ public final class CacheSynchronization implements Synchronization {
|
|||
TransactionFactory.Context ctx,
|
||||
JDBCContext jdbcContext,
|
||||
Transaction transaction,
|
||||
org.hibernate.Transaction tx
|
||||
) {
|
||||
org.hibernate.Transaction tx) {
|
||||
this.ctx = ctx;
|
||||
this.jdbcContext = jdbcContext;
|
||||
this.transaction = transaction;
|
||||
this.hibernateTransaction = tx;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void beforeCompletion() {
|
||||
log.trace("transaction before completion callback");
|
||||
|
||||
|
@ -77,6 +105,9 @@ public final class CacheSynchronization implements Synchronization {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void afterCompletion(int status) {
|
||||
if ( log.isTraceEnabled() ) {
|
||||
log.trace("transaction after completion callback, status: " + status);
|
||||
|
@ -92,6 +123,9 @@ public final class CacheSynchronization implements Synchronization {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public String toString() {
|
||||
return CacheSynchronization.class.getName();
|
||||
}
|
||||
|
|
|
@ -1,8 +1,31 @@
|
|||
//$Id: JBossTransactionManagerLookup.java 8435 2005-10-18 16:23:33Z steveebersole $
|
||||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
/**
|
||||
* A <tt>TransactionManager</tt> lookup strategy for JBoss
|
||||
* A {@link TransactionManagerLookup} lookup strategy for JBoss AS.
|
||||
*
|
||||
* @author Gavin King
|
||||
*/
|
||||
public final class JBossTransactionManagerLookup extends JNDITransactionManagerLookup {
|
||||
|
|
|
@ -1,10 +1,31 @@
|
|||
//$Id: JDBCTransaction.java 9595 2006-03-10 18:14:21Z steve.ebersole@jboss.com $
|
||||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.transaction.Status;
|
||||
import javax.transaction.Synchronization;
|
||||
|
||||
|
@ -17,10 +38,13 @@ import org.hibernate.TransactionException;
|
|||
import org.hibernate.jdbc.JDBCContext;
|
||||
|
||||
/**
|
||||
* Implements a basic transaction strategy for JDBC connections.This is the
|
||||
* default <tt>Transaction</tt> implementation used if none is explicitly
|
||||
* specified.
|
||||
* @author Anton van Straaten, Gavin King
|
||||
* {@link Transaction} implementation based on transaction management through
|
||||
* a JDBC {@link java.sql.Connection}.
|
||||
* <p/>
|
||||
* This the Hibernate's default transaction strategy.
|
||||
*
|
||||
* @author Anton van Straaten
|
||||
* @author Gavin King
|
||||
*/
|
||||
public class JDBCTransaction implements Transaction {
|
||||
|
||||
|
@ -43,6 +67,9 @@ public class JDBCTransaction implements Transaction {
|
|||
this.transactionContext = transactionContext;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void begin() throws HibernateException {
|
||||
if (begun) {
|
||||
return;
|
||||
|
@ -95,6 +122,9 @@ public class JDBCTransaction implements Transaction {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void commit() throws HibernateException {
|
||||
if (!begun) {
|
||||
throw new TransactionException("Transaction not successfully started");
|
||||
|
@ -143,6 +173,9 @@ public class JDBCTransaction implements Transaction {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void rollback() throws HibernateException {
|
||||
|
||||
if (!begun && !commitFailed) {
|
||||
|
@ -200,18 +233,30 @@ public class JDBCTransaction implements Transaction {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public boolean wasRolledBack() {
|
||||
return rolledBack;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public boolean wasCommitted() {
|
||||
return committed;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public boolean isActive() {
|
||||
return begun && ! ( rolledBack || committed | commitFailed );
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void registerSynchronization(Synchronization sync) throws HibernateException {
|
||||
if (sync==null) throw new NullPointerException("null Synchronization");
|
||||
if (synchronizations==null) {
|
||||
|
@ -249,6 +294,9 @@ public class JDBCTransaction implements Transaction {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void setTimeout(int seconds) {
|
||||
timeout = seconds;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,26 @@
|
|||
//$Id: JDBCTransactionFactory.java 10013 2006-06-11 17:00:19Z gavin.king@jboss.com $
|
||||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
import java.util.Properties;
|
||||
|
@ -9,31 +31,49 @@ import org.hibernate.Transaction;
|
|||
import org.hibernate.jdbc.JDBCContext;
|
||||
|
||||
/**
|
||||
* Factory for <tt>JDBCTransaction</tt>.
|
||||
* @see JDBCTransaction
|
||||
* Factory for {@link JDBCTransaction} instances.
|
||||
*
|
||||
* @author Anton van Straaten
|
||||
*/
|
||||
public final class JDBCTransactionFactory implements TransactionFactory {
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public ConnectionReleaseMode getDefaultReleaseMode() {
|
||||
return ConnectionReleaseMode.AFTER_TRANSACTION;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public Transaction createTransaction(JDBCContext jdbcContext, Context transactionContext)
|
||||
throws HibernateException {
|
||||
return new JDBCTransaction( jdbcContext, transactionContext );
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void configure(Properties props) throws HibernateException {}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public boolean isTransactionManagerRequired() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public boolean areCallbacksLocalToHibernateTransactions() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public boolean isTransactionInProgress(
|
||||
JDBCContext jdbcContext,
|
||||
Context transactionContext,
|
||||
|
|
|
@ -1,22 +1,55 @@
|
|||
//$Id: JNDITransactionManagerLookup.java 3890 2004-06-03 16:31:32Z steveebersole $
|
||||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.naming.NamingException;
|
||||
import javax.transaction.TransactionManager;
|
||||
import javax.transaction.Transaction;
|
||||
|
||||
import org.hibernate.HibernateException;
|
||||
import org.hibernate.util.NamingHelper;
|
||||
|
||||
/**
|
||||
* Locates a <tt>TransactionManager</tt> in JNDI.
|
||||
* Template implementation of {@link TransactionManagerLookup} where the
|
||||
* underlying {@link TransactionManager} is available via JNDI lookup at the
|
||||
* specified location - {@link #getName}.
|
||||
*
|
||||
* @author Gavin King
|
||||
*/
|
||||
public abstract class JNDITransactionManagerLookup implements TransactionManagerLookup {
|
||||
|
||||
/**
|
||||
* @see org.hibernate.transaction.TransactionManagerLookup#getTransactionManager(java.util.Properties)
|
||||
* Get the JNDI namespace under wich we can locate the {@link TransactionManager}.
|
||||
*
|
||||
* @return The {@link TransactionManager} JNDI namespace
|
||||
*/
|
||||
protected abstract String getName();
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public TransactionManager getTransactionManager(Properties props) throws HibernateException {
|
||||
try {
|
||||
|
@ -27,8 +60,13 @@ public abstract class JNDITransactionManagerLookup implements TransactionManager
|
|||
}
|
||||
}
|
||||
|
||||
protected abstract String getName();
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public Object getTransactionIdentifier(Transaction transaction) {
|
||||
// for sane JEE/JTA containers, the transaction itself functions as its identifier...
|
||||
return transaction;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,19 +1,44 @@
|
|||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.transaction.TransactionManager;
|
||||
import javax.transaction.Transaction;
|
||||
|
||||
import org.hibernate.HibernateException;
|
||||
|
||||
/**
|
||||
* TransactionManager lookup strategy for JOTM
|
||||
* {@link TransactionManagerLookup} strategy for JOTM
|
||||
*
|
||||
* @author Low Heng Sin
|
||||
*/
|
||||
public class JOTMTransactionManagerLookup implements TransactionManagerLookup {
|
||||
|
||||
/**
|
||||
* @see org.hibernate.transaction.TransactionManagerLookup#getTransactionManager(Properties)
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public TransactionManager getTransactionManager(Properties props) throws HibernateException {
|
||||
try {
|
||||
|
@ -25,10 +50,19 @@ public class JOTMTransactionManagerLookup implements TransactionManagerLookup {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public String getUserTransactionName() {
|
||||
return "java:comp/UserTransaction";
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public Object getTransactionIdentifier(Transaction transaction) {
|
||||
return transaction;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,14 +1,37 @@
|
|||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.transaction.TransactionManager;
|
||||
import javax.transaction.Transaction;
|
||||
|
||||
import org.hibernate.HibernateException;
|
||||
|
||||
/**
|
||||
* TransactionManager lookup strategy for JOnAS
|
||||
* @author ?
|
||||
* {@link TransactionManagerLookup} strategy for JOnAS
|
||||
*/
|
||||
public class JOnASTransactionManagerLookup implements TransactionManagerLookup {
|
||||
|
||||
|
@ -25,9 +48,18 @@ public class JOnASTransactionManagerLookup implements TransactionManagerLookup {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public String getUserTransactionName() {
|
||||
return "java:comp/UserTransaction";
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public Object getTransactionIdentifier(Transaction transaction) {
|
||||
return transaction;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,31 @@
|
|||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
/**
|
||||
* TransactionManager lookup strategy for JRun4
|
||||
* {@link TransactionManagerLookup} strategy for JRun4 AS
|
||||
*
|
||||
* @author Joseph Bissen
|
||||
*/
|
||||
public class JRun4TransactionManagerLookup extends JNDITransactionManagerLookup {
|
||||
|
|
|
@ -1,4 +1,26 @@
|
|||
//$Id: JTATransaction.java 9601 2006-03-11 18:17:43Z epbernard $
|
||||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
import javax.naming.InitialContext;
|
||||
|
@ -19,16 +41,20 @@ import org.hibernate.jdbc.JDBCContext;
|
|||
import org.hibernate.util.JTAHelper;
|
||||
|
||||
/**
|
||||
* Implements a basic transaction strategy for JTA transactions. Instances check to
|
||||
* see if there is an existing JTA transaction. If none exists, a new transaction
|
||||
* is started. If one exists, all work is done in the existing context. The
|
||||
* following properties are used to locate the underlying <tt>UserTransaction</tt>:
|
||||
* <br><br>
|
||||
* <table>
|
||||
* <tr><td><tt>hibernate.jndi.url</tt></td><td>JNDI initial context URL</td></tr>
|
||||
* <tr><td><tt>hibernate.jndi.class</tt></td><td>JNDI provider class</td></tr>
|
||||
* <tr><td><tt>jta.UserTransaction</tt></td><td>JNDI name</td></tr>
|
||||
* </table>
|
||||
* {@link Transaction} implementation based on transaction management through
|
||||
* a JTA {@link UserTransaction}. Similar to {@link CMTTransaction}, except
|
||||
* here we are actually managing the transactions through the Hibernate
|
||||
* transaction mechanism.
|
||||
* <p/>
|
||||
* Instances check to see if there is an existing JTA transaction. If none
|
||||
* exists, a new transaction is started; if one exists, all work is done in the
|
||||
* existing context. The following properties are used to locate the underlying
|
||||
* {@link UserTransaction}:<ul>
|
||||
* <li><tt>hibernate.jndi.url</tt> : JNDI initial context URL</li>
|
||||
* <li><tt>hibernate.jndi.class</tt> : JNDI provider class</li>
|
||||
* <li><tt>jta.UserTransaction</tt> : JNDI namespace</li>
|
||||
* </ul>
|
||||
*
|
||||
* @author Gavin King
|
||||
*/
|
||||
public class JTATransaction implements Transaction {
|
||||
|
@ -70,6 +96,9 @@ public class JTATransaction implements Transaction {
|
|||
log.debug("Obtained UserTransaction");
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void begin() throws HibernateException {
|
||||
if (begun) {
|
||||
return;
|
||||
|
@ -121,6 +150,9 @@ public class JTATransaction implements Transaction {
|
|||
jdbcContext.afterTransactionBegin(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void commit() throws HibernateException {
|
||||
if (!begun) {
|
||||
throw new TransactionException("Transaction not successfully started");
|
||||
|
@ -166,6 +198,9 @@ public class JTATransaction implements Transaction {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void rollback() throws HibernateException {
|
||||
if (!begun && !commitFailed) {
|
||||
throw new TransactionException("Transaction not successfully started");
|
||||
|
@ -236,6 +271,9 @@ public class JTATransaction implements Transaction {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public boolean wasRolledBack() throws TransactionException {
|
||||
|
||||
//if (!begun) return false;
|
||||
|
@ -257,6 +295,9 @@ public class JTATransaction implements Transaction {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public boolean wasCommitted() throws TransactionException {
|
||||
|
||||
//if (!begun || commitFailed) return false;
|
||||
|
@ -277,6 +318,9 @@ public class JTATransaction implements Transaction {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public boolean isActive() throws TransactionException {
|
||||
|
||||
if (!begun || commitFailed || commitSucceeded) return false;
|
||||
|
@ -297,6 +341,9 @@ public class JTATransaction implements Transaction {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void registerSynchronization(Synchronization sync) throws HibernateException {
|
||||
if (getTransactionManager()==null) {
|
||||
throw new IllegalStateException("JTA TransactionManager not available");
|
||||
|
@ -311,6 +358,11 @@ public class JTATransaction implements Transaction {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for property 'transactionManager'.
|
||||
*
|
||||
* @return Value for property 'transactionManager'.
|
||||
*/
|
||||
private TransactionManager getTransactionManager() {
|
||||
return transactionContext.getFactory().getTransactionManager();
|
||||
}
|
||||
|
@ -324,6 +376,9 @@ public class JTATransaction implements Transaction {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void setTimeout(int seconds) {
|
||||
try {
|
||||
ut.setTransactionTimeout(seconds);
|
||||
|
@ -333,6 +388,11 @@ public class JTATransaction implements Transaction {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for property 'userTransaction'.
|
||||
*
|
||||
* @return Value for property 'userTransaction'.
|
||||
*/
|
||||
protected UserTransaction getUserTransaction() {
|
||||
return ut;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,26 @@
|
|||
//$Id: JTATransactionFactory.java 10347 2006-08-24 15:37:11Z steve.ebersole@jboss.com $
|
||||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
import java.util.Properties;
|
||||
|
@ -10,6 +32,7 @@ import javax.transaction.UserTransaction;
|
|||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.hibernate.ConnectionReleaseMode;
|
||||
import org.hibernate.HibernateException;
|
||||
import org.hibernate.Transaction;
|
||||
|
@ -20,14 +43,13 @@ import org.hibernate.util.NamingHelper;
|
|||
import org.hibernate.util.JTAHelper;
|
||||
|
||||
/**
|
||||
* Factory for <tt>JTATransaction</tt>.
|
||||
* Factory for {@link JTATransaction} instances.
|
||||
*
|
||||
* @see JTATransaction
|
||||
* @author Gavin King
|
||||
*/
|
||||
public class JTATransactionFactory implements TransactionFactory {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(JTATransactionFactory.class);
|
||||
private static final Logger log = LoggerFactory.getLogger( JTATransactionFactory.class );
|
||||
private static final String DEFAULT_USER_TRANSACTION_NAME = "java:comp/UserTransaction";
|
||||
|
||||
protected InitialContext context;
|
||||
|
@ -35,26 +57,30 @@ public class JTATransactionFactory implements TransactionFactory {
|
|||
|
||||
public void configure(Properties props) throws HibernateException {
|
||||
try {
|
||||
context = NamingHelper.getInitialContext(props);
|
||||
context = NamingHelper.getInitialContext( props );
|
||||
}
|
||||
catch (NamingException ne) {
|
||||
log.error("Could not obtain initial context", ne);
|
||||
catch ( NamingException ne ) {
|
||||
log.error( "Could not obtain initial context", ne );
|
||||
throw new HibernateException( "Could not obtain initial context", ne );
|
||||
}
|
||||
|
||||
utName = props.getProperty(Environment.USER_TRANSACTION);
|
||||
utName = props.getProperty( Environment.USER_TRANSACTION );
|
||||
|
||||
if (utName==null) {
|
||||
TransactionManagerLookup lookup = TransactionManagerLookupFactory.getTransactionManagerLookup(props);
|
||||
if (lookup!=null) utName = lookup.getUserTransactionName();
|
||||
if ( utName == null ) {
|
||||
TransactionManagerLookup lookup = TransactionManagerLookupFactory.getTransactionManagerLookup( props );
|
||||
if ( lookup != null ) {
|
||||
utName = lookup.getUserTransactionName();
|
||||
}
|
||||
}
|
||||
|
||||
if (utName==null) utName = DEFAULT_USER_TRANSACTION_NAME;
|
||||
if ( utName == null ) {
|
||||
utName = DEFAULT_USER_TRANSACTION_NAME;
|
||||
}
|
||||
}
|
||||
|
||||
public Transaction createTransaction(JDBCContext jdbcContext, Context transactionContext)
|
||||
throws HibernateException {
|
||||
return new JTATransaction(context, utName, jdbcContext, transactionContext);
|
||||
throws HibernateException {
|
||||
return new JTATransaction( context, utName, jdbcContext, transactionContext );
|
||||
}
|
||||
|
||||
public ConnectionReleaseMode getDefaultReleaseMode() {
|
||||
|
@ -71,10 +97,10 @@ public class JTATransactionFactory implements TransactionFactory {
|
|||
|
||||
public boolean isTransactionInProgress(
|
||||
JDBCContext jdbcContext,
|
||||
Context transactionContext,
|
||||
Transaction transaction) {
|
||||
Context transactionContext,
|
||||
Transaction transaction) {
|
||||
try {
|
||||
// Essentially:
|
||||
// Essentially:
|
||||
// 1) If we have a local (Hibernate) transaction in progress
|
||||
// and it already has the UserTransaction cached, use that
|
||||
// UserTransaction to determine the status.
|
||||
|
@ -83,27 +109,27 @@ public class JTATransactionFactory implements TransactionFactory {
|
|||
// 3) Finally, as the last resort, try to lookup the
|
||||
// UserTransaction via JNDI and use that to determine the
|
||||
// status.
|
||||
if ( transaction != null ) {
|
||||
if ( transaction != null ) {
|
||||
UserTransaction ut = ( ( JTATransaction ) transaction ).getUserTransaction();
|
||||
if ( ut != null ) {
|
||||
return JTAHelper.isInProgress( ut.getStatus() );
|
||||
}
|
||||
}
|
||||
if ( ut != null ) {
|
||||
return JTAHelper.isInProgress( ut.getStatus() );
|
||||
}
|
||||
}
|
||||
|
||||
if ( jdbcContext.getFactory().getTransactionManager() != null ) {
|
||||
return JTAHelper.isInProgress( jdbcContext.getFactory().getTransactionManager().getStatus() );
|
||||
}
|
||||
else {
|
||||
try {
|
||||
if ( jdbcContext.getFactory().getTransactionManager() != null ) {
|
||||
return JTAHelper.isInProgress( jdbcContext.getFactory().getTransactionManager().getStatus() );
|
||||
}
|
||||
else {
|
||||
try {
|
||||
UserTransaction ut = ( UserTransaction ) context.lookup( utName );
|
||||
return ut != null && JTAHelper.isInProgress( ut.getStatus() );
|
||||
return ut != null && JTAHelper.isInProgress( ut.getStatus() );
|
||||
}
|
||||
catch ( NamingException ne ) {
|
||||
throw new TransactionException( "Unable to locate UserTransaction to check status", ne );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch( SystemException se ) {
|
||||
catch ( SystemException se ) {
|
||||
throw new TransactionException( "Unable to check transaction status", se );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,30 @@
|
|||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
/**
|
||||
* TransactionManagerLookup for the OC4J (Oracle) app-server.
|
||||
* {@link TransactionManagerLookup} for the OC4J (Oracle) AS.
|
||||
*
|
||||
* @author Stijn Janssens
|
||||
*/
|
||||
|
|
|
@ -1,20 +1,45 @@
|
|||
//$Id: OrionTransactionManagerLookup.java 3890 2004-06-03 16:31:32Z steveebersole $
|
||||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
/**
|
||||
* TransactionManager lookup strategy for Orion
|
||||
* {@link TransactionManagerLookup} strategy for Orion
|
||||
*
|
||||
* @author Gavin King
|
||||
*/
|
||||
public class OrionTransactionManagerLookup
|
||||
extends JNDITransactionManagerLookup {
|
||||
public class OrionTransactionManagerLookup extends JNDITransactionManagerLookup {
|
||||
|
||||
/**
|
||||
* @see org.hibernate.transaction.JNDITransactionManagerLookup#getName()
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected String getName() {
|
||||
return "java:comp/UserTransaction";
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public String getUserTransactionName() {
|
||||
return "java:comp/UserTransaction";
|
||||
}
|
||||
|
|
|
@ -1,28 +1,47 @@
|
|||
//$Id: ResinTransactionManagerLookup.java 3890 2004-06-03 16:31:32Z steveebersole $
|
||||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
/**
|
||||
* TransactionManager lookup strategy for Resin
|
||||
* {@link TransactionManagerLookup} strategy for Resin
|
||||
*
|
||||
* @author Aapo Laakkonen
|
||||
*/
|
||||
public class ResinTransactionManagerLookup
|
||||
extends JNDITransactionManagerLookup {
|
||||
public class ResinTransactionManagerLookup extends JNDITransactionManagerLookup {
|
||||
|
||||
/**
|
||||
* @see org.hibernate.transaction.JNDITransactionManagerLookup#getName()
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected String getName() {
|
||||
return "java:comp/TransactionManager";
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public String getUserTransactionName() {
|
||||
return "java:comp/UserTransaction";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,47 @@
|
|||
//$Id: SunONETransactionManagerLookup.java 11274 2007-03-12 00:18:38Z epbernard $
|
||||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
/**
|
||||
* TransactionManager lookup strategy for Sun ONE Application Server 7 and above
|
||||
* {@link TransactionManagerLookup} strategy for Sun ONE Application Server 7 and above
|
||||
*
|
||||
* @author Robert Davidson, Sanjeev Krishnan
|
||||
* @author Robert Davidson
|
||||
* @author Sanjeev Krishnan
|
||||
* @author Emmanuel Bernard
|
||||
*/
|
||||
public class SunONETransactionManagerLookup extends JNDITransactionManagerLookup {
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected String getName() {
|
||||
return "java:appserver/TransactionManager";
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public String getUserTransactionName() {
|
||||
return "java:comp/UserTransaction";
|
||||
}
|
||||
|
|
|
@ -1,4 +1,26 @@
|
|||
//$Id: TransactionFactory.java 9595 2006-03-10 18:14:21Z steve.ebersole@jboss.com $
|
||||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
import java.util.Properties;
|
||||
|
@ -6,23 +28,31 @@ import java.util.Properties;
|
|||
import org.hibernate.ConnectionReleaseMode;
|
||||
import org.hibernate.HibernateException;
|
||||
import org.hibernate.Transaction;
|
||||
import org.hibernate.jdbc.JDBCContext;
|
||||
import org.hibernate.engine.SessionFactoryImplementor;
|
||||
import org.hibernate.jdbc.JDBCContext;
|
||||
|
||||
/**
|
||||
* An abstract factory for <tt>Transaction</tt> instances. Concrete implementations
|
||||
* are specified by <tt>hibernate.transaction.factory_class</tt>.<br>
|
||||
* <br>
|
||||
* Contract for generating Hibernate {@link Transaction} instances.
|
||||
* <p/>
|
||||
* The concrete implementation to be used is specified by the
|
||||
* {@link org.hibernate.cfg.Environment#TRANSACTION_STRATEGY} configuration
|
||||
* setting.
|
||||
* <p/>
|
||||
* Implementors must be threadsafe and should declare a public default constructor.
|
||||
*
|
||||
* @see Transaction
|
||||
*
|
||||
* @author Anton van Straaten, Gavin King
|
||||
* @author Anton van Straaten
|
||||
* @author Gavin King
|
||||
*/
|
||||
public interface TransactionFactory {
|
||||
|
||||
/**
|
||||
* Callback mechanism; a context is always a {@link org.hibernate.Session}
|
||||
* in the Hibernate usage.
|
||||
*/
|
||||
public static interface Context {
|
||||
public SessionFactoryImplementor getFactory();
|
||||
// public boolean isOpen();
|
||||
public boolean isClosed();
|
||||
|
||||
public boolean isFlushModeNever();
|
||||
|
@ -39,35 +69,41 @@ public interface TransactionFactory {
|
|||
* @param jdbcContext The jdbc context to which the transaction belongs
|
||||
* @param context The contract regarding the context in which this transaction will operate.
|
||||
* @return Transaction
|
||||
* @throws HibernateException
|
||||
* @throws HibernateException Indicates a problem generating a transaction instance
|
||||
*/
|
||||
public Transaction createTransaction(JDBCContext jdbcContext, Context context) throws HibernateException;
|
||||
|
||||
/**
|
||||
* Configure from the given properties.
|
||||
* @param props
|
||||
* @throws HibernateException
|
||||
*
|
||||
* @param props The configuration properties.
|
||||
* @throws HibernateException Indicates a problem configuring this factory.
|
||||
*/
|
||||
public void configure(Properties props) throws HibernateException;
|
||||
|
||||
/**
|
||||
* Get the default connection release mode
|
||||
* Get the default connection release mode.
|
||||
*
|
||||
* @return The default release mode associated with this strategy
|
||||
*/
|
||||
public ConnectionReleaseMode getDefaultReleaseMode();
|
||||
|
||||
/**
|
||||
* Do we require access to the JTA TransactionManager for
|
||||
* this strategy?
|
||||
*
|
||||
* @return True if this strategy requires access to the JTA TransactionManager;
|
||||
* false otherwise.
|
||||
*/
|
||||
public boolean isTransactionManagerRequired();
|
||||
|
||||
/**
|
||||
* Are all transaction callbacks local to Hibernate Transactions?
|
||||
* Or can the callbacks originate from some other source (e.g.
|
||||
* a JTA Synchronization).
|
||||
* Or can the callbacks originate from some other source (e.g. a JTA
|
||||
* Synchronization).
|
||||
*
|
||||
* @return true if callbacks only ever originate from
|
||||
* the Hibernate {@link Transaction}; false otherwise.
|
||||
* @return true if callbacks only ever originate from the Hibernate
|
||||
* {@link Transaction}; false otherwise.
|
||||
*/
|
||||
public boolean areCallbacksLocalToHibernateTransactions();
|
||||
|
||||
|
@ -78,9 +114,9 @@ public interface TransactionFactory {
|
|||
* synchronization as well as whether or not to circumvent
|
||||
* auto flushing outside transactions.
|
||||
*
|
||||
* @param jdbcContext
|
||||
* @param transactionContext
|
||||
* @param transaction
|
||||
* @param jdbcContext The JDBC context
|
||||
* @param transactionContext The transaction context
|
||||
* @param transaction The Hibernate transaction
|
||||
* @return true if an underlying transaction is know to be in effect.
|
||||
*/
|
||||
public boolean isTransactionInProgress(JDBCContext jdbcContext, Context transactionContext, Transaction transaction);
|
||||
|
|
|
@ -1,3 +1,26 @@
|
|||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
import java.util.Properties;
|
||||
|
@ -10,47 +33,55 @@ import org.hibernate.cfg.Environment;
|
|||
import org.hibernate.util.ReflectHelper;
|
||||
|
||||
/**
|
||||
* Helper for creating {@link TransactionFactory} instances.
|
||||
*
|
||||
* @author Gavin King
|
||||
*/
|
||||
public final class TransactionFactoryFactory {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(TransactionFactoryFactory.class);
|
||||
private static final Logger log = LoggerFactory.getLogger( TransactionFactoryFactory.class );
|
||||
|
||||
/**
|
||||
* Obtain a TransactionFactory with the transaction handling strategy
|
||||
* specified by the given Properties.
|
||||
* Create an appropriate transaction factory based on the given configuration
|
||||
* properties.
|
||||
*
|
||||
* @param transactionProps transaction properties
|
||||
* @return TransactionFactory
|
||||
* @throws HibernateException
|
||||
*
|
||||
* @return The appropriate transaction factory.
|
||||
*
|
||||
* @throws HibernateException Indicates a problem creating the appropriate
|
||||
* transaction factory.
|
||||
*/
|
||||
public static TransactionFactory buildTransactionFactory(Properties transactionProps) throws HibernateException {
|
||||
|
||||
String strategyClassName = transactionProps.getProperty(Environment.TRANSACTION_STRATEGY);
|
||||
if (strategyClassName==null) {
|
||||
log.info("Using default transaction strategy (direct JDBC transactions)");
|
||||
String strategyClassName = transactionProps.getProperty( Environment.TRANSACTION_STRATEGY );
|
||||
if ( strategyClassName == null ) {
|
||||
log.info( "Using default transaction strategy (direct JDBC transactions)" );
|
||||
return new JDBCTransactionFactory();
|
||||
}
|
||||
log.info("Transaction strategy: " + strategyClassName);
|
||||
log.info( "Transaction strategy: " + strategyClassName );
|
||||
TransactionFactory factory;
|
||||
try {
|
||||
factory = (TransactionFactory) ReflectHelper.classForName(strategyClassName).newInstance();
|
||||
factory = ( TransactionFactory ) ReflectHelper.classForName( strategyClassName ).newInstance();
|
||||
}
|
||||
catch (ClassNotFoundException e) {
|
||||
log.error("TransactionFactory class not found", e);
|
||||
throw new HibernateException("TransactionFactory class not found: " + strategyClassName);
|
||||
catch ( ClassNotFoundException e ) {
|
||||
log.error( "TransactionFactory class not found", e );
|
||||
throw new HibernateException( "TransactionFactory class not found: " + strategyClassName );
|
||||
}
|
||||
catch (IllegalAccessException e) {
|
||||
log.error("Failed to instantiate TransactionFactory", e);
|
||||
throw new HibernateException("Failed to instantiate TransactionFactory: " + e);
|
||||
catch ( IllegalAccessException e ) {
|
||||
log.error( "Failed to instantiate TransactionFactory", e );
|
||||
throw new HibernateException( "Failed to instantiate TransactionFactory: " + e );
|
||||
}
|
||||
catch (java.lang.InstantiationException e) {
|
||||
log.error("Failed to instantiate TransactionFactory", e);
|
||||
throw new HibernateException("Failed to instantiate TransactionFactory: " + e);
|
||||
catch ( java.lang.InstantiationException e ) {
|
||||
log.error( "Failed to instantiate TransactionFactory", e );
|
||||
throw new HibernateException( "Failed to instantiate TransactionFactory: " + e );
|
||||
}
|
||||
factory.configure(transactionProps);
|
||||
factory.configure( transactionProps );
|
||||
return factory;
|
||||
}
|
||||
|
||||
private TransactionFactoryFactory() {}
|
||||
/**
|
||||
* Disallow instantiation
|
||||
*/
|
||||
private TransactionFactoryFactory() {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,33 +1,74 @@
|
|||
//$Id: TransactionManagerLookup.java 3890 2004-06-03 16:31:32Z steveebersole $
|
||||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
import java.util.Properties;
|
||||
import javax.transaction.Transaction;
|
||||
import javax.transaction.TransactionManager;
|
||||
|
||||
import org.hibernate.HibernateException;
|
||||
|
||||
/**
|
||||
* Concrete implementations locate and return the JTA
|
||||
* <tt>TransactionManager</tt>.
|
||||
* Contract for locating the JTA {@link TransactionManager} on given platform.
|
||||
* <p/>
|
||||
* NOTE: this contract has expanded over time, and basically is a platform
|
||||
* abstraction contract for JTA-related information.
|
||||
*
|
||||
* @author Gavin King
|
||||
*/
|
||||
public interface TransactionManagerLookup {
|
||||
|
||||
/**
|
||||
* Obtain the JTA <tt>TransactionManager</tt>
|
||||
* Obtain the JTA {@link TransactionManager}.
|
||||
*
|
||||
* @param props The configuration properties.
|
||||
* @return The JTA {@link TransactionManager}.
|
||||
*
|
||||
* @throws HibernateException Indicates problem locating {@link TransactionManager}.
|
||||
*/
|
||||
public TransactionManager getTransactionManager(Properties props) throws HibernateException;
|
||||
|
||||
/**
|
||||
* Return the JNDI name of the JTA <tt>UserTransaction</tt>
|
||||
* or <tt>null</tt> (optional operation).
|
||||
* Return the JNDI namespace of the JTA
|
||||
* {@link javax.transaction.UserTransaction} for this platform or <tt>null</tt>;
|
||||
* optional operation.
|
||||
*
|
||||
* @return The JNDI namespace where we can locate the
|
||||
* {@link javax.transaction.UserTransaction} for this platform.
|
||||
*/
|
||||
public String getUserTransactionName();
|
||||
|
||||
/**
|
||||
* Determine an identifier for the given transaction appropriate for use in caching/lookup usages.
|
||||
* <p/>
|
||||
* Generally speaking the transaction itself will be returned here. This method was added specifically
|
||||
* for use in WebSphere and other unfriendly JEE containers (although WebSphere is still the only known
|
||||
* such brain-dead, sales-driven impl).
|
||||
*
|
||||
* @param transaction The transaction to be identified.
|
||||
* @return An appropropriate identifier
|
||||
*/
|
||||
public Object getTransactionIdentifier(Transaction transaction);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,26 @@
|
|||
//$Id: TransactionManagerLookupFactory.java 11412 2007-04-17 14:38:51Z max.andersen@jboss.com $
|
||||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
import java.util.Properties;
|
||||
|
@ -13,38 +35,61 @@ import org.hibernate.cfg.Environment;
|
|||
import org.hibernate.util.ReflectHelper;
|
||||
|
||||
/**
|
||||
* Helper for generating {@link TransactionManagerLookup} instances.
|
||||
*
|
||||
* @author Gavin King
|
||||
*/
|
||||
public final class TransactionManagerLookupFactory {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(TransactionManagerLookupFactory.class);
|
||||
|
||||
private TransactionManagerLookupFactory() {}
|
||||
|
||||
public static final TransactionManager getTransactionManager(Properties props) throws HibernateException {
|
||||
log.info("obtaining TransactionManager");
|
||||
return getTransactionManagerLookup(props).getTransactionManager(props);
|
||||
/**
|
||||
* Disallow instantiation
|
||||
*/
|
||||
private TransactionManagerLookupFactory() {
|
||||
}
|
||||
|
||||
public static final TransactionManagerLookup getTransactionManagerLookup(Properties props) throws HibernateException {
|
||||
/**
|
||||
* Convenience method for locating the JTA {@link TransactionManager} from the
|
||||
* given platform config.
|
||||
* <p/>
|
||||
* Same as calling {@link #getTransactionManager}.getTransactionManager( props )
|
||||
*
|
||||
* @param props The properties representing the platform config
|
||||
* @return The located {@link TransactionManager}
|
||||
* @throws HibernateException Indicates a problem either (a) generatng the
|
||||
* {@link TransactionManagerLookup} or (b) asking it to locate the {@link TransactionManager}.
|
||||
*/
|
||||
public static TransactionManager getTransactionManager(Properties props) throws HibernateException {
|
||||
log.info( "obtaining TransactionManager" );
|
||||
return getTransactionManagerLookup( props ).getTransactionManager( props );
|
||||
}
|
||||
|
||||
String tmLookupClass = props.getProperty(Environment.TRANSACTION_MANAGER_STRATEGY);
|
||||
if (tmLookupClass==null) {
|
||||
log.info("No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)");
|
||||
/**
|
||||
* Generate the appropriate {@link TransactionManagerLookup} given the
|
||||
* config settings being passed.
|
||||
*
|
||||
* @param props The config settings
|
||||
* @return The appropriate {@link TransactionManagerLookup}
|
||||
* @throws HibernateException Indicates problem generating {@link TransactionManagerLookup}
|
||||
*/
|
||||
public static TransactionManagerLookup getTransactionManagerLookup(Properties props) throws HibernateException {
|
||||
String tmLookupClass = props.getProperty( Environment.TRANSACTION_MANAGER_STRATEGY );
|
||||
if ( tmLookupClass == null ) {
|
||||
log.info( "No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)" );
|
||||
return null;
|
||||
}
|
||||
else {
|
||||
|
||||
log.info("instantiating TransactionManagerLookup: " + tmLookupClass);
|
||||
|
||||
log.info( "instantiating TransactionManagerLookup: " + tmLookupClass );
|
||||
try {
|
||||
TransactionManagerLookup lookup = (TransactionManagerLookup) ReflectHelper.classForName(tmLookupClass).newInstance();
|
||||
log.info("instantiated TransactionManagerLookup");
|
||||
TransactionManagerLookup lookup = ( TransactionManagerLookup )
|
||||
ReflectHelper.classForName( tmLookupClass ).newInstance();
|
||||
log.info( "instantiated TransactionManagerLookup" );
|
||||
return lookup;
|
||||
}
|
||||
catch (Exception e) {
|
||||
log.error("Could not instantiate TransactionManagerLookup", e);
|
||||
throw new HibernateException("Could not instantiate TransactionManagerLookup '" + tmLookupClass + "'");
|
||||
catch ( Exception e ) {
|
||||
log.error( "Could not instantiate TransactionManagerLookup", e );
|
||||
throw new HibernateException( "Could not instantiate TransactionManagerLookup '" + tmLookupClass + "'" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,26 @@
|
|||
//$Id: WebSphereExtendedJTATransactionLookup.java 11498 2007-05-09 14:55:16Z steve.ebersole@jboss.com $
|
||||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
import java.lang.reflect.InvocationHandler;
|
||||
|
@ -40,14 +62,28 @@ import org.hibernate.util.NamingHelper;
|
|||
*/
|
||||
public class WebSphereExtendedJTATransactionLookup implements TransactionManagerLookup {
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public TransactionManager getTransactionManager(Properties props) {
|
||||
return new TransactionManagerAdapter( props );
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public String getUserTransactionName() {
|
||||
return "java:comp/UserTransaction";
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public Object getTransactionIdentifier(Transaction transaction) {
|
||||
// WebSphere, however, is not a sane JEE/JTA container...
|
||||
return new Integer( transaction.hashCode() );
|
||||
}
|
||||
|
||||
public static class TransactionManagerAdapter implements TransactionManager {
|
||||
private final Properties properties;
|
||||
private final Class synchronizationCallbackClass;
|
||||
|
@ -75,38 +111,65 @@ public class WebSphereExtendedJTATransactionLookup implements TransactionManager
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void begin() throws NotSupportedException, SystemException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void commit() throws UnsupportedOperationException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public int getStatus() throws SystemException {
|
||||
return getTransaction() == null ? Status.STATUS_NO_TRANSACTION : getTransaction().getStatus();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public Transaction getTransaction() throws SystemException {
|
||||
return new TransactionAdapter( properties );
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void resume(Transaction txn) throws UnsupportedOperationException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void rollback() throws UnsupportedOperationException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void setRollbackOnly() throws UnsupportedOperationException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void setTransactionTimeout(int i) throws UnsupportedOperationException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public Transaction suspend() throws UnsupportedOperationException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
@ -125,6 +188,9 @@ public class WebSphereExtendedJTATransactionLookup implements TransactionManager
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void registerSynchronization(final Synchronization synchronization)
|
||||
throws RollbackException, IllegalStateException,
|
||||
SystemException {
|
||||
|
@ -167,16 +233,27 @@ public class WebSphereExtendedJTATransactionLookup implements TransactionManager
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public int hashCode() {
|
||||
return getLocalId().hashCode();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public boolean equals(Object other) {
|
||||
if ( !(other instanceof TransactionAdapter) ) return false;
|
||||
TransactionAdapter that = (TransactionAdapter) other;
|
||||
return getLocalId().equals( that.getLocalId() );
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for property 'localId'.
|
||||
*
|
||||
* @return Value for property 'localId'.
|
||||
*/
|
||||
private Object getLocalId() throws HibernateException {
|
||||
try {
|
||||
return getLocalIdMethod.invoke( extendedJTATransaction, null );
|
||||
|
@ -186,27 +263,45 @@ public class WebSphereExtendedJTATransactionLookup implements TransactionManager
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void commit() throws UnsupportedOperationException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public boolean delistResource(XAResource resource, int i) throws UnsupportedOperationException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public boolean enlistResource(XAResource resource) throws UnsupportedOperationException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public int getStatus() {
|
||||
return new Integer(0).equals( getLocalId() ) ?
|
||||
Status.STATUS_NO_TRANSACTION : Status.STATUS_ACTIVE;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void rollback() throws UnsupportedOperationException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void setRollbackOnly() throws UnsupportedOperationException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
|
|
@ -1,9 +1,32 @@
|
|||
//$Id: WebSphereTransactionManagerLookup.java 8469 2005-10-26 22:03:03Z oneovthafew $
|
||||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
||||
* indicated by the @author tags or express copyright attribution
|
||||
* statements applied by the authors. All third-party contributions are
|
||||
* distributed under license by Red Hat Middleware LLC.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||
* Lesser General Public License, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this distribution; if not, write to:
|
||||
* Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor
|
||||
* Boston, MA 02110-1301 USA
|
||||
*/
|
||||
package org.hibernate.transaction;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.transaction.TransactionManager;
|
||||
import javax.transaction.Transaction;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -11,7 +34,8 @@ import org.slf4j.LoggerFactory;
|
|||
import org.hibernate.HibernateException;
|
||||
|
||||
/**
|
||||
* TransactionManager lookup strategy for WebSphere (versions 4, 5.0 and 5.1)
|
||||
* {@link TransactionManagerLookup} strategy for WebSphere (versions 4, 5.0 and 5.1)
|
||||
*
|
||||
* @author Gavin King
|
||||
*/
|
||||
public class WebSphereTransactionManagerLookup implements TransactionManagerLookup {
|
||||
|
@ -20,49 +44,64 @@ public class WebSphereTransactionManagerLookup implements TransactionManagerLook
|
|||
private final int wsVersion;
|
||||
private final Class tmfClass;
|
||||
|
||||
/**
|
||||
* Constructs a new WebSphereTransactionManagerLookup.
|
||||
*/
|
||||
public WebSphereTransactionManagerLookup() {
|
||||
try {
|
||||
Class clazz;
|
||||
int version;
|
||||
try {
|
||||
clazz = Class.forName("com.ibm.ws.Transaction.TransactionManagerFactory");
|
||||
clazz = Class.forName( "com.ibm.ws.Transaction.TransactionManagerFactory" );
|
||||
version = 5;
|
||||
log.info("WebSphere 5.1");
|
||||
log.info( "WebSphere 5.1" );
|
||||
}
|
||||
catch (Exception e) {
|
||||
catch ( Exception e ) {
|
||||
try {
|
||||
clazz = Class.forName("com.ibm.ejs.jts.jta.TransactionManagerFactory");
|
||||
clazz = Class.forName( "com.ibm.ejs.jts.jta.TransactionManagerFactory" );
|
||||
version = 5;
|
||||
log.info("WebSphere 5.0");
|
||||
log.info( "WebSphere 5.0" );
|
||||
}
|
||||
catch (Exception e2) {
|
||||
clazz = Class.forName("com.ibm.ejs.jts.jta.JTSXA");
|
||||
catch ( Exception e2 ) {
|
||||
clazz = Class.forName( "com.ibm.ejs.jts.jta.JTSXA" );
|
||||
version = 4;
|
||||
log.info("WebSphere 4");
|
||||
log.info( "WebSphere 4" );
|
||||
}
|
||||
}
|
||||
|
||||
tmfClass=clazz;
|
||||
wsVersion=version;
|
||||
tmfClass = clazz;
|
||||
wsVersion = version;
|
||||
}
|
||||
catch (Exception e) {
|
||||
catch ( Exception e ) {
|
||||
throw new HibernateException( "Could not obtain WebSphere TransactionManagerFactory instance", e );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public TransactionManager getTransactionManager(Properties props) throws HibernateException {
|
||||
try {
|
||||
return (TransactionManager) tmfClass.getMethod("getTransactionManager", null).invoke(null, null);
|
||||
return ( TransactionManager ) tmfClass.getMethod( "getTransactionManager", null ).invoke( null, null );
|
||||
}
|
||||
catch (Exception e) {
|
||||
catch ( Exception e ) {
|
||||
throw new HibernateException( "Could not obtain WebSphere TransactionManager", e );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public String getUserTransactionName() {
|
||||
return wsVersion==5 ?
|
||||
"java:comp/UserTransaction":
|
||||
"jta/usertransaction";
|
||||
return wsVersion == 5
|
||||
? "java:comp/UserTransaction"
|
||||
: "jta/usertransaction";
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public Object getTransactionIdentifier(Transaction transaction) {
|
||||
return transaction;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue