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.
http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/ejb/MessageDrivenBean.html