Showing posts with label Transactions. Show all posts
Showing posts with label Transactions. Show all posts

Tuesday, June 12, 2012

Difference between XA resource register && Synchronization Listener && Last resource Gammit


Transaction synchronization

Transaction synchronization allows the application server to be notified before and after the transaction completes. For each transaction started, the application server may optionally register a Synchronization call back object to be invoked by the transaction manager:

The beforeCompletion method is called prior to the start of the two-phase transaction complete process. This call is executed in the same transaction context of the caller who initiates the TransactionManager.commit or the call is executed with no transaction context if Transaction.commit is used.

The afterCompletion method is called after the transaction has completed. The status of the transaction is supplied in the parameter. This method is executed without a transaction context.

Logs With Synchronization


(One mysql Xa resource and rest infinispan caches register as synchronization)

 11: 2012-06-12 10:58:30,604 [serviceTaskExecutor-26] WARN  atomikos.println:107  - Attempt to create a transaction with a timeout that exceeds com.atomikos.icatch.max_timeout - truncating to: 300000
 12: 2012-06-12 10:58:30,605 [serviceTaskExecutor-26] INFO  atomikos.println:110  - createCompositeTransaction ( 500000 ): created new ROOT transaction with id tm_tspex-app-container_10428400061
 14: 2012-06-12 10:58:30,606 [serviceTaskExecutor-26] INFO  atomikos.println:110  - addParticipant ( XAResourceTransaction: 746D5F74737065782D6170702D636F6E7461696E65725F3130343238343030303631:746D5F74737065782D6170702D636F6E7461696E65725F3132393934 ) for transaction tm_tspex-app-container_10428400061
 15: 2012-06-12 10:58:30,607 [serviceTaskExecutor-26] INFO  atomikos.println:110  - XAResource.start ( 746D5F74737065782D6170702D636F6E7461696E65725F3130343238343030303631:746D5F74737065782D6170702D636F6E7461696E65725F3132393934 , XAResource.TMNOFLAGS ) on resource MAIN-ATOMIKOS-CONNECTION represented by XAResource instance com.mysql.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@28333b1e
 16: 2012-06-12 10:58:30,607 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@9325ee79 ) for transaction tm_tspex-app-container_10428400061
 20: 2012-06-12 10:58:30,641 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.icatch.jta.Sync2Sync@60401ebd ) for transaction tm_tspex-app-container_10428400061
 21: 2012-06-12 10:58:30,641 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.icatch.jta.Sync2Sync@4cd63ee8 ) for transaction tm_tspex-app-container_10428400061
 22: 2012-06-12 10:58:30,642 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.icatch.jta.Sync2Sync@6335b062 ) for transaction tm_tspex-app-container_10428400061
 24: 2012-06-12 10:58:30,643 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.icatch.jta.Sync2Sync@61de2f59 ) for transaction tm_tspex-app-container_10428400061
 25: 2012-06-12 10:58:30,643 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.icatch.jta.Sync2Sync@3fb801c4 ) for transaction tm_tspex-app-container_10428400061
 26: 2012-06-12 10:58:30,644 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@9325ee79 ) for transaction tm_tspex-app-container_10428400061
 29: 2012-06-12 10:58:30,645 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@9325ee79 ) for transaction tm_tspex-app-container_10428400061
 33: 2012-06-12 10:58:30,669 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.icatch.jta.Sync2Sync@8658edb ) for transaction tm_tspex-app-container_10428400061
 34: 2012-06-12 10:58:30,670 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@9325ee79 ) for transaction tm_tspex-app-container_10428400061
 35: 2012-06-12 10:58:30,736 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@9325ee79 ) for transaction tm_tspex-app-container_10428400061
 41: 2012-06-12 10:58:30,780 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.icatch.jta.Sync2Sync@443bfd3 ) for transaction tm_tspex-app-container_10428400061
 44: 2012-06-12 10:58:30,781 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.icatch.jta.Sync2Sync@5e2fe41a ) for transaction tm_tspex-app-container_10428400061
 45: 2012-06-12 10:58:30,782 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.icatch.jta.Sync2Sync@199ae4c6 ) for transaction tm_tspex-app-container_10428400061
 55: 2012-06-12 10:58:30,784 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@9325ee79 ) for transaction tm_tspex-app-container_10428400061
 57: 2012-06-12 10:58:30,784 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@9325ee79 ) for transaction tm_tspex-app-container_10428400061
 59: 2012-06-12 10:58:30,785 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@9325ee79 ) for transaction tm_tspex-app-container_10428400061
 60: 2012-06-12 10:58:30,837 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@9325ee79 ) for transaction tm_tspex-app-container_10428400061
 62: 2012-06-12 10:58:30,838 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@9325ee79 ) for transaction tm_tspex-app-container_10428400061
 64: 2012-06-12 10:58:30,840 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.icatch.jta.Sync2Sync@3f5018a0 ) for transaction tm_tspex-app-container_10428400061
 70: 2012-06-12 10:58:30,843 [serviceTaskExecutor-26] INFO  atomikos.println:110  - XAResource.end ( 746D5F74737065782D6170702D636F6E7461696E65725F3130343238343030303631:746D5F74737065782D6170702D636F6E7461696E65725F3132393934 , XAResource.TMSUCCESS ) on resource MAIN-ATOMIKOS-CONNECTION represented by XAResource instance com.mysql.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@28333b1e
 72: 2012-06-12 10:58:30,844 [serviceTaskExecutor-26] INFO  atomikos.println:110  - commit() done (by application) of transaction tm_tspex-app-container_10428400061
 73: 2012-06-12 10:58:30,889 [Atomikos:488] INFO  atomikos.println:110  - XAResource.prepare ( 746D5F74737065782D6170702D636F6E7461696E65725F3130343238343030303631:746D5F74737065782D6170702D636F6E7461696E65725F3132393934 ) returning OK on resource MAIN-ATOMIKOS-CONNECTION represented by XAResource instance com.mysql.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@28333b1e
 74: 2012-06-12 10:58:30,890 [Atomikos:488] INFO  atomikos.println:110  - XAResource.commit ( 746D5F74737065782D6170702D636F6E7461696E65725F3130343238343030303631:746D5F74737065782D6170702D636F6E7461696E65725F3132393934 , false ) on resource MAIN-ATOMIKOS-CONNECTION represented by XAResource instance com.mysql.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@28333b1e
 75: 2012-06-12 10:58:30,913 [serviceTaskExecutor-26] INFO  atomikos.println:110  - afterCompletion ( STATUS_COMMITTED ) called  on Synchronization: SynchronizationAdapter{localTransaction=LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10428400061, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.synchronization.SyncLocalTransaction@f19} org.infinispan.transaction.synchronization.SynchronizationAdapter@f38
 76: 2012-06-12 10:58:30,913 [serviceTaskExecutor-26] INFO  atomikos.println:110  - afterCompletion ( STATUS_COMMITTED ) called  on Synchronization: SynchronizationAdapter{localTransaction=LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10428400061, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.synchronization.SyncLocalTransaction@f18} org.infinispan.transaction.synchronization.SynchronizationAdapter@f37
 77: 2012-06-12 10:58:30,914 [serviceTaskExecutor-26] INFO  atomikos.println:110  - afterCompletion ( STATUS_COMMITTED ) called  on Synchronization: SynchronizationAdapter{localTransaction=LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10428400061, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.synchronization.SyncLocalTransaction@f16} org.infinispan.transaction.synchronization.SynchronizationAdapter@f35
 80: 2012-06-12 10:58:30,916 [serviceTaskExecutor-26] INFO  atomikos.println:110  - afterCompletion ( STATUS_COMMITTED ) called  on Synchronization: SynchronizationAdapter{localTransaction=LocalTransaction{remoteLockedNodes=[TSSEDEV5-34849], isMarkedForRollback=false, transaction=tm_tspex-app-container_10428400061, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.synchronization.SyncLocalTransaction@f1a} org.infinispan.transaction.synchronization.SynchronizationAdapter@f39
 81: 2012-06-12 10:58:30,916 [serviceTaskExecutor-26] INFO  atomikos.println:110  - afterCompletion ( STATUS_COMMITTED ) called  on Synchronization: SynchronizationAdapter{localTransaction=LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10428400061, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.synchronization.SyncLocalTransaction@f17} org.infinispan.transaction.synchronization.SynchronizationAdapter@f36
 82: 2012-06-12 10:58:30,917 [serviceTaskExecutor-26] INFO  atomikos.println:110  - afterCompletion ( STATUS_COMMITTED ) called  on Synchronization: SynchronizationAdapter{localTransaction=LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10428400061, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.synchronization.SyncLocalTransaction@f15} org.infinispan.transaction.synchronization.SynchronizationAdapter@f34
 83: 2012-06-12 10:58:30,917 [serviceTaskExecutor-26] INFO  atomikos.println:110  - afterCompletion ( STATUS_COMMITTED ) called  on Synchronization: SynchronizationAdapter{localTransaction=LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10428400061, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.synchronization.SyncLocalTransaction@f14} org.infinispan.transaction.synchronization.SynchronizationAdapter@f33
 84: 2012-06-12 10:58:30,917 [serviceTaskExecutor-26] INFO  atomikos.println:110  - afterCompletion ( STATUS_COMMITTED ) called  on Synchronization: SynchronizationAdapter{localTransaction=LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10428400061, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.synchronization.SyncLocalTransaction@f13} org.infinispan.transaction.synchronization.SynchronizationAdapter@f32
 85: 2012-06-12 10:58:30,918 [serviceTaskExecutor-26] INFO  atomikos.println:110  - afterCompletion ( STATUS_COMMITTED ) called  on Synchronization: SynchronizationAdapter{localTransaction=LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10428400061, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.synchronization.SyncLocalTransaction@f11} org.infinispan.transaction.synchronization.SynchronizationAdapter@f30
 86: 2012-06-12 10:58:30,918 [serviceTaskExecutor-26] INFO  atomikos.println:110  - afterCompletion ( STATUS_COMMITTED ) called  on Synchronization: SynchronizationAdapter{localTransaction=LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10428400061, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.synchronization.SyncLocalTransaction@f12} org.infinispan.transaction.synchronization.SynchronizationAdapter@f31
105: 2012-06-12 10:58:30,924 [serviceTaskExecutor-26] WARN  atomikos.println:107  - Attempt to create a transaction with a timeout that exceeds com.atomikos.icatch.max_timeout - truncating to: 300000
106: 2012-06-12 10:58:30,925 [serviceTaskExecutor-26] INFO  atomikos.println:110  - createCompositeTransaction ( 500000 ): created new ROOT transaction with id tm_tspex-app-container_10428500061
107: 2012-06-12 10:58:30,925 [serviceTaskExecutor-26] INFO  atomikos.println:110  - addParticipant ( XAResourceTransaction: 746D5F74737065782D6170702D636F6E7461696E65725F3130343238353030303631:746D5F74737065782D6170702D636F6E7461696E65725F3132393935 ) for transaction tm_tspex-app-container_10428500061
108: 2012-06-12 10:58:30,926 [serviceTaskExecutor-26] INFO  atomikos.println:110  - XAResource.start ( 746D5F74737065782D6170702D636F6E7461696E65725F3130343238353030303631:746D5F74737065782D6170702D636F6E7461696E65725F3132393935 , XAResource.TMNOFLAGS ) on resource MAIN-ATOMIKOS-CONNECTION represented by XAResource instance com.mysql.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@28333b1e
109: 2012-06-12 10:58:30,926 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@94dac718 ) for transaction tm_tspex-app-container_10428500061
110: 2012-06-12 10:58:30,927 [serviceTaskExecutor-26] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@94dac718 ) for transaction tm_tspex-app-container_10428500061
111: 2012-06-12 10:58:30,928 [serviceTaskExecutor-26] INFO  atomikos.println:110  - XAResource.end ( 746D5F74737065782D6170702D636F6E7461696E65725F3130343238353030303631:746D5F74737065782D6170702D636F6E7461696E65725F3132393935 , XAResource.TMSUCCESS ) on resource MAIN-ATOMIKOS-CONNECTION represented by XAResource instance com.mysql.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@28333b1e
113: 2012-06-12 10:58:30,929 [serviceTaskExecutor-26] INFO  atomikos.println:110  - commit() done (by application) of transaction tm_tspex-app-container_10428500061
116: 2012-06-12 10:58:30,930 [MatchingEngine-8] WARN  atomikos.println:107  - Attempt to create a transaction with a timeout that exceeds com.atomikos.icatch.max_timeout - truncating to: 300000
117: 2012-06-12 10:58:30,930 [MatchingEngine-8] INFO  atomikos.println:110  - createCompositeTransaction ( 500000 ): created new ROOT transaction with id tm_tspex-app-container_10428600061
118: 2012-06-12 10:58:30,931 [MatchingEngine-8] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.icatch.jta.Sync2Sync@54f3b495 ) for transaction tm_tspex-app-container_10428600061
119: 2012-06-12 10:58:30,931 [MatchingEngine-8] INFO  atomikos.println:110  - commit() done (by application) of transaction tm_tspex-app-container_10428600061
120: 2012-06-12 10:58:30,932 [MatchingEngine-8] INFO  atomikos.println:110  - afterCompletion ( STATUS_COMMITTED ) called  on Synchronization: SynchronizationAdapter{localTransaction=LocalTransaction{remoteLockedNodes=[TSSEDEV5-34849], isMarkedForRollback=false, transaction=tm_tspex-app-container_10428600061, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.synchronization.SyncLocalTransaction@f1b} org.infinispan.transaction.synchronization.SynchronizationAdapter@f3a
123: 2012-06-12 10:58:30,947 [Atomikos:488] INFO  atomikos.println:110  - XAResource.prepare ( 746D5F74737065782D6170702D636F6E7461696E65725F3130343238353030303631:746D5F74737065782D6170702D636F6E7461696E65725F3132393935 ) returning OK on resource MAIN-ATOMIKOS-CONNECTION represented by XAResource instance com.mysql.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@28333b1e
124: 2012-06-12 10:58:30,948 [Atomikos:488] INFO  atomikos.println:110  - XAResource.commit ( 746D5F74737065782D6170702D636F6E7461696E65725F3130343238353030303631:746D5F74737065782D6170702D636F6E7461696E65725F3132393935 , false ) on resource MAIN-ATOMIKOS-CONNECTION represented by XAResource instance com.mysql.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@28333b1e

With XA Resource
(Mysql and Infinispan caches as XA resources)

With XA, each resource get added to a list when it is used, and when the transaction is committed separate prepare calls are sent to each of the resources. Once the prepare calls are successful, commit calls are sent to each of the resources to commit the transactions.



 10: 2012-06-12 11:13:39,506 [serviceTaskExecutor-5] INFO  atomikos.println:110  - createCompositeTransaction ( 300000 ): created new ROOT transaction with id tm_tspex-app-container_10173700062
 12: 2012-06-12 11:13:39,508 [serviceTaskExecutor-5] INFO  atomikos.println:110  - addParticipant ( XAResourceTransaction: 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:746D5F74737065782D6170702D636F6E7461696E65725F3131373436 ) for transaction tm_tspex-app-container_10173700062
 13: 2012-06-12 11:13:39,509 [serviceTaskExecutor-5] INFO  atomikos.println:110  - XAResource.start ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:746D5F74737065782D6170702D636F6E7461696E65725F3131373436 , XAResource.TMNOFLAGS ) on resource MAIN-ATOMIKOS-CONNECTION represented by XAResource instance com.mysql.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@4e49879a
 14: 2012-06-12 11:13:39,510 [serviceTaskExecutor-5] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@da5de36a ) for transaction tm_tspex-app-container_10173700062
 18: 2012-06-12 11:13:39,513 [serviceTaskExecutor-5] INFO  atomikos.println:110  - addParticipant ( XAResourceTransaction: 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373437 ) for transaction tm_tspex-app-container_10173700062
 19: 2012-06-12 11:13:39,514 [serviceTaskExecutor-5] INFO  atomikos.println:110  - XAResource.start ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373437 , XAResource.TMNOFLAGS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=null} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@4ff}
 20: 2012-06-12 11:13:39,515 [serviceTaskExecutor-5] INFO  atomikos.println:110  - addParticipant ( XAResourceTransaction: 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373438 ) for transaction tm_tspex-app-container_10173700062
 21: 2012-06-12 11:13:39,516 [serviceTaskExecutor-5] INFO  atomikos.println:110  - XAResource.start ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373438 , XAResource.TMNOFLAGS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=null} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@500}
 22: 2012-06-12 11:13:39,517 [serviceTaskExecutor-5] INFO  atomikos.println:110  - addParticipant ( XAResourceTransaction: 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373439 ) for transaction tm_tspex-app-container_10173700062
 23: 2012-06-12 11:13:39,518 [serviceTaskExecutor-5] INFO  atomikos.println:110  - XAResource.start ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373439 , XAResource.TMNOFLAGS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=null} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@501}
 24: 2012-06-12 11:13:39,519 [serviceTaskExecutor-5] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@da5de36a ) for transaction tm_tspex-app-container_10173700062
 27: 2012-06-12 11:13:39,522 [serviceTaskExecutor-5] INFO  atomikos.println:110  - addParticipant ( XAResourceTransaction: 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373530 ) for transaction tm_tspex-app-container_10173700062
 28: 2012-06-12 11:13:39,523 [serviceTaskExecutor-5] INFO  atomikos.println:110  - XAResource.start ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373530 , XAResource.TMNOFLAGS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=null} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@502}
 29: 2012-06-12 11:13:39,543 [serviceTaskExecutor-5] INFO  atomikos.println:110  - addParticipant ( XAResourceTransaction: 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373531 ) for transaction tm_tspex-app-container_10173700062
 30: 2012-06-12 11:13:39,544 [serviceTaskExecutor-5] INFO  atomikos.println:110  - XAResource.start ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373531 , XAResource.TMNOFLAGS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=null} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@503}
 31: 2012-06-12 11:13:39,544 [serviceTaskExecutor-5] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@da5de36a ) for transaction tm_tspex-app-container_10173700062
 34: 2012-06-12 11:13:39,546 [serviceTaskExecutor-5] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@da5de36a ) for transaction tm_tspex-app-container_10173700062
 38: 2012-06-12 11:13:39,548 [serviceTaskExecutor-5] INFO  atomikos.println:110  - addParticipant ( XAResourceTransaction: 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373532 ) for transaction tm_tspex-app-container_10173700062
 39: 2012-06-12 11:13:39,548 [serviceTaskExecutor-5] INFO  atomikos.println:110  - XAResource.start ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373532 , XAResource.TMNOFLAGS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=null} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@504}
 40: 2012-06-12 11:13:39,549 [serviceTaskExecutor-5] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@da5de36a ) for transaction tm_tspex-app-container_10173700062
 41: 2012-06-12 11:13:39,560 [serviceTaskExecutor-5] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@da5de36a ) for transaction tm_tspex-app-container_10173700062
 52: 2012-06-12 11:13:39,715 [serviceTaskExecutor-5] INFO  atomikos.println:110  - addParticipant ( XAResourceTransaction: 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373533 ) for transaction tm_tspex-app-container_10173700062
 53: 2012-06-12 11:13:39,715 [serviceTaskExecutor-5] INFO  atomikos.println:110  - XAResource.start ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373533 , XAResource.TMNOFLAGS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=null} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@505}
 56: 2012-06-12 11:13:39,721 [serviceTaskExecutor-5] INFO  atomikos.println:110  - addParticipant ( XAResourceTransaction: 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373534 ) for transaction tm_tspex-app-container_10173700062
 57: 2012-06-12 11:13:39,722 [serviceTaskExecutor-5] INFO  atomikos.println:110  - XAResource.start ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373534 , XAResource.TMNOFLAGS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=null} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@506}
 58: 2012-06-12 11:13:39,722 [serviceTaskExecutor-5] INFO  atomikos.println:110  - addParticipant ( XAResourceTransaction: 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:746D5F74737065782D6170702D636F6E7461696E65725F3131373535 ) for transaction tm_tspex-app-container_10173700062
 59: 2012-06-12 11:13:39,722 [serviceTaskExecutor-5] INFO  atomikos.println:110  - XAResource.start ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:746D5F74737065782D6170702D636F6E7461696E65725F3131373535 , XAResource.TMNOFLAGS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=null} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@507}
 68: 2012-06-12 11:13:39,725 [serviceTaskExecutor-5] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@da5de36a ) for transaction tm_tspex-app-container_10173700062
 70: 2012-06-12 11:13:39,726 [serviceTaskExecutor-5] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@da5de36a ) for transaction tm_tspex-app-container_10173700062
 71: 2012-06-12 11:13:39,727 [serviceTaskExecutor-5] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@da5de36a ) for transaction tm_tspex-app-container_10173700062
 72: 2012-06-12 11:13:39,728 [serviceTaskExecutor-5] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@da5de36a ) for transaction tm_tspex-app-container_10173700062
 74: 2012-06-12 11:13:39,729 [serviceTaskExecutor-5] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@da5de36a ) for transaction tm_tspex-app-container_10173700062
 76: 2012-06-12 11:13:39,730 [serviceTaskExecutor-5] INFO  atomikos.println:110  - addParticipant ( XAResourceTransaction: 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373536 ) for transaction tm_tspex-app-container_10173700062
 77: 2012-06-12 11:13:39,730 [serviceTaskExecutor-5] INFO  atomikos.println:110  - XAResource.start ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373536 , XAResource.TMNOFLAGS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=null} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@508}
 85: 2012-06-12 11:13:39,733 [serviceTaskExecutor-5] INFO  atomikos.println:110  - XAResource.end ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:746D5F74737065782D6170702D636F6E7461696E65725F3131373436 , XAResource.TMSUCCESS ) on resource MAIN-ATOMIKOS-CONNECTION represented by XAResource instance com.mysql.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@4e49879a
 86: 2012-06-12 11:13:39,733 [serviceTaskExecutor-5] INFO  atomikos.println:110  - commit() done (by application) of transaction tm_tspex-app-container_10173700062
 87: 2012-06-12 11:13:39,733 [Atomikos:6] INFO  atomikos.println:110  - XAResource.end ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373437 , XAResource.TMSUCCESS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1747} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@4ff}
 88: 2012-06-12 11:13:39,734 [Atomikos:10] INFO  atomikos.println:110  - XAResource.end ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373534 , XAResource.TMSUCCESS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1754} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@506}
 89: 2012-06-12 11:13:39,737 [Atomikos:10] INFO  atomikos.println:110  - XAResource.prepare ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373534 ) returning OK on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1754} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@506}
 90: 2012-06-12 11:13:39,734 [Atomikos:7] INFO  atomikos.println:110  - XAResource.end ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373532 , XAResource.TMSUCCESS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1752} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@504}
 91: 2012-06-12 11:13:39,737 [Atomikos:12] INFO  atomikos.println:110  - XAResource.end ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373536 , XAResource.TMSUCCESS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1756} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@508}
 92: 2012-06-12 11:13:39,739 [Atomikos:12] INFO  atomikos.println:110  - XAResource.prepare ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373536 ) returning OK on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1756} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@508}
 93: 2012-06-12 11:13:39,734 [Atomikos:3] INFO  atomikos.println:110  - XAResource.end ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373438 , XAResource.TMSUCCESS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1748} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@500}
 94: 2012-06-12 11:13:39,739 [Atomikos:3] INFO  atomikos.println:110  - XAResource.prepare ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373438 ) returning OK on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1748} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@500}
 95: 2012-06-12 11:13:39,734 [Atomikos:5] INFO  atomikos.println:110  - XAResource.end ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373531 , XAResource.TMSUCCESS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1751} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@503}
 96: 2012-06-12 11:13:39,740 [Atomikos:5] INFO  atomikos.println:110  - XAResource.prepare ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373531 ) returning OK on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1751} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@503}
 97: 2012-06-12 11:13:39,734 [Atomikos:4] INFO  atomikos.println:110  - XAResource.end ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373439 , XAResource.TMSUCCESS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1749} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@501}
 98: 2012-06-12 11:13:39,740 [Atomikos:4] INFO  atomikos.println:110  - XAResource.prepare ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373439 ) returning OK on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1749} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@501}
 99: 2012-06-12 11:13:39,734 [Atomikos:1] INFO  atomikos.println:110  - XAResource.end ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373530 , XAResource.TMSUCCESS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1750} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@502}
