File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes EJB and other Java EE Technologies and the fly likes Message Driven Beans and Transactions Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of OCM Java EE 6 Enterprise Architect Exam Guide this week in the OCMJEA forum!
JavaRanch » Java Forums » Java » EJB and other Java EE Technologies
Bookmark "Message Driven Beans and Transactions" Watch "Message Driven Beans and Transactions" New topic
Author

Message Driven Beans and Transactions

Suman Chaudhuri
Greenhorn

Joined: Jan 10, 2002
Posts: 6
Hi,
I posted this question earlier, but haven't gotten a response to it yet :
---------------
Hi all,
The EJB 2.0 spec says that Message Driven Beans (MDB) are only allowed a transactional attribute of either Required or NotSupported. The reasons it gives for this is as follows :
1) Since a MDB never gets called by a client so to speak, there is never a pre-existing transactional context, hence, RequiresNew and Supports, both which deal with client transactions, are meaningless to MDBs
2) Also, since Mandatory and Never throw exceptions to clients if the methods are executed in a transaction, and since there is never an MDB client, these 2 are also meaningless.
Now, I understand these 2 points totally. But in the same vein, why allow Required and NotSupported ??? Required also deals with client transactions (if one exists, Required means container will execute the transaction under the client transaction) and NotSupported suspends a client transaction (if one exists)...and since a MDB never has a client, these 2 also should be meaningless in the context of a MDB. So why allow these 2 but not the rest ??
I know that the container, according to the specs, creates a new transaction everytime for a MDB as it has no client, but I do not understand why it allows Requires and NotSupported, but not the others ???
Any ideas ??
--------------
If anyone knows the answer to this, please let me know.
Regards,
Suman
Thomas Paul
mister krabs
Ranch Hand

Joined: May 05, 2000
Posts: 13974
Here's the deal... NotSupported indicates that the message will be processed without a transaction. Required indicates that the message will be processed with a container-initiated transaction.


Associate Instructor - Hofstra University
Amazon Top 750 reviewer - Blog - Unresolved References - Book Review Blog
Suman Chaudhuri
Greenhorn

Joined: Jan 10, 2002
Posts: 6
Thomas, you wrote :
Here's the deal... NotSupported indicates that the message will be processed without a transaction. Required indicates that the message will be processed with a container-initiated transaction.
I understand what NotSupported and Required are meant to do...but NotSupported also states that if there is a client transaction, then it will suspend it...and since there is no client in a MDB, this is meaningless. Same with Required..which states that if there is a client transaction, it will execute under it (otherwise initiate its own transaction)...again, no client makes this meaningless too.
So I still dont understand why these 2 can apply to MDB.
Thomas Paul
mister krabs
Ranch Hand

Joined: May 05, 2000
Posts: 13974
Since there is no client, that part of the description obviously doesn't apply. The only question is will the container create a transaction to run the MDB or not.
 
wood burning stoves
 
subject: Message Driven Beans and Transactions