So the code breaks in one context and works fine in another. When I run into 
problems of that class involving XML parsing I always look for threading 
issues. Most Java XML technologies rely on underlying parsers which, for 
reasons of performance, ignore thread safety. Is it possible that some other 
part of your app is down in the SAX code at the same time?

Jim

-----Original Message-----
From: Cesar Villar [mailto:[EMAIL PROTECTED] 
Sent: Friday, August 26, 2005 4:14 AM
To: [email protected]; [EMAIL PROTECTED]
Subject: Re: com.ibatis.common.exception.NestedRuntimeException: Error parsing 
XPath '/sqlMapConfig/sqlMap'


When I write the content of the file that fails into
another file the problem disappears.
The stack exception is:
- AbstractUnafeDAO static block:
com.ibatis.common.exception.NestedRuntimeException:
Error occurred.  Cause:
com.ibatis.common.xml.NodeletException: Error parsing
XML.  Cause:
com.ibatis.common.exception.NestedRuntimeException:
Error parsing XPath '/sqlMapConfig/sqlMap'.  Cause:
com.ibatis.common.xml.NodeletException: Error parsing
XML.  Cause: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by: com.ibatis.common.xml.NodeletException:
Error parsing XML.  Cause:
org.xml.sax.SAXParseException: Falta elemento de raíz
de documento.
Caused by: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by:
com.ibatis.common.exception.NestedRuntimeException:
Error parsing XPath '/sqlMapConfig/sqlMap'.  Cause:
com.ibatis.common.xml.NodeletException: Error parsing
XML.  Cause: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by: com.ibatis.common.xml.NodeletException:
Error parsing XML.  Cause:
org.xml.sax.SAXParseException: Falta elemento de raíz
de documento.
Caused by: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by: com.ibatis.common.xml.NodeletException:
Error parsing XML.  Cause:
com.ibatis.common.exception.NestedRuntimeException:
Error parsing XPath '/sqlMapConfig/sqlMap'.  Cause:
com.ibatis.common.xml.NodeletException: Error parsing
XML.  Cause: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by: com.ibatis.common.xml.NodeletException:
Error parsing XML.  Cause:
org.xml.sax.SAXParseException: Falta elemento de raíz
de documento.
Caused by: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by:
com.ibatis.common.exception.NestedRuntimeException:
Error parsing XPath '/sqlMapConfig/sqlMap'.  Cause:
com.ibatis.common.xml.NodeletException: Error parsing
XML.  Cause: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by: com.ibatis.common.xml.NodeletException:
Error parsing XML.  Cause:
org.xml.sax.SAXParseException: Falta elemento de raíz
de documento.
Caused by: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento. java.lang.ExceptionInInitializerError
        at
com.unafe.dao.DAOFactory.getCursoDAO(DAOFactory.java:74)
        at
com.unafe.dao.pruebas.PruebaCursos.obtenerCursos(PruebaCursos.java:47)
        at
com.unafe.dao.pruebas.PruebaCursos.main(PruebaCursos.java:39)
Caused by: java.lang.RuntimeException: Error
Initializing AbstractUnafeDAO
:com.ibatis.common.exception.NestedRuntimeException:
Error occurred.  Cause:
com.ibatis.common.xml.NodeletException: Error parsing
XML.  Cause:
com.ibatis.common.exception.NestedRuntimeException:
Error parsing XPath '/sqlMapConfig/sqlMap'.  Cause:
com.ibatis.common.xml.NodeletException: Error parsing
XML.  Cause: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by: com.ibatis.common.xml.NodeletException:
Error parsing XML.  Cause:
org.xml.sax.SAXParseException: Falta elemento de raíz
de documento.
Caused by: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by:
com.ibatis.common.exception.NestedRuntimeException:
Error parsing XPath '/sqlMapConfig/sqlMap'.  Cause:
com.ibatis.common.xml.NodeletException: Error parsing
XML.  Cause: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by: com.ibatis.common.xml.NodeletException:
Error parsing XML.  Cause:
org.xml.sax.SAXParseException: Falta elemento de raíz
de documento.
Caused by: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by: com.ibatis.common.xml.NodeletException:
Error parsing XML.  Cause:
com.ibatis.common.exception.NestedRuntimeException:
Error parsing XPath '/sqlMapConfig/sqlMap'.  Cause:
com.ibatis.common.xml.NodeletException: Error parsing
XML.  Cause: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by: com.ibatis.common.xml.NodeletException:
Error parsing XML.  Cause:
org.xml.sax.SAXParseException: Falta elemento de raíz
de documento.
Caused by: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by:
com.ibatis.common.exception.NestedRuntimeException:
Error parsing XPath '/sqlMapConfig/sqlMap'.  Cause:
com.ibatis.common.xml.NodeletException: Error parsing
XML.  Cause: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
Caused by: com.ibatis.common.xml.NodeletException:
Error parsing XML.  Cause:
org.xml.sax.SAXParseException: Falta elemento de raíz
de documento.
Caused by: org.xml.sax.SAXParseException: Falta
elemento de raíz de documento.
        at
com.unafe.dao.AbstractUnafeDAO.<clinit>(AbstractUnafeDAO.java:43)
        ... 3 more
Exception in thread "main" 

And the content of the file is:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map
2.0//EN" 
        "http://www.ibatis.com/dtd/sql-map-2.dtd";>

<sqlMap namespace="CursoSQL">
 
   <!-- 
   
==============================================================
   
    ======================== CACHES ==============================
   
==============================================================
   
    -->
    
    <cacheModel id="curso_cache" type="MEMORY" >
        <flushInterval   hours="24"/>
        <flushOnExecute statement= "insertCurso" />
        <flushOnExecute statement= "updateCurso" /> 
        <flushOnExecute statement= "deleteCurso" /> 
        <property name="reference-type" value="WEAK"
/>
    </cacheModel>

    <!-- 
   
=============================================================
   
    ======================== ALIAS ==============================
   
=============================================================
   
    -->

        <typeAlias alias="CursoDTO" type="com.unafe.dto.cursos.CursoDTO"/>

    <!-- 
   
=================================================================
    ======================== PARAMETERMAPS ==========================
   
=================================================================
    -->

        <parameterMap id="tipoSanitario" class="CursoDTO">
                <parameter property="sanitario"/>
        </parameterMap>
        
        <parameterMap id="cursoId" class="CursoDTO">
                <parameter property="id"/>
        </parameterMap> 
        
        <parameterMap id="datosAlumnoSanitario"
class="AlumnoDTO">
                <parameter property="id"/>
                <parameter property="id"/>              
                <parameter property="sanitario"/>               
        </parameterMap>         

    <!-- 
   
=================================================================
    ======================== RESULTMAP ==============================
   
=================================================================
    -->

        <resultMap id="curso_resultado"  class="CursoDTO">
                <result property="id"                   column="CUR_ID" />
                <result property="nombre"               column="CUR_NOMBRE" /> 
                <result property="temario"              column="CUR_TEMARIO" /> 
                <result property="creditos"             column="CUR_CREDITOS"
/>
                <result property="horas"                column="CUR_NUMHORAS" />
                <result property="sanitario"    column="CUR_SANITARIO"
/>
                <result property="precio"               column="CUR_PRECIO" />
                <result property="codigo"               column="CUR_CODIGO" />  
        
    </resultMap>
    
        <resultMap id="curso_resultado_para_lista" 
class="CursoDTO">
                <result property="id"                   column="CUR_ID" />
                <result property="nombre"               column="CUR_NOMBRE" /> 
                <result property="codigo"               column="CUR_CODIGO" />  
        
                <result property="sanitario"    column="CUR_SANITARIO"
/>
    </resultMap>

   <!-- 
   
=================================================================
    ======================== CONSULTAS ==============================
   
=================================================================
    -->
     <select  id="getCursos" resultClass="CursoDTO"
cacheModel="curso_cache">    
        SELECT CUR_ID AS id, 
                        CUR_NOMBRE AS nombre, 
                        CUR_TEMARIO AS temario, 
                        CUR_CREDITOS AS creditos, 
                        CUR_SANITARIO AS sanitario, 
                        CUR_NUMHORAS AS horas, 
                        CUR_PRECIO AS precio,
                        CUR_CODIGO AS codigo
                FROM CURSO      
    </select>

    <select id="getCursosPorTipo"
parameterMap="tipoSanitario"
resultMap="curso_resultado">
        SELECT CUR_ID, 
                        CUR_NOMBRE, 
                        CUR_TEMARIO, 
                        CUR_CREDITOS, 
                        CUR_SANITARIO, 
                        CUR_NUMHORAS, 
                        CUR_PRECIO,
                        CUR_CODIGO
                FROM CURSO  
        <dynamic prepend="where"> 
            <isNotNull prepend="AND"
property="sanitario"> 
                        CUR_SANITARIO = #sanitario#
            </isNotNull> 
        </dynamic> 
    </select>   
    
    <select id="getTipoDeCurso" parameterClass="int" 
resultClass="java.lang.String">
        SELECT CUR_SANITARIO
                FROM CURSO  
            WHERE CUR_ID = #value#
    </select>       
    
        <select id="getCursoPorID" parameterClass="int" 
resultMap="curso_resultado">
        SELECT CUR_ID, 
                        CUR_NOMBRE, 
                        CUR_TEMARIO, 
                        CUR_CREDITOS, 
                        CUR_SANITARIO, 
                        CUR_NUMHORAS, 
                        CUR_PRECIO,
                        CUR_CODIGO
                FROM CURSO  
            WHERE CUR_ID = #value#
    </select> 
   
   
    <select
id="selectCursosNoSeleccionadosEnUnPeriodo"
parameterClass="int"
resultMap="curso_resultado_para_lista">
        SELECT CUR_ID, 
                CUR_CODIGO,
                        CUR_NOMBRE,
                        CUR_SANITARIO
                FROM CURSO
            WHERE CUR_ID NOT IN (SELECT CURPER_CURSO 
                                                 FROM CURSO_PERIODOLECTIVO 
                                                 WHERE CURPER_PERIODO = #value#)
            ORDER BY CUR_SANITARIO,CUR_NOMBRE
    </select>

    <select id="selectCursosNoCompradosPorAlumno"
parameterMap="datosAlumnoSanitario"
resultMap="curso_resultado">
        SELECT CUR_ID, 
                        CUR_NOMBRE, 
                        CUR_TEMARIO, 
                        CUR_CREDITOS, 
                        CUR_SANITARIO, 
                        CUR_NUMHORAS, 
                        CUR_PRECIO,
                        CUR_CODIGO
                FROM CURSO, V_CURSOSPERIODOACTUAL
                WHERE CUR_ID NOT IN(
                        <!--  CURSOS QUE NO ESTEN YA COMPRADOS EN EL
PERIODO LECTIVO ACTUAL -->
                                SELECT CCPL_CURSO
                                FROM COMPRA, COMPRA_CURSO_PERIODOLECTIVO
                                WHERE COM_ALUMNO = ?
                                AND COM_ESTADO IN ('A','E')
                                AND CCPL_COMPRA = COM_ID
                                AND CCPL_PERIODO = (SELECT PER_ID 
                                                                        FROM 
PERIODOLECTIVO 
                                                                        WHERE 
PER_FEC_INICIO <![CDATA[<=]]> SYSDATE 
                                                                        AND 
PER_FEC_FIN>=SYSDATE
                                                                        )
                        )
                AND CUR_ID NOT IN (
                        <!--  CURSOS APROBADOS ANTERIORMENTE -->
                        SELECT CUR_ID
                        FROM CURSO, EXAMEN, PRUEBAEXAMEN,
CURSO_PERIODOLECTIVO
                        WHERE CUR_ID=EXA_CURSO
                        AND EXA_ID=PEXA_EXAMEN
                        AND PEXA_ESTADO= 'AP'
                        AND PEXA_ALUMNO = ?
                        AND CURPER_CURSO=CUR_ID
                        AND CURPER_PERIODO IN (SELECT PER_ID 
                                                                        FROM 
PERIODOLECTIVO 
                                                                        WHERE 
PER_FEC_INICIO <![CDATA[<]]> SYSDATE 
                                                                        AND 
PER_FEC_FIN<![CDATA[<]]>SYSDATE)
                )               
                AND CUR_SANITARIO=? 
                AND CPA_CURSO = CUR_ID  
    </select>
    <!-- 
   
==============================================================
    ======================== INSERT ==============================
   
==============================================================
    -->
    
    <insert id="insertCurso"
parameterClass="CursoDTO">
        <selectKey resultClass="int" keyProperty="id">
                        SELECT CURSO_SEQ.NEXTVAL AS ID
                        FROM DUAL       
        </selectKey>
        INSERT INTO CURSO ( CUR_ID, CUR_NOMBRE,
CUR_TEMARIO, CUR_CREDITOS, 
                                                CUR_NUMHORAS, CUR_SANITARIO, 
CUR_PRECIO,
CUR_CODIGO)
        VALUES  ( #id#, #nombre#, #temario:VARCHAR#, #creditos#, #horas#, 
#sanitario#, 
                        #precio#, #codigo# )
    </insert>
    
    <!-- 
   
===============================================================
      
    ======================== UPDATES ==============================
   
===============================================================
      
    -->

    <statement   id="updateCurso"
parameterClass="CursoDTO">
        UPDATE CURSO 
        SET CUR_NOMBRE= #nombre#, CUR_TEMARIO= #temario:VARCHAR#, 
                CUR_CREDITOS= #creditos#, CUR_NUMHORAS=
#horas#, CUR_SANITARIO= #sanitario#,
                CUR_PRECIO= #precio#, CUR_CODIGO= #codigo#
        WHERE CUR_ID = #id# 
    </statement>
    
    <!-- 
   
===============================================================
      
    ======================== DELETES ==============================
   
===============================================================
  
    -->
    <delete id="deleteCursoPorID"
parameterClass="CursoDTO">
        DELETE FROM CURSO WHERE CUR_ID = #id#
    </delete>   
</sqlMap>

I can attach all others xml files and a class to prove
the files.
Thanks a lot.



                
______________________________________________ 
Renovamos el Correo Yahoo! 
Nuevos servicios, más seguridad 
http://correo.yahoo.es

Reply via email to