У меня проблема с пружинной загрузкой soap xml unmarshaling. В настоящее время я использую сервис soap, и все работает нормально, за исключением случаев, когда я получаю исключение из-за специальных символов.
Пример исключения для получения "" - недопустимый символ XML:
020-01-27T22:37:08,175 ERROR [http-nio-8135-exec-2] || o.a.j.l.DirectJDKLog: Servlet.service() for servlet [dispatcherServlet] in context with path [/application-test] threw exception [Request processing failed; nested exception is org.springframework.ws.InvalidXmlException: Could not parse XML; nested exception is org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 416; Character reference "" is an invalid XML character.] with root cause
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 416; Character reference "" is an invalid XML character.
at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1243)
at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635)
at java.xml/org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:357)
at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:687)
at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:774)
at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:370)
at com.sun.xml.messaging.saaj.util.transform.EfficientStreamingTransformer.transform(EfficientStreamingTransformer.java:396)
at com.sun.xml.messaging.saaj.soap.EnvelopeFactory.parseEnvelopeSax(EnvelopeFactory.java:173)
at com.sun.xml.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:92)
at com.sun.xml.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:55)
at com.sun.xml.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:142)
at org.springframework.ws.soap.saaj.SaajSoapMessageFactory.createWebServiceMessage(SaajSoapMessageFactory.java:191)
at org.springframework.ws.soap.saaj.SaajSoapMessageFactory.createWebServiceMessage(SaajSoapMessageFactory.java:62)
Код класса AppConfig:
@Bean
public Jaxb2Marshaller marshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setContextPath("com.application.test");
return marshaller;
}
@Bean
public CallerClient callerClient(Jaxb2Marshaller marshaller) {
CallerClient client = new CallerClient ();
client.setDefaultUri("service url");
client.setMarshaller(marshaller);
client.setUnmarshaller(marshaller);
client.setMessageSender(webServiceMessageSender());
ClientInterceptor[] interceptors = { callerInterceptor };
client.setInterceptors(interceptors);
return client;
}
@Bean
public WebServiceMessageSender webServiceMessageSender() {
HttpComponentsMessageSender httpComponentsMessageSender = new HttpComponentsMessageSender();
httpComponentsMessageSender.setConnectionTimeout(3000);
httpComponentsMessageSender.setReadTimeout(3000);
return httpComponentsMessageSender;
}
есть способ получить ответ без каких-либо проблем, приняв специальные символы или удалив их.