100: 2012-06-12 11:13:39,737 [Atomikos:7] INFO  atomikos.println:110  - XAResource.prepare ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373532 ) returning OK on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1752} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@504}
101: 2012-06-12 11:13:39,737 [Atomikos:9] INFO  atomikos.println:110  - XAResource.end ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373533 , XAResource.TMSUCCESS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1753} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@505}
102: 2012-06-12 11:13:39,734 [Atomikos:6] INFO  atomikos.println:110  - XAResource.prepare ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373437 ) returning OK on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1747} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@4ff}
103: 2012-06-12 11:13:39,734 [Atomikos:11] INFO  atomikos.println:110  - XAResource.end ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:746D5F74737065782D6170702D636F6E7461696E65725F3131373535 , XAResource.TMSUCCESS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062tm_tspex-app-container_11755} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@507}
104: 2012-06-12 11:13:39,743 [Atomikos:11] INFO  atomikos.println:110  - XAResource.prepare ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:746D5F74737065782D6170702D636F6E7461696E65725F3131373535 ) returning OK on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062tm_tspex-app-container_11755} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@507}
105: 2012-06-12 11:13:39,742 [Atomikos:9] INFO  atomikos.println:110  - XAResource.prepare ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373533 ) returning OK on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1753} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@505}
106: 2012-06-12 11:13:39,740 [Atomikos:1] INFO  atomikos.println:110  - XAResource.prepare ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373530 ) returning OK on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1750} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@502}
107: 2012-06-12 11:13:39,767 [Atomikos:8] INFO  atomikos.println:110  - XAResource.prepare ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:746D5F74737065782D6170702D636F6E7461696E65725F3131373436 ) returning OK on resource MAIN-ATOMIKOS-CONNECTION represented by XAResource instance com.mysql.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@4e49879a
108: 2012-06-12 11:13:39,767 [Atomikos:8] INFO  atomikos.println:110  - XAResource.commit ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:746D5F74737065782D6170702D636F6E7461696E65725F3131373436 , false ) on resource MAIN-ATOMIKOS-CONNECTION represented by XAResource instance com.mysql.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@4e49879a
109: 2012-06-12 11:13:39,767 [Atomikos:3] INFO  atomikos.println:110  - XAResource.commit ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373534 , false ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1754} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@506}
110: 2012-06-12 11:13:39,767 [Atomikos:5] INFO  atomikos.println:110  - XAResource.commit ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373533 , false ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1753} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@505}
111: 2012-06-12 11:13:39,767 [Atomikos:4] INFO  atomikos.println:110  - XAResource.commit ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373532 , false ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1752} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@504}
112: 2012-06-12 11:13:39,767 [Atomikos:11] INFO  atomikos.println:110  - XAResource.commit ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373439 , false ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1749} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@501}
113: 2012-06-12 11:13:39,767 [Atomikos:7] INFO  atomikos.println:110  - XAResource.commit ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373531 , false ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1751} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@503}
114: 2012-06-12 11:13:39,767 [Atomikos:9] INFO  atomikos.println:110  - XAResource.commit ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373438 , false ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1748} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@500}
115: 2012-06-12 11:13:39,767 [Atomikos:1] INFO  atomikos.println:110  - XAResource.commit ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373437 , false ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1747} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@4ff}
117: 2012-06-12 11:13:39,767 [Atomikos:12] INFO  atomikos.println:110  - XAResource.commit ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:746D5F74737065782D6170702D636F6E7461696E65725F3131373535 , false ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062tm_tspex-app-container_11755} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@507}
118: 2012-06-12 11:13:39,767 [Atomikos:6] INFO  atomikos.println:110  - XAResource.commit ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373530 , false ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1750} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@502}
119: 2012-06-12 11:13:39,767 [Atomikos:10] INFO  atomikos.println:110  - XAResource.commit ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733373030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373536 , false ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173700062TransactionXaAdapter{localTransaction=LocalXa1756} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173700062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@508}
139: 2012-06-12 11:13:39,811 [MatchingEngine-8] INFO  atomikos.println:110  - createCompositeTransaction ( 300000 ): created new ROOT transaction with id tm_tspex-app-container_10173800062
140: 2012-06-12 11:13:39,811 [MatchingEngine-8] INFO  atomikos.println:110  - addParticipant ( XAResourceTransaction: 746D5F74737065782D6170702D636F6E7461696E65725F3130313733383030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373537 ) for transaction tm_tspex-app-container_10173800062
141: 2012-06-12 11:13:39,811 [MatchingEngine-8] INFO  atomikos.println:110  - XAResource.start ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733383030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373537 , XAResource.TMNOFLAGS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=null} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173800062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@509}
142: 2012-06-12 11:13:39,812 [MatchingEngine-8] INFO  atomikos.println:110  - commit() done (by application) of transaction tm_tspex-app-container_10173800062
143: 2012-06-12 11:13:39,812 [Atomikos:8] INFO  atomikos.println:110  - XAResource.end ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733383030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373537 , XAResource.TMSUCCESS ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173800062TransactionXaAdapter{localTransaction=LocalXa1757} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173800062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@509}
144: 2012-06-12 11:13:39,812 [Atomikos:8] INFO  atomikos.println:110  - XAResource.commit ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733383030303632:5472616E73616374696F6E5861416461707465727B6C6F63616C5472616E73616374696F6E3D4C6F63616C586131373537 , true ) on resource TransactionXaAdapter{localTransaction=LocalXa represented by XAResource instance TransactionXaAdapter{localTransaction=LocalXaTransaction{xid=tm_tspex-app-container_10173800062TransactionXaAdapter{localTransaction=LocalXa1757} LocalTransaction{remoteLockedNodes=null, isMarkedForRollback=false, transaction=tm_tspex-app-container_10173800062, lockedKeys=null, backupKeyLocks=null, viewId=0} org.infinispan.transaction.xa.LocalXaTransaction@509}
156: 2012-06-12 11:13:39,820 [serviceTaskExecutor-5] INFO  atomikos.println:110  - createCompositeTransaction ( 300000 ): created new ROOT transaction with id tm_tspex-app-container_10173900062
157: 2012-06-12 11:13:39,821 [serviceTaskExecutor-5] INFO  atomikos.println:110  - addParticipant ( XAResourceTransaction: 746D5F74737065782D6170702D636F6E7461696E65725F3130313733393030303632:746D5F74737065782D6170702D636F6E7461696E65725F3131373538 ) for transaction tm_tspex-app-container_10173900062
158: 2012-06-12 11:13:39,822 [serviceTaskExecutor-5] INFO  atomikos.println:110  - XAResource.start ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733393030303632:746D5F74737065782D6170702D636F6E7461696E65725F3131373538 , XAResource.TMNOFLAGS ) on resource MAIN-ATOMIKOS-CONNECTION represented by XAResource instance com.mysql.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@4e49879a
159: 2012-06-12 11:13:39,822 [serviceTaskExecutor-5] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@ddc794a8 ) for transaction tm_tspex-app-container_10173900062
160: 2012-06-12 11:13:39,823 [serviceTaskExecutor-5] INFO  atomikos.println:110  - registerSynchronization ( com.atomikos.jdbc.AtomikosConnectionProxy$JdbcRequeueSynchronization@ddc794a8 ) for transaction tm_tspex-app-container_10173900062
161: 2012-06-12 11:13:39,824 [serviceTaskExecutor-5] INFO  atomikos.println:110  - XAResource.end ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733393030303632:746D5F74737065782D6170702D636F6E7461696E65725F3131373538 , XAResource.TMSUCCESS ) on resource MAIN-ATOMIKOS-CONNECTION represented by XAResource instance com.mysql.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@4e49879a
162: 2012-06-12 11:13:39,824 [serviceTaskExecutor-5] INFO  atomikos.println:110  - commit() done (by application) of transaction tm_tspex-app-container_10173900062
163: 2012-06-12 11:13:39,843 [Atomikos:8] INFO  atomikos.println:110  - XAResource.prepare ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733393030303632:746D5F74737065782D6170702D636F6E7461696E65725F3131373538 ) returning OK on resource MAIN-ATOMIKOS-CONNECTION represented by XAResource instance com.mysql.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@4e49879a
164: 2012-06-12 11:13:39,843 [Atomikos:8] INFO  atomikos.println:110  - XAResource.commit ( 746D5F74737065782D6170702D636F6E7461696E65725F3130313733393030303632:746D5F74737065782D6170702D636F6E7461696E65725F3131373538 , false ) on resource MAIN-ATOMIKOS-CONNECTION represented by XAResource instance com.mysql.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@4e49879a




