"org.xml.sax.SAXParseException: Преждевременный конец файла." при разборе схемы - PullRequest
2 голосов
/ 12 мая 2011

Я пишу клиент веб-сервиса, работающий в Linux JBoss 5.0.1 / JBossWS Native 3.1.1, который вызывает сервис, работающий в Windows Tomcat 6.0.29 / Metro Stack.

WSDL и ссылочные XSD-файлы доступны через браузер, а также написанные мной тесты JUnit прекрасно работают. Но когда клиент работает внутри JBoss, я получаю следующую трассировку стека:

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 ...

Отладив реализацию WSDL JBossWS, я обнаружил, что InputStream, который создается из XSD, на который ссылаются, является нулевым. Обычно это указывает на то, что между клиентом и сервером существует какая-то сетевая проблема (или брандмауэр). Все это очень сбивает с толку, так как у меня модульные тесты выполняются на одной машине, поэтому этого не может быть.

1 Ответ

0 голосов
/ 13 мая 2011

Мне потребовалось много времени, чтобы понять внутреннюю работу реализации WS, но сейчас у меня есть решение.

Проблема находится в нативном JBoss, который не может справиться с URL, созданными Metro. Сейчас моя работа заключается в загрузке WSDL и XSD из моих локальных ресурсов и изменении адреса конечной точки на реальный адрес сервера вручную.

@ artbristol, спасибо за вашу помощь.

...