The message is quietly dropped.
I was thinking of adding an expiration handler to JBoss, but decided against it, because it is a hard feature to get right. And it didn't really add any benefit to my application. What I do is set an application message property (e.g. "APP_MESSAGE_EXPIRY") and test this in my MDB onMessage method.
Even if JBoss did something like what Weblogic does to expired JMS messages (log, redirect to a new queue, drop), I don't think any of those features would be much of an improvement over what I did.
If you decide to add such a feature, do note that there are many places a message can expire. A message can expire on the client side as well as the server, especially if it is rolled back. I've been praying somebody would clean up the Session code so I could better approach the coe.
If you think this is why your messages are not getting through, you can see the expiration occur at trace level (at least in 3.2.5).
< category name="org.jboss.mq">
< priority value="TRACE" class="org.jboss.logging.XLevel"/>
(also remove any INFO or other filter on the appender you want to see this in)
BTW, Logging would be nice, rather than silent failure. Especially since we have seen odd expiration due to clocks being different on the client and server machines, which has got to be pretty common.