Tom,
I'd suggest that your PdxSerializer be more conservative, up front, in deciding what it can and cannot serialize. Would it make sense to add a check for the presence of an @XmlRootElement annotation before attempting any serializing?
Plugging your own serializer into the chain of serializers means you need to be able to handle anything that gets thrown at it - whether from your code or not. Unfortunately there is no exhaustive list of classes that you would need to account for. By 'handle' I really mean that your serializer needs to decide whether a given object should, legitimately, be attempted to be serialized. If not, then it should return 'false' and let the next serializer, in the chain, handle it. When the serializer throws an exception, it really means, 'I should be able to handle serializing this object but something went wrong'.
--Jens