Put another way:
If an EJB developer wants DLQ functionality for an MDB, he/she has to use the JMS/JCA DLQ
implementation. Since we have made the decision to always execute message delivery in the
context of a transaction (local or XA), JBM would not handle the case where a
RuntimeException occurs. It would simply ignore the message and move on.
While the JMS spec makes note that RuntimeExceptions should not occur in MessageListeners,
EJB(X) does not make this assumption. The spec even goes so far as to *require* that
message be redelivered depending upon the transaction attributes.
For CMT/REQUIRED MDB's the choice is easy, the specification requires that the
transaction be rolled back and the message be redelivered. For BMT/CMT-NOT_SUPPORTED, the
spec is all but useless. Effectively the MDB executes in an 'unspecified transaction
context'. There are no restrictions on how the container/JCA/integration layer can
handle this situation but there are also no real guidlines unfortunately.
Of course for a standalone JBM deployment, the situation is much different; at that point
it's just plain ole JMS ;-)
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3986923#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...