2010-11-03 29 views
1

Je reçois l'exception suivante lorsque j'essaie de charger un fichier de schéma XML dans le conteneur Resin 3.0.25. Le fichier de schéma ne renvoie rien d'autre que l'espace de noms XML Schema (http://www.w3.org/2001/XMLSchema). Le fichier XML Schema est valide et le même code fonctionne exactement lorsque vous utilisez un conteneur Jetty.Problème lors du chargement du document de schéma XML dans Resin et Spring-WS

La machine qui exécute Resin n'a pas accès à Internet et Jetty a accès à Internet. J'ai essayé différents parseurs XML comme celui-ci mais cela ne semble pas avoir d'effet.

-Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl 
-Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl 

Quelle pourrait être la cause de ce problème?

Edit: Avec un peu différente configuration du printemps, je reçois ce stacktrace

org.xml.sax.SAXParseException: s4s-att-invalid-value: Invalid attribute 
value for 'base' in element 'restriction'. Recorded reason: UndeclaredPrefix: 
Cannot resolve 'xsd:string' as a QName: the prefix 'xsd' is not declared. 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195) 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384) 
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaError(XSDHandler.java:2525) 
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSAttributeChecker.reportSchemaError(XSAttributeChecker.java:1608) 
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSAttributeChecker.checkAttributes(XSAttributeChecker.java:1175) 
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSAttributeChecker.checkAttributes(XSAttributeChecker.java:996) 
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDSimpleTypeTraverser.getSimpleType(XSDSimpleTypeTraverser.java:221) 
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDSimpleTypeTraverser.traverseSimpleTypeDecl(XSDSimpleTypeTraverser.java:142) 
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDSimpleTypeTraverser.traverseGlobal(XSDSimpleTypeTraverser.java:102) 
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.traverseSchemas(XSDHandler.java:1267) 
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.parseSchema(XSDHandler.java:579) 
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadSchema(XMLSchemaLoader.java:552) 
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:519) 
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:485) 
    at com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.newSchema(XMLSchemaFactory.java:206) 
    at org.springframework.xml.validation.SchemaLoaderUtils.loadSchema(SchemaLoaderUtils.java:77) 

Répondre

1

Je ne sais pas pourquoi cette erreur s'est produite mais la solution de travail doit être mise à niveau vers Resin 3.1.10.

2

Probablement sans connexion Internet, il ne peut pas télécharger schéma pour XSD. Vous pouvez probablement essayer d'utiliser le catalogue XML pour pointer vers le schéma disponible localement.

+0

Tous mes schémas sont à l'intérieur de la webapp, donc aucune connexion internet ne devrait être nécessaire. Seule la chose externe référée par mes schémas est l'espace de noms XML Schema lui-même (par exemple xmlns: xsd = "http://www.w3.org/2001/XMLSchema"). –

+0

@Juha Syrjälä: Le fait que vos schémas soient à l'intérieur de webapp ne signifie pas que l'analyseur sera capable de les localiser. Après tout, ils pourraient être n'importe où - dans le classpath, parmi les JSP, dans META-INF et ainsi de suite. C'est ce que sont les catalogues XML - pour mapper l'espace de noms dans l'emplacement réel du schéma, sinon l'analyseur essaierait de le retirer de l'URL spécifiée. Je suis presque certain que c'est ce qui se passe dans votre cas. Juste pour éliminer d'autres possibilités essayez d'exécuter Jetty déconnecté et voir si la même erreur se produirait. – maximdim

+0

J'ai essayé de lancer Jetty sur la même machine que Resin. Jetty a travaillé sans problèmes. –