J'écris un client webservice fonctionnant sous Linux JBoss 5.0.1/JBossWS Native 3.1.1 qui appelle un service s'exécutant sur Windows Tomcat 6.0.29/Metro Stack."org.xml.sax.SAXParseException: fin prématurée du fichier." lors de l'analyse du schéma
Les fichiers WSDL et les fichiers XSD référencés sont accessibles via le navigateur et les tests JUnit que j'ai écrits fonctionnent très bien. Mais lorsque le client est en cours d'exécution dans JBoss, je reçois le stacktrace suivant:
Caused by: org.jboss.ws.metadata.wsdl.WSDLException: javax.wsdl.WSDLException: WSDLException (at /definitions/types/xsd:schema): faultCode=PARSER_ERROR: Problem parsing 'http://server:8280/ValueListService/?xsd=1'.: org.xml.sax.SAXParseException: Premature end of file.
at org.jboss.ws.tools.wsdl.WSDLDefinitionsFactory.parse(WSDLDefinitionsFactory.java:152)
at org.jboss.ws.metadata.umdm.ServiceMetaData.getWsdlDefinitions(ServiceMetaData.java:293)
at org.jboss.ws.metadata.builder.jaxws.JAXWSClientMetaDataBuilder.buildMetaData(JAXWSClientMetaDataBuilder.java:84)
at org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.<init>(ServiceDelegateImpl.java:138)
at org.jboss.ws.core.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:63)
at javax.xml.ws.Service.<init>(Service.java:79)
at javax.xml.ws.Service.create(Service.java:96)
at ...
Par la mise en œuvre de débogage JBossWS WSDL je trouve que le InputStream qui est créée à partir du XSD référencé est nul. Cela me conduit normalement à l'hypothèse qu'il existe une sorte de problème de réseau (ou pare-feu) entre le client et le serveur. Tout cela est très déroutant, car les tests unitaires s'exécutent sur la même machine, donc ça ne peut pas être à cause de ça.
Etes-vous capable de 'wget' le WSDL sur la machine Linux? – artbristol
Oui. Je reçois un schéma XML valide en conséquence. – bohnenquark
voir le résultat ici: http://pastie.org/1892168 – bohnenquark