如何在Weblogic的全局事务执行多线程操作 - 编程入门网
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-06-22
} 28 29 private UserTransaction getUserTransaction() throws NamingException, SQLException 30 { 31 InitialContext ctx = initializeEnv(null); 32 return (UserTransaction)ctx.lookup ("javax/transaction/UserTransaction"); 33 } 34 35 private InitialContext initializeEnv(String url) throws NamingException 36 { 37 Properties prop = new Properties(); 38 if(url == null) 39 prop.put(Context.PROVIDER_URL, PROVIDER_URL); 40 else 41 prop.put(Context.PROVIDER_URL, url); 42 prop.put(Context.INITIAL_CONTEXT_FACTORY, INITIAL_CONTEXT_FACTORY); 43 return new InitialContext(prop); 44 } 45 46 private void executeInsertInPSMT(Connection conn, String sql) 47 { 48 PreparedStatement pstmt = null; 49 try{ 50 pstmt = conn.prepareStatement(sql); 51 pstmt.setString(1, "data_to_insert"); 52 pstmt.executeUpdate(); 53 pstmt.close (); 54 }catch(SQLException e){ 55 e.printStackTrace(); 56 } 57 } 58 59 public void multiThreadXATest() 60 { 61 ArrayList result = new ArrayList(); 62 try{ 63 UserTransaction userTx = getUserTransaction (); 64 userTx.setTransactionTimeout (1000); 65 userTx.begin(); 66 Transaction tx = TxHelper.getTransaction(); 67 Connection conn = getConnection ("t3://localhost:8011", "TestXADS"); 68 if(conn != null) conn.close(); SQLThread thread1 = new SQLThread(tx,result,"t3://localhost:8011","TestXADS", SQL_INSERT); 69 SQLThread thread2 = new SQLThread(tx,result,"t3://localhost:8021","TestXADS_1", ANO_SQL_INSERT); 70 thread1.start(); 71 thread2.start(); 72 while(result.size() != 2){ 73 Thread.currentThread().sleep(1); 74 } 75 if(checkCompletion(result)){ 76 userTx.commit(); 77 } 78 else{ 79 userTx.rollback(); 80 } 81 }catch(Exception e){ 82 e.printStackTrace(); 83 } 84 } 85 86 private boolean checkCompletion(ArrayList result){ 87 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于如何在Weblogic的全局事务执行多线程操作 - 编程入门网的所有评论