1 package ejava.examples.txhotel.ejb;
2
3 import java.rmi.RemoteException;
4
5 import java.util.Date;
6 import java.util.List;
7 import java.util.concurrent.TimeUnit;
8
9 import javax.annotation.PostConstruct;
10 import javax.annotation.PreDestroy;
11 import javax.annotation.Resource;
12 import javax.ejb.EJBException;
13 import javax.ejb.Remove;
14 import javax.ejb.SessionContext;
15 import javax.ejb.SessionSynchronization;
16 import javax.ejb.StatefulTimeout;
17
18 import org.apache.commons.logging.Log;
19 import org.apache.commons.logging.LogFactory;
20
21 import ejava.examples.txhotel.bl.HotelReservationException;
22 import ejava.examples.txhotel.bl.HotelReservationSession;
23 import ejava.examples.txhotel.blimpl.HotelReservationSessionImpl;
24 import ejava.examples.txhotel.bo.Person;
25 import ejava.examples.txhotel.bo.Reservation;
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 @StatefulTimeout(value=3, unit=TimeUnit.MINUTES)
61 public class HotelReservationSessionEJB
62 implements HotelReservationSessionLocal, HotelReservationSessionRemote,
63 SessionSynchronization {
64 private static final Log log =
65 LogFactory.getLog(HotelReservationSessionEJB.class);
66 private HotelReservationSession impl;
67
68 @Resource
69 private SessionContext ctx;
70
71
72 private HotelRegistrationLocal reservationist;
73
74
75
76
77
78
79
80
81 @PostConstruct
82 public void init() {
83 log.info("*** HotelReservationSessionEJB ***");
84
85
86 log.debug("ctx=" + ctx);
87 log.debug("reservationist=" + reservationist);
88
89
90 impl = new HotelReservationSessionImpl();
91 ((HotelReservationSessionImpl)impl).setReservationist(reservationist);
92 }
93
94
95
96
97
98 @PreDestroy
99 public void closing() {
100 log.info("*** HotelReservationSessionEJB closing ***");
101 }
102
103
104
105
106 @Remove
107 public void close() {
108 log.info("*** HotelReservationSessionEJB close ***");
109 impl.close();
110 }
111
112 public void createReservation(Person person, Date startDate, Date endDate)
113 throws HotelReservationException {
114 impl.createReservation(person, startDate, endDate);
115 }
116
117 public void cancelReservations() throws HotelReservationException {
118 impl.cancelReservations();
119 }
120
121 public List<Reservation> commit() throws HotelReservationException {
122 return impl.commit();
123 }
124
125
126
127
128
129 public void afterBegin() {
130 log.debug("*** Transaction Started ***");
131 }
132
133
134
135
136 public void beforeCompletion() throws EJBException, RemoteException {
137 log.debug("*** Transaction about to complete, rollback:" +
138 ctx.getRollbackOnly() + " ***");
139 }
140
141
142
143 public void afterCompletion(boolean status) {
144 log.debug("*** Transaction Completed:" + status + " ***");
145 }
146 }