Me estoy poniendo muy extraño "Fin de archivo prematuro". excepción para los últimos días en uno de nuestros servidores. El mismo XML de configuración funciona bien en otro servidor. Estamos utilizando Tomcat 5.0.28 en ambos servidores. Este código ha estado funcionando para las edades (más de 7 años), solo después de una caída reciente del servidor, enfrentamos este problema en uno de los servidores. No hay cambios en XML así como en el código de análisis de Java. :(org.xml.sax.SAXParseException: fin de archivo prematuro para * VÁLIDO * XML
La única diferencia es que puedo ver en las versiones de Java -
Problema del servidor versión java "1.6.0_16" Java (TM) SE Runtime Environment (build 1.6.0_16-b01) Java HotSpot (TM) de 64 bits del servidor VM (build 14.2-b01, modo mixto)
servidor de trabajo java version "1.6.0_07" Java (TM) SE Runtime Environment (build 1.6.0_07-b06) Java HotSpot (TM) 64- Bit servidor VM (build 10.0-b23, modo mixto)
Aquí está el código Java que ha estado trabajando durante varios años -
private void readSource(final InputSource in) {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(in);
Element elt = doc.getDocumentElement();
this.readElement(elt);
} catch (Exception ex) {
ex.printStackTrace();
throw new ConfigurationException("Unable to parse configuration information", ex);
}
}
Y aquí es la excepción.
[Fatal Error] :-1:-1: Premature end of file.
org.xml.sax.SAXParseException: Premature end of file.
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at com.circus.core.Configuration.readSource(Configuration.java:706)
ya he intentado validar XML y no encontró errores allí. ¿Alguna idea de dónde más puedo buscar un posible problema?
¡Cualquier apuntador sería muy apreciado!
TIA, - Manish
1. ¿Cómo es el 'InputSource' construyeron? 2. ¿Qué tan grande es el 'XML'? 3. ¿El 'XML' proviene de un archivo local, de una URL, una base de datos, alguna otra fuente de transmisión? ¿Tal vez el socket se desconecta o el' InputStream' se cierra en el medio del análisis? – npe
¿Estás seguro de que cuando el servidor se bloqueó no agregó algunos caracteres especiales? Podría intentar incluir el XML de uno de sus servidores en funcionamiento y ver si funciona. – npinti
@npe - (1) El 'InputSource' se construye con' FileReader' - 'this.readSource (nueva InputSource (fr));' (2) XML es 108,1 KB de tamaño. Ha sido así desde hace mucho tiempo. (3) XML proviene del sistema de archivos local. También estoy sospechando si 'InputStream' se está cerrando en el medio. ¿Cómo puedo detectar eso? Y de nuevo, preguntándome por qué funcionó antes y ahora no :( @npinti - He utilizado XML fresco de SVN y también he probado la misma versión en el validador XML. * Es * XML válido. – Manish