Ошибка XML в JAVA (JAXB) - между "SYSTEM" и системным идентификатором требуется пробел - PullRequest
0 голосов
/ 03 сентября 2018

Я вижу странное поведение при преобразовании XML в объект JAVA с использованием JAXB с приведенным ниже фрагментом (приложение, составленное из фрагмента, развернуто в IBM WAS 8.0.0.6). Этот код работает в течение примерно 20 дней, а затем завершается с ошибкой, указанной ниже. Но если я перезапущу JVM, то эта ошибка не будет видна еще через 20 дней. Я подозревал утечку памяти и использовал профилировщик, но не нашел ничего тревожного. Этот фрагмент имеет какие-либо проблемы?

Ценю вашу помощь !!

Фрагмент кода:

HttpGet httpGet = new HttpGet(URL);
HttpResponse response = 
HttpClientWrapper.getInstance().execute(httpGet);
String httpGetResponse = EntityUtils.toString(response.getEntity(), "UTF-8");
EntityUtils.consume(response.getEntity());

StringReader stringReader = new StringReader(httpGetResponse);
JAXBContext jaxbContext = JAXBContext.newInstance(
POJO.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();

POJO pojo = (
POJO) jaxbUnmarshaller.unmarshal(stringReader); // <- Error is thrown at this line

Пример XML:

<?xml version="1.0" encoding="UTF-8"?>
<usercontext>
 <userdetails>
  <name>TEST CUSTOMER</name>
  <zipCode>48032</zipCode>
  <phone>2343253434</phone>
 </userdetails>
</usercontext>

трассировка стека

javax.xml.bind.UnmarshalException: White space is required between "SYSTEM" and the system identifier. 
at com.ibm.xml.xlxp2.jaxb.msg.JAXBMessageProvider.throwUnmarshalExceptionWrapper(JAXBMessageProvider.java:93) at 
com.ibm.xml.xlxp2.jaxb.unmarshal.impl.JAXBDocumentScanner.produceFatalErrorEvent(JAXBDocumentScanner.java:297) at 
com.ibm.xml.xlxp2.scan.DocumentScanner.reportFatalError(DocumentScanner.java:4886) at 
com.ibm.xml.xlxp2.scan.DTDScanner.reportFatalError(DTDScanner.java:444) at 
com.ibm.xml.xlxp2.scan.DTDScanner.scanDoctypeDeclCommon(DTDScanner.java:534) 
at com.ibm.xml.xlxp2.scan.DTDScanner.scanDoctypeDecl(DTDScanner.java:481) 
at com.ibm.xml.xlxp2.jaxb.unmarshal.impl.JAXBDocumentScanner$JAXBDTDSupport.scanDoctypeDecl(JAXBDocumentScanner.java:58) at 
com.ibm.xml.xlxp2.scan.DocumentScanner.scanProlog(DocumentScanner.java:1757) at 
com.ibm.xml.xlxp2.scan.DocumentScanner.nextEvent(DocumentScanner.java:1324) at 
com.ibm.xml.xlxp2.scan.DocumentScanner.parseDocumentEntity(DocumentScanner.java:1176) at 
com.ibm.xml.xlxp2.jaxb.unmarshal.impl.JAXBDocumentScanner.unmarshal(JAXBDocumentScanner.java:147) at 
com.ibm.xml.xlxp2.jaxb.unmarshal.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:158) at 
com.ibm.xml.xlxp2.jaxb.unmarshal.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:139) at 
...