Lets say that during the ejbCreate() method of my MDB a RuntimeException gets thrown (NullPointer, etc ....).
The message should not be Acknowledged and should be returned to the JMS provider, right?
Or do I need to catch that and call setRollbackOnly()?
If ejbCreate() fails, the message gets rolled back automatically.
setMessageDrivenContext is only called after ejbCreate, so there's no way you can setRollbackOnly there.