2015-08-03 4 views
1

У меня возникла проблема при создании нового проекта в soapUI и импортировании wsdl-файла из URL-адреса .Это дает мне ниже исключениеxsd: включить исключение в soapUI: org.apache.xmlbeans.XmlException: org.apache.xmlbeans.XmlException: error: Неожиданный конец файла после null

ошибка при загрузке [http://localhost:8080/WS/PersonalDetails.xsd]: org.apache.xmlbeans.XmlException: org.apache.xmlbeans.XmlException: ошибка: Неожиданный конец файла после нулевой

Моего XSD включает

<xsd:include schemaLocation="PersonalDetails.xsd" /> 
<xsd:include schemaLocation="PersonalRequest.xsd" /> 

Actual Местонахождение XSD

WS/src/main/webapp/schemas/PersonalDetails.xsd 

WS/src/main/webapp/schemas/PersonalRequest.xsd 

Моя весна-ws.xml

<bean id="MyWSService" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition" lazy-init="true"> 
    <property name="schemaCollection"> 
     <bean class="org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection"> 
      <property name="inline" value="false" /> 
      <property name="xsds"> 
       <list> 
        <value>schemas/PersonalDetailsServiceOperations.xsd</value> 
       </list> 
      </property> 
     </bean> 
    </property> 
    <property name="portTypeName" value="MyWSEndpoint"/> 
    <property name="serviceName" value="MyWS" /> 
    <property name="locationUri" value="/"/> 
</bean> 

Мои PersonalDetailsServiceOperations.xsd

<?xml version="1.0" encoding="UTF-8"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:person="http://MyWS.com/" 
targetNamespace="http://MyWS.com/" 
elementFormDefault="qualified"> 
<xsd:include schemaLocation="PersonalDetails.xsd" /> 
<xsd:include schemaLocation="PersonalRequest.xsd" /> 
</xsd:schema> 

Я использую весной + Maven + XSD + JAXB

Помогите

Many Thanks

ответ

0

Часто это происходит из-за того, что вы не вставляете правильное местоположение в WSDL в интерфейс SOAP. Когда вы перейдете к WSDL в браузере, Spring-ws будет обслуживать его почти на любом URL-адресе, если он заканчивается на XYZService.wsdl (или как вы его настроили). Недостатком этого является то, что когда вы импортируете XSD с использованием относительных путей внутри вашей схемы, пользовательский интерфейс SOAP пытается разрешить относительный путь на основе пути, который вы ему дали, но, как я уже сказал, это не может быть реальным путем к WSDL.

Например, в нашем приложении у нас есть служба веб-службы Spring-ws ProcessService. Он подан в http://localhost:11000/ws/service/process/ProcessService.wsdl и содержит импортированный XSD с использованием относительных путей. Если вы вставляете этот URL в интерфейс SOAP и запускаете его, он правильно разрешает путь к XSD. Однако вы можете перейти на http://localhost:11000/hello-world/ProcessService.wsdl, и он все равно будет обслуживать вас WSDL, даже если URL-адрес неверен. Теперь, если вы берете http://localhost:11000/hello-world/ProcessService.wsdl и вставляете его в интерфейс SOAP, он не сможет правильно разрешить относительный путь к импортированному XSD, потому что это не настоящий URL. В этом случае SOAP UI дает вам точную ошибку.

Я бы посмотрел на ваш XSD в браузере и убедился, что вы его видите. Затем я проверил бы URL-адрес, который вы вставляете в пользовательский интерфейс SOAP, и посмотрите, действительно ли из относительных URL-адресов правильно разрешены. Если нет, вам нужно указать правильный путь к интерфейсу SOAP.