Last Resource Commit Optimization (LRCO)

Although the XA transaction protocol is designed to provide ACID properties by using a two-phase commit protocol, model may not always be appropriate. Sometimes it is necessary to allow a non-XA-aware resource manager to participate in a transaction. This is often the case with data stores that do not support distributed transactions.

In this situation, you can use a technique known as Last Resource Commit Optimization (LRCO). This is sometimes called the Last Resource Gambit. The one-phase-aware resource is processed last in the prepare phase of the transaction, at which time an attempt is made to commit it. If the attempt is successful, the transaction log is written and the remaining resources go through the phase-two commit. If the last resource fails to commit, the transaction is rolled back. Although this protocol allows most transactions to complete normally, some errors can cause an inconsistent transaction outcome. For this reason, use LRCO as a last resort. When a single is used in a transaction, the LRCO is automatically applied to it. In other situations, you can designate a last resource by using a special marker interface. Refer to the JBoss Transactions Programmer's Guide for more details.


Ref : http://docs.redhat.com/docs


Saturday, November 7, 2009

Spring Training -Day 3

Transaction Management

ACID-Atomic,Consistent,Isolated,Durable

Only way to handle transaction is hold on to the same connection –only way of doing it.

JTA – not good , scalability becomes difficult .

Ex: EBay – develop undo behaviour –compensatory action – 3rd part its the only option- for every method need a undo method.

