This week's book giveaway is in the OCAJP 8 forum.
We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line!
See this thread for details.
The moose likes EJB Certification (SCBCD/OCPJBCD) and the fly likes Remove() question Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of OCA Java SE 8 Programmer I Study Guide this week in the OCAJP 8 forum!
JavaRanch » Java Forums » Certification » EJB Certification (SCBCD/OCPJBCD)
Bookmark "Remove() question" Watch "Remove() question" New topic

Remove() question

Keith Rosenfield
Ranch Hand

Joined: Nov 25, 2003
Posts: 277
Hello everyone:
On page 79 of the spec it says
An attempt to remove a
session object while the object is in a transaction will cause the container to throw the
javax.ejb.RemoveException to the client.

I was trying to come up with a scenario where a session object using CMP could be in a trasaction when remove was called but could not. My understanding is that all business methods that run in a transaction context will complete their transaction before returning and therefore when remove is called the object will no longer be in a transcation. Since this statement is in the spec, I assume that it is possible for the object to be in a transaction when remove is called. Can anyone please describe a scenario where this is the case.

Keith Rosenfield<br />SCJP<br />SCWCD<br />SCBCD
Tulsi Rai
Ranch Hand

Joined: Jun 26, 2002
Posts: 55
Hei Keith,
As far as i understand, Let's say client A is invoking a getAdviceFrom()method in AdviceBean with transaction, if client B tries to remove the AdviceBean, then container throws RemoveException. The invoked method must return before the AdviceBean can be removed.
Anybody has any explanation,please?
Keith Rosenfield
Ranch Hand

Joined: Nov 25, 2003
Posts: 277
Hi Tulsi:
I don't understand. How does client B even get a hold of the bean since it should be exclusive to one client? Even if does, I thought that the container would serialize calls to the bean, therefore it will not call remove() until getAdviceFrom() is complete. I am not sure what the source of my confusion is. Am I making an assumtion that is incorrect?
Please help me clear up my confusion.
Philippe Maquet

Joined: Jun 02, 2003
Posts: 1872
Hi Keith,
I guess it only applies to stateful session beans with BMT, where a transaction may span multiple methods.
All best,
Keith Rosenfield
Ranch Hand

Joined: Nov 25, 2003
Posts: 277
Hi Phillipe:
That makes sense.
I agree. Here's the link:
subject: Remove() question
It's not a secret anymore!