pveselov

transaction manager test JSP #2

May 13th, 2014
462
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.52 KB | None | 0 0
  1. <%@ page import="javax.transaction.TransactionManager" %>
  2. <%@ page import="javax.transaction.TransactionSynchronizationRegistry" %>
  3. <%@ page import="javax.naming.InitialContext" %>
  4. <%@ page import="java.sql.Connection" %>
  5. <%@ page import="javax.sql.DataSource" %>
  6. <%@ page import="java.sql.Statement" %>
  7. <%@ page import="java.sql.ResultSet" %>
  8. <%@ page import="javax.transaction.UserTransaction" %>
  9. <%@ page import="javax.transaction.Transaction" %>
  10. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  11. <html>
  12. <head>
  13. <title></title>
  14. </head>
  15. <body>
  16.  
  17.  
  18. <%!
  19. private static TransactionManager txManager;
  20. private static TransactionSynchronizationRegistry txReg;
  21. private static UserTransaction userTx;
  22.  
  23. static {
  24.  
  25. try {
  26.  
  27. InitialContext ic = new InitialContext();
  28.  
  29. txManager = (TransactionManager)
  30. ic.lookup("java:appserver/TransactionManager");
  31. txReg = (TransactionSynchronizationRegistry)
  32. ic.lookup("java:comp/TransactionSynchronizationRegistry");
  33. userTx = (UserTransaction) ic.lookup("java:comp/UserTransaction");
  34.  
  35. } catch (Throwable th) {
  36. throw new RuntimeException(th);
  37. }
  38.  
  39. }
  40.  
  41. %>
  42.  
  43. Doing rollback test:<br>
  44.  
  45. <%
  46.  
  47. userTx.begin();
  48.  
  49. InitialContext ic = new InitialContext();
  50. DataSource ds = (DataSource) ic.lookup("mi_pe");
  51. Connection conn = ds.getConnection();
  52.  
  53. Statement s = conn.createStatement();
  54. ResultSet rs = s.executeQuery("select nmr from inc_test");
  55. rs.next();
  56. %>
  57.  
  58. Before : <%=rs.getLong("nmr")%><br>
  59.  
  60. <%
  61. s.close();
  62.  
  63. s = conn.createStatement();
  64. s.executeUpdate("update inc_test set nmr = nmr + 1");
  65. s.close();
  66.  
  67. userTx.rollback();
  68. conn.close();
  69.  
  70. userTx.begin();
  71. // re-create another connection in a new transaction
  72.  
  73. ic = new InitialContext();
  74. ds = (DataSource) ic.lookup("mi_pe");
  75. conn = ds.getConnection();
  76. s = conn.createStatement();
  77. rs = s.executeQuery("select nmr from inc_test");
  78. rs.next();
  79.  
  80. %>
  81.  
  82. After : <%=rs.getLong("nmr")%><br>
  83.  
  84. <%
  85.  
  86. s.close();
  87. userTx.rollback();
  88. conn.close();
  89.  
  90. %>
  91.  
  92. Doing suspend/resume text.<br>
  93.  
  94. <%
  95.  
  96. userTx.begin();
  97. ic = new InitialContext();
  98. ds = (DataSource) ic.lookup("mi_pe");
  99. conn = ds.getConnection();
  100. s = conn.createStatement();
  101. s.executeUpdate("update inc_test set nmr = nmr + 1");
  102. s.close();
  103. s = conn.createStatement();
  104. rs = s.executeQuery("select nmr from inc_test");
  105. rs.next();
  106.  
  107. %>
  108.  
  109. Top transaction has value : <%=rs.getLong("nmr")%><br>
  110.  
  111. <%
  112. s.close();
  113.  
  114. Transaction suspended = txManager.suspend();
  115. userTx.begin();
  116.  
  117. ic = new InitialContext();
  118. ds = (DataSource) ic.lookup("mi_pe");
  119. Connection conn2 = ds.getConnection();
  120.  
  121. s = conn2.createStatement();
  122. rs = s.executeQuery("select nmr from inc_test");
  123. rs.next();
  124.  
  125. %>
  126.  
  127. Nested transaction has value : <%=rs.getLong("nmr")%><br>
  128.  
  129. <%
  130.  
  131. userTx.rollback();
  132. conn2.close();
  133.  
  134. txManager.resume(suspended);
  135. s = conn.createStatement();
  136. rs = s.executeQuery("select nmr from inc_test");
  137. rs.next();
  138.  
  139. %>
  140.  
  141. Resumed transaction has value : <%=rs.getLong("nmr")%><br>
  142.  
  143. <%
  144. s.close();
  145. userTx.rollback();
  146. conn.close();
  147. %>
  148.  
  149.  
  150. </body>
  151. </html>
Advertisement
Add Comment
Please, Sign In to add comment