Can use any datasource – no need to tieing it to spring jdbc datasource

Lots of transaction management – datatSourceTransactionMgr,HibernateTransactionMgr,Jps…,Jta..

Connection pool – use apache DBCP or c3p0

<tx:annotation driven> - registering for annotations

<bean id=”transactionManager” class=”…:> … datasource as property </>

transactionManager – should be the name – else have to explicitly mention in the <tx:annotation ……transaction manger=””.>

@Transactional at class level – all public method(because proxy sees only public method) will be transactional

Can have timeout – default is 60 secs

Datasource , transaction – better use xmls – infrastructure components (Aspects annotation are better)

Xml based approach - define transaction mgr, then define transaction interceptor- <tx:advice… > define pointcut

Tx:advice – is just used for overiding , not required

Xml approach advantage - can take these point cut definition from property files.

Set isolation levels – else though not committed , one thread can see the other

For recursive methods with @transaction – the same transaction context will be used.

Transaction Propagation – Propagation.REQUIRES_New – new one transaction context will be created per transaction.

So for iterative ones – if inner @Transaction is marked for required_new ,inner one will be committed irrespective of the other.

Can avoid rollback –with noRollBack option

Annotations
---------------

@Autowired –field level ,method level and constructor level

<context:annotation-config/>

@Autowired default by Type .-for all auto wired injections including and filed injections.

