1 6 7 package org.jfox.ejb; 8 9 import javax.ejb.EJBException ; 10 import javax.ejb.SessionSynchronization ; 11 import javax.transaction.Status ; 12 import javax.transaction.Synchronization ; 13 import javax.transaction.Transaction ; 14 15 18 19 public class EJBSynchronization implements Synchronization { 20 private Transaction tx = null; 21 private SessionSynchronization sessionSync = null; 22 23 public EJBSynchronization(SessionSynchronization sessionSync, Transaction tx) { 24 this.sessionSync = sessionSync; 25 this.tx = tx; 26 } 27 28 public void afterBegin() { 29 try { 30 sessionSync.afterBegin(); 31 } 32 catch(Exception e) { 33 try { 34 tx.setRollbackOnly(); 35 } 36 catch(Exception ex) { 37 ex.printStackTrace(); 38 } 39 throw new EJBException ("Unexpected error in afterBegin", e); 40 } 41 } 42 43 public void afterCompletion(int status) { 44 try { 45 if(status == Status.STATUS_COMMITTED) { 46 sessionSync.afterCompletion(true); 47 } 48 else { 49 sessionSync.afterCompletion(false); 50 } 51 } 52 catch(Exception e) { 53 throw new EJBException ("Unexpected error in afterCompletion", e); 54 } 55 } 56 57 public void beforeCompletion() { 58 try { 59 sessionSync.beforeCompletion(); 60 } 61 catch(Exception e) { 62 try { 63 tx.setRollbackOnly(); 64 } 65 catch(Exception ex) { 66 ex.printStackTrace(); 67 } 68 throw new EJBException ("Unexpected error in beforeCompletion", e); 69 } 70 } 71 } 72 | Popular Tags |