xsd:包含soapUI中的异常:org.apache.xmlbeans.XmlException:org.apache.xmlbeans.XmlException:错误:null之后的文件意外结束

问题描述 投票:2回答:1

我在soapUI中创建新项目并从URL导入wsdl文件时遇到问题。它给出了以下异常

加载错误[http://localhost:8080/WS/PersonalDetails.xsd]:org.apache.xmlbeans.XmlException:org.apache.xmlbeans.XmlException:错误:null之后的文件意外结束

我的xsd包括

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

xsd的实际位置

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

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

我的spring-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>

我的PersonalDetailsS​​erviceOperations.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>

我正在使用spring + Maven + xsd + jaxb

请帮忙

非常感谢

java xsd jaxb wsdl spring-ws
1个回答
0
投票

通常会发生这种情况,因为您没有将WSDL的正确位置粘贴到SOAP UI中。当您在浏览器中浏览到WSDL时,spring-ws将在几乎任何url上提供它,只要它以XYZService.wsdl结尾(或者您已配置它的任何内容)。这样做的缺点是,当您在某个地方使用相对路径导入XSD时,SOAP UI会尝试根据您给出的路径解析相对路径,但就像我说的那样,这可能实际上并不是真正的路径。 WSDL。

例如,在我们的应用程序中,我们有一个Spring-ws Web服务调用ProcessService。它在http://localhost:11000/ws/service/process/ProcessService.wsdl上提供,它包含使用相对路径的导入XSD。如果将此URL粘贴到SOAP UI并运行它,它会正确解析XSD的路径。但是,您可以浏览到http://localhost:11000/hello-world/ProcessService.wsdl,即使URL不正确,它仍将为您提供WSDL服务。现在,如果您使用http://localhost:11000/hello-world/ProcessService.wsdl并将其粘贴到SOAP UI中,它将无法正确解析导入XSD的相对路径,因为这不是实际的URL。在这种情况下,SOAP UI会为您提供准确的错误。

我会在浏览器中浏览你的XSD,并确保你能看到它。然后,我将检查您粘贴到SOAP UI中的URL,并查看相对URL是否实际正确解析。如果没有,您需要提供SOAP UI的正确路径。

© www.soinside.com 2019 - 2024. All rights reserved.