@Autowired
Test x; though x is name of any bean it will look for type Test.

@Autowired for field injection – Doesnt require setters.

Multiple types or no types will give error.

@Autowired not only for setter – for any method,field,constructor

Autowired for collections – List<Types> - all these types will be autowired into the list.

@Autowired(required=false) – does not fail when no type is found

@Qualifier – filtering when injecting by type – properties have to be mentioned in the bean
[default is name – when no name for bean is mentioned it is taken as id- That is why we say ctx.getBeanByName() and still use id it works]

@Resource –JSR 250 – injection by name – equivalent to ref in xml – not specific to Spring its in JSR 250

@Resource – also for JNDI references

@Component - alternative for writing bean definition in xml can be use with @Scope

@Component can also have bean name-else classname will be taken as bean name with first letter as small letter

<context:component scope> is required to identify components. – no need for annotation config as this is a superset of it.

<context:component scope> - can have filters – includes , excludes etc – without this Component will not work

Component scanner is above annotation processor. – so need to register annotation processor when using component scanner.

@value annotation will work with spring 3.0 – no support in spring 2.5

Both xml and annotation beans - if they have same name xml will override annotations , if the bean names are different 2 instances will be created.

Testing
-----------

Junit 4 – has annotations

Test runner - @Runwith (SpringJunit4ClassRunner.class)

