2011-02-15 16 views
14

Tengo una aplicación web en la que estoy usando spring3 y Oracle.xml.xml.xmlparserv2, que a su vez depende de com.oracle.xml.xmlparserv2. de la excepción de que se obtiene cuando se utilizan estos frascos con muelle 3.0 como abajo,Definición duplicada para: 'identificado tipo'

causada por: oracle.xml.parser.schema.XSDException: duplican la definición de: 'identifiedType'

existe son algunas sugerencias para usar un analizador diferente como xerces, pero en nuestro caso, ya que usamos la dependencia xdb, parece que no podemos cambiarlo para usar otro analizador además de com.oracle.xml.xmlparserv2, estaba funcionando bien con la primavera 2.5.6 ¿hay alguna información sobre cuándo esto sería reparado por Spring/Oracle?

Respuesta

5

He identificado que el problema se debe a la inhabilidad de xmlparserv2 para analizar correctamente el atributo xsi:schemaLocation.

He comprobado que esto funciona:

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" 

Si bien esto produce la EROR:

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd" 

La solución es eliminar el uso de espacios de nombres específicos (como tx, util ..) y reemplazarlos por las definiciones equivalentes usando beans comunes. Por ejemplo, puede reemplazar <tx:annotation-driven/> con <bean class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>

+0

No funcionó para mí :( – saikosen

5

Eliminar/META-INF/directorio de servicios desde xmlparserv2.jar - su contenido registra el analizador de Oracle.

13

En lugar de modificar xmlparserv2.jar puede agregar

-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl

Click here de leer un post en foros de Oracle hablar sobre el tema.

+0

uno de los buenos - esto resuelto mi problema ¿Hay ¿Alguna implicación en el uso del analizador xerces en lugar del analizador de Oracle? Mi aplicación lee XML de una columna XMLTYPE en un DB Oracle. – CodeClimber

+0

Acabo de agregar el paquete xercesImpl en maven pom.xml, El problema está resuelto. – ergoli

3

El paso 4 de my answer here explica por qué sucede y algunos enfoques para solucionarlo.

1
  1. de versiones Consistente
    schema/beans/spring-beans**-3.1**.xsd schema/jee/spring-jee**-3.1**.xsd schema/mvc/spring-mvc**-3.1**.xsd
    etc.

  2. el orden es importante. primavera-ye-3.1.xsd antes en grano de primavera-3.1.xsd causa de error, ya que en el archivo de primavera-ye-3.1.xsd tenemos una referencia de importación a la primavera-habas-3.1.xsd

+0

Parece mi caso ... ¿Pero cómo depurar tal inconsistencia? Sé cuál es el archivo xml con la 2da definición (fallida), pero cómo saber dónde es la primera? –

+0

Cuando se ha duplicado d Excepción de efinición, puede verificar qué XSD contiene la definición. Luego, puede verificar las importaciones en los esquemas XSD anteriores; solo abra los esquemas y verifíquelos. – lukaszwrzaszcz

0

Si los esquemas tienen una importación al mismo XSD, debe importar ese XSD también para evitar el error de "definición duplicada".

Por ejemplo: tengo tres esquemas:

http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 
http://www.springframework.org/schema/util/spring-util-4.2.xsd 
http://www.springframework.org/schema/jee/spring-jee-4.2.xsd 

Ahora que estoy recibiendo un errror, porque la primavera-util y primavera-ye tienen una importación de:

<xsd:import namespace="http://www.springframework.org/schema/beans" schemaLocation="http://www.springframework.org/schema/beans/spring-beans-4.2.xsd"/> 
<xsd:import namespace="http://www.springframework.org/schema/tool" schemaLocation="http://www.springframework.org/schema/tool/spring-tool-4.2.xsd"/> 

Cuando la primavera -La herramienta se importará manualmente ANTES de spring-util y spring-jee:

http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 
http://www.springframework.org/schema/tool/spring-tool-4.2.xsd 
http://www.springframework.org/schema/util/spring-util-4.2.xsd 
http://www.springframework.org/schema/jee/spring-jee-4.2.xsd 

la La configuración XML se analizará correctamente.

Obviamente, debe tener versiones constantes.

Pequeño solución es definir una parte de la configuración en otros archivos con diferentes esquemas descritos e importarlos usando:.

<import resource="part_of_config.xml"/> 
Cuestiones relacionadas