KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jfox > ejb > EJBSynchronization


1 /* JFox, the OpenSource J2EE Application Server
2  *
3  * Distributable under GNU LGPL license by gun.org
4  * more details please visit http://www.huihoo.org/jfox
5  */

6
7 package org.jfox.ejb;
8
9 import javax.ejb.EJBException JavaDoc;
10 import javax.ejb.SessionSynchronization JavaDoc;
11 import javax.transaction.Status JavaDoc;
12 import javax.transaction.Synchronization JavaDoc;
13 import javax.transaction.Transaction JavaDoc;
14
15 /**
16  * @author <a HREF="mailto:young_yy@hotmail.com">Young Yang</a>
17  */

18
19 public class EJBSynchronization implements Synchronization JavaDoc {
20     private Transaction JavaDoc tx = null;
21     private SessionSynchronization JavaDoc sessionSync = null;
22
23     public EJBSynchronization(SessionSynchronization JavaDoc sessionSync, Transaction JavaDoc tx) {
24         this.sessionSync = sessionSync;
25         this.tx = tx;
26     }
27
28     public void afterBegin() {
29         try {
30             sessionSync.afterBegin();
31         }
32         catch(Exception JavaDoc e) {
33             try {
34                 tx.setRollbackOnly();
35             }
36             catch(Exception JavaDoc ex) {
37                 ex.printStackTrace();
38             }
39             throw new EJBException JavaDoc("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 JavaDoc e) {
53             throw new EJBException JavaDoc("Unexpected error in afterCompletion", e);
54         }
55     }
56
57     public void beforeCompletion() {
58         try {
59             sessionSync.beforeCompletion();
60         }
61         catch(Exception JavaDoc e) {
62             try {
63                 tx.setRollbackOnly();
64             }
65             catch(Exception JavaDoc ex) {
66                 ex.printStackTrace();
67             }
68             throw new EJBException JavaDoc("Unexpected error in beforeCompletion", e);
69         }
70     }
71 }
72
Popular Tags