@ContextConfiguration - with location of appContext.xml

Follow naming convention to avoid giving location - <testcasename>-context.xml

In case we need access to applicationCtx beans write private field and write @Autowired over it.

Name of bean if annotated with @Component –same as class name with first letter as small letter

With map it will put key as bean name when autowired.

@autowire with qualifier is very useful

Stubs and Mocks are different

Mock libraries - EasyMock,Jmock ,Mokito

Mockito: http://mockito.org/

Example with mockito – works by proxy- how to ensure method is called n number of times

During db tests – data inserted is automatically deleted , default can override if required.

SpringWeb
------------------

Web Layer should be very thin layer speaking to the backend service layer.

Spring Web Flow - Same url will be used , server maintains a state based on which flow will continue.

ContextLoadListener in web.xml - Root ApplicatonContext

WebApplicationContextLoader - register in servletContext – For WebApplicationContext

Using DispatcherServlet

2 contexts , RootApplicationContext and WebApplicationContext.

Web (DispatcherServlet) context can rootContext but not the other way round.

Spring MVC – annotation suited

WebApplicationContextUtils – static helper for accessing spring beans in web context.

Processing Flow -> Request -> Dispatcher Servlet -> Handler (Controller) -> Result View(send to DispatcherServlet) -> View

@Controller- equivalent to struts actions classes but can have multiple mapping for different url’s per method inside it.

@RequestMapping -for mapng urls

@RequestParam – mapping fields from HttpRequest.

Controller returns View name – default is path to jsp page

If controller returns null – then default view based on request url.

DispatcherServlet delegates to viewResolver to map returned view names to view implementations.

Default View resolver treats view name as Web –App relative path.

View Resolver – can take prefix and suffix as params.

If returned as string from handler – its taken as a view name

 
Free Domain Names @ .co.nr!