org.jboss.test.jca.adapter.TestManagedConnection uses the GlobalXID class to wrap Xids. Setting aside that this is largely unnecessary abstraction, the implementation of GlobalXID is wrong. It converts a byte to a String, an activity which has undefined results where the byte contains arbitrary data that does not necessarily map to valid code points in the default charset. In particular, it can cause non-equal Xids to result in equal GlobalXIDs, which breaks the test. Having all methods on GlobalXID delegate to a wrapped Xid is better, or just remove the GlobalXID abstraction completely.