Currently orphan detection is supported for JTA, not for JTS. Please, add the suport for JTS as well.
The following scenario for JTS causes that the orphan is left in the transaction log store and the prepared resource could held the lock till the time that it's timeouted on the side of the database/jms.
The program flow is following (test run on EAP 6)
enlisting jms xaresource to transaction
sending msg to queue
enlisting xa test resource
preparing jms xaresource
preparing xa test resource
crash JVM at the end of the test XAResource.prepare()
restart app server and recovery is run
During recovery the jms resource is processed correctly because TM found some info in its jts logs. But such info was not saved for test xa resource. The test xa is not rollback.
More info and discussion could be found at: https://bugzilla.redhat.com/show_bug.cgi?id=1064170