From my understanding, the reentrant tag is used for multithreading. and in EJB case, the container will handle the threading, so it should be false.
Also, a session bean, stateful or stateless, while serving a client, is dedicated for that specific client only! Other client can't use it. so, the reentrant tag should be false. So is MDB's onMessage() method.