У меня в сервлете конфигурация пружины ...
<context:component-scan base-package="org.knowledgebase.webservice"/>
<sws:annotation-driven/>
<sws:dynamic-wsdl id="carService"
portTypeName="carService"
locationUri="/carService/">
<sws:xsd location="classpath:/wsDefinition/car/properties.xsd"/>
<sws:xsd location="classpath:/wsDefinition/car/carServiceSimple.xsd"/>
</sws:dynamic-wsdl>
<bean class="org.springframework.ws.soap.axiom.AxiomSoapMessageFactory">
<property name="soapVersion">
<util:constant static-field="org.springframework.ws.soap.SoapVersion.SOAP_11"/>
</property>
</bean>
и два XSD в одной папке - carServiceSimple.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:pro="http://bar.foo/properties"
targetNamespace="http://bar.foo"
elementFormDefault="qualified">
<xs:import schemaLocation="properties.xsd" namespace="http://bar.foo/properties"/>
<xs:element name="StoreCarRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" type="xs:string"/>
<xs:element name="Name" type="xs:string"/>
<xs:element name="Properties" type="pro:PropertiesType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="StoreCarResponse">
<xs:sequence>
<xs:element name="Status" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="UpdateCarRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" type="xs:string"/>
<xs:element name="Properties" type="pro:PropertiesType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="UpdateCarResponse">
<xs:sequence>
<xs:element name="Status" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Но после развертывания на Glassfish 3 возникает исключение: для нескольких элементов требуется Commons XMLSchema. Пожалуйста, поместите Commons XMLSchema в путь к классам.
Spring ws doc раздел 5.3.1:
Если вы хотите использовать несколько схем, либо с помощью включений, либо с помощью импорта, вы должны поместить Commons XMLSchema в путь классов. Если Commons XMLSchema находится на пути к классам, вышеуказанный элемент будет следовать за всеми импортами XSD и включать их и встроит их в WSDL как один XSD.
Что означает "Commons XMLSchema"? Как я могу это исправить? Thx.
У меня есть оба XSD-файла на пути к классам (на войне: WEB-INF \ classes \ wsDefinition \ car). Когда я удаляю строку из сервлета, то генерируется доступный wsdl, но когда я хочу создать базу проекта SoapUI на этом wsdl, SopaUI показывает ошибку: невозможно найти properties.xsd.