An MDB, that directly forwards its message can lead to unmatched acks on rollback.
The root cause is ServerSession.run not doing a message copy before up call to the listener.
An unmatched delivered ACK causes a broker error and JMS exception "Could not correlate acknowledgment with dispatched message".
That error closes the connection which prevents normal rollback and redelivery processing.
The fix is to copy, in the same way as a regular message consumer, such that the application is free to do what every it wants to the message.