There are two issues when serialising the FactHandle. The first is that there is no setExternalForm, on older JAXB this throws an exception, on newer one's it just doesn't set the field.
The other issue is with XmlAdapter, when the FactHandle is nested. It seems JAXB is not picking up it has annotations and renders it as a generic xsi:type, which is ugly verbose. This may be a limitation of XmlAdapter and it's generics arguments.