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.