Prevent Character Escaping on Spring JAXB

Viewed 163

I'm using String class as request object type at my SOAP request.

I need to disable escaping of JAXB and wrote a code like this:

@Bean
public Jaxb2Marshaller jaxb2Marshaller() {
    Jaxb2Marshaller jaxb2Marshaller = new Jaxb2Marshaller();
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("jaxb.formatted.output", true);
    jaxb2Marshaller.setPackagesToScan("packageName");
    map.put("com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler",
            new CharacterEscapeHandler() {
                @Override
                public void escape(char[] ac, int i, int j, boolean flag,
                                   Writer writer) throws IOException {
                    writer.write(ac, i, j);
                }
            });
    jaxb2Marshaller.setMarshallerProperties(map);

    return jaxb2Marshaller;
}

But, I think Spring doesn't accept com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler property to disable character escaping. It gives error like this:

2022-01-07 19:39:41.124 ERROR 45808 --- [ter.container-1] c.p.d.g.s.SendMailService                : org.springframework.oxm.UncategorizedMappingException: Unknown JAXB exception; nested exception is javax.xml.bind.PropertyException: name: com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler value: com.paycore.delivery.gate.soap.SOAPConfig$1@2fbb54f6
    at org.springframework.oxm.jaxb.Jaxb2Marshaller.convertJaxbException(Jaxb2Marshaller.java:955)
    at org.springframework.oxm.jaxb.Jaxb2Marshaller.createMarshaller(Jaxb2Marshaller.java:731)
    at org.springframework.oxm.jaxb.Jaxb2Marshaller.marshal(Jaxb2Marshaller.java:701)
    at org.springframework.ws.support.MarshallingUtils.marshal(MarshallingUtils.java:81)
    at org.springframework.ws.client.core.WebServiceTemplate$2.doWithMessage(WebServiceTemplate.java:399)
    at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:590)
    at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:555)
    at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:390)
    at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:378)

How can I disable character escaping on Jaxb2Marshaller object?

0 Answers
Related