Details
Description
/cxf-core/src/main/java/org/apache/cxf/common/jaxb/JAXBUtils.java:1097
if (cls == null && (mcls.getName().contains(".internal.") || mcls.getName().contains("com.sun"))) { try { cls = ClassLoaderUtils.loadClass("org.apache.cxf.common.jaxb.NamespaceMapper", JAXBUtils.class); } catch (ClassNotFoundException ex2) { // ignore } }
CXF only add org.apache.cxf.common.jaxb.NamespaceMapper which extends com.sun.xml.bind.marshaller.NamespacePrefixMapper, but the RI JAXB need a mapper extends com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper
So when we add namespace mapper in JAXBElementProvider subclass, the RI JAXB cann't add the namespace mapping correctly.