我在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>
我的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>
我正在使用spring + Maven + xsd + jaxb
请帮忙
非常感谢
通常会发生这种情况,因为您没有将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的正确路径。