Are you using java:/JmsXA as your connection factory? If the JMS connection is not transacted, then you will have trouble with ordering.
It is a default EJB3 MDB (just annotations: type, queue, min, max).
Do I have to define something special to get a JmsXA connection for a MDB?
I've solved the issue. It was not how the MDB was created, but the sending to the queue used "java:/ConnectionFactory".
After using java:/XAJms the problems just all vanished.
Thanks. For pushing me in the right direction.