[jboss-user] [EJB/JBoss] - Can I lock a table in a session bean?

keithbannister do-not-reply at jboss.com
Tue Jan 8 03:30:08 EST 2008


Hi,

I'm trying to create a session bean that checks the contents of a potential new record against a table before adding that record to the table. The table is a list of (funnily enough) hotel bookings. I want to make sure that the booking dates don't clash for a particular room. Because a booking has a start date and end date, it's not sufficient to have a compound primary key based on dates.

I'm using EJB3 on JBOSS 4

If I were doing it in normal java it would look something like:


  | List<Booking> bookings = ....
  | Object bookingLock = new Object();
  | 
  | 
  | public void create(Boooking booking) {
  |     synchronized(bookingLock) {
  |         if (!roomBookedForInterval(booking)) {
  |             saveBooking(booking)
  |         }
  |     }
  | }
  | 
  | private boolean roomBookedForInterval(Booking booking) {
  |     for(Booking b : bookings) {
  |         if (b.endDate() > booking.startDate() ||
  |             b.startDate() < booking.endDate() ) {
  | 
  |                return true;
  |         }
  |     }
  | 
  |     return false;
  | }
  | 
  | private void saveBooking(Booking booking) {
  |     bookings.add(booking);
  | }
  | 
  | 
  | 

My question is, what is the EJB3 equivalent of the synchronized{} block? IS it a transaction? If so, how does it work?

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4117809#4117809

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4117809



More information about the jboss-user mailing list