首页 > 数据库 > > 瞅瞅Infinispan事务管理源码是啥样的
/**
* Uses JNDI to look-up the {@link TransactionManager} instance from "java:/TransactionManager".
*
* @author Bela Ban, Aug 26 2003
* @since 4.0
*/
public class JBossTransactionManagerLookup implements TransactionManagerLookup {
public TransactionManager getTransactionManager() throws Exception {
String as7Location = "java:jboss/TransactionManager";
InitialContext initialContext = new InitialContext();
try {
// Check for JBoss AS 7
return (TransactionManager) initialContext.lookup(as7Location);
} catch (NamingException ne) {
// Fall back and try for AS 4 ~ 6
String legacyAsLocation = "java:/TransactionManager";
try {
// Check for JBoss AS 4 ~ 6
return (TransactionManager) initialContext.lookup(legacyAsLocation);
} catch (NamingException neAgain) {
throw new ConfigurationException("Unable to locate a transaction manager in JNDI, either in " + as7Location + " or " + legacyAsLocation);
}
} finally {
Util.close(initialContext);
}
}
}
/**
* JTA standalone TM lookup.
*
* @author Jason T. Greene
* @since 4.0
*/
public class JBossStandaloneJTAManagerLookup implements TransactionManagerLookup {
private Method manager, user;
private static final Log log = LogFactory.getLog(JBossStandaloneJTAManagerLookup.class);
@Inject
public void init(Configuration configuration) {
// The TM may be deployed embedded alongside the app, so this needs to be looked up on the same CL as the Cache
try {
manager = Util.loadClass("com.arjuna.ats.jta.TransactionManager", configuration.getClassLoader()).getMethod("transactionManager");
user = Util.loadClass("com.arjuna.ats.jta.UserTransaction", configuration.getClassLoader()).getMethod("userTransaction");
} catch (SecurityException e) {
throw new RuntimeException(e);
} catch (NoSuchMethodException e) {
throw new RuntimeException(e);
}
}
public TransactionManager getTransactionManager() throws Exception {
TransactionManager tm = (TransactionManager) manager.invoke(null);
if (log.isInfoEnabled()) log.retrievingTm(tm);
return tm;
}
public UserTransaction getUserTransaction() throws Exception {
return (UserTransaction) user.invoke(null);
}
}
package database.mysql.xa;
import com.mysql.jdbc.jdbc2.optional.MysqlXADataSource;
/**
* @author yaohw
*
*/
public class XAUtil {
public static MysqlXADataSource getXADataSource(){
MysqlXADataSource xaDS = new MysqlXADataSource();
xaDS.setDatabaseName("mytest");
xaDS.setServerName("127.0.0.1");
xaDS.setPortNumber(3306);
xaDS.setUser("root");
xaDS.setPassword("root");
return xaDS;
}
public static void main(String[] args) {
MysqlXADataSource xaDS = getXADataSource();
System.out.println(xaDS);
}
}
try {
tm.begin();
value = cache.get(key);
if(value == null){
value = adminDAO.findAdminById(Integer.parseInt(key.toString()));
cache.put(key, value);
}
System.out.println("get after put :"+cache.get(key));
Admin a = new Admin();
a.setPassword("hello");
a.setUsername("boy");
adminDAO.addAdmin(a);
// rollback();
tm.commit();
System.out.println("get after rollback :"+cache.get(key));
} catch (Exception e1) {
e1.printStackTrace();
rollback();
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26692020/viewspace-3130605/ ,如需转载,请注明出处,否则将追究法律责任。