Генерация Java из ошибок WSDL и XSD
Я новичок в wsdl/xsd, пытаюсь сгенерировать классы Java со следующими двумя файлами
Я получаю ряд ошибок от wsdl2java, в том числе файл wsdl не определяет сервисы, и что элементы из файла xsd не могут быть найдены.
Кто-нибудь знает, в чем может быть проблема?
ChipDataJob.xsd
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://contmgmt.ecm.omega/WorkspaceManager/ChipDataJob"
targetNamespace="http://contmgmt.ecm.omega/WorkspaceManager/ChipDataJob"
elementFormDefault="qualified" attributeFormDefault="qualified">
<xs:element name="dataChipperJob" type="tns:ChipJob"></xs:element>
<xs:element name="dataChipperResponse" type="xs:long"></xs:element>
<xs:element name="cancelResponse" type="xs:boolean"></xs:element>
<xs:complexType name="ChipJob">
<xs:sequence>
<xs:element name="outputFilename" type="xs:string">
</xs:element>
<xs:element name="uuidDataObjects">
<xs:simpleType>
<xs:list itemType="xs:string" />
</xs:simpleType>
</xs:element>
<xs:element name="parameters" type="tns:ChipParameters"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ChipParameters">
<xs:all>
<xs:element name="chipStartTime" type="xs:double">
</xs:element>
<xs:element name="chipEndTime" type="xs:double">
</xs:element>
<xs:element name="fillDuration" type="xs:float">
</xs:element>
<xs:element name="GapFillMethod">
<xs:simpleType final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="NONE" />
<xs:enumeration value="ZERO_FILL" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="StitchMarkerFormat">
<xs:simpleType final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="NONE" />
<xs:enumeration value="FILL" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="SequenceMethod">
<xs:simpleType final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="TIMECODE" />
<xs:enumeration value="MANUAL" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:schema>
DataChipper.wsdl
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://contmgmt.ecm.omega/WorkspaceManager/ChipDataJob"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://contmgmt.ecm.omega/WorkspaceManager/ChipDataJob">
<wsdl:types>
<xsd:schema
targetNamespace="http://contmgmt.ecm.omega/WorkspaceManager/ChipDataJob"
xmlns:tns="http://contmgmt.ecm.omega/WorkspaceManager/ChipDataJob"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="qualified">
<xsd:include schemaLocation="ChipDataJob.xsd" />
</xsd:schema>
</wsdl:types>
<!-- Chip Message -->
<wsdl:message name="dataChipperJob">
<wsdl:part name="job" element="tns:ChipJob" />
</wsdl:message>
<wsdl:message name="dataChipperResponse">
<wsdl:part name="taskId" element="xs:long" />
</wsdl:message>
<wsdl:message name="cancelResponse">
<wsdl:part name="cancelSuccess" element="xs:boolean" />
</wsdl:message>
<wsdl:portType name="DataChipperServicePort">
<wsdl:operation name="submitRequest">
<wsdl:input message="tns:dataChipperJob"/>
<wsdl:output message="tns:dataChipperResponse"/>
</wsdl:operation>
<wsdl:operation name="cancelRequest">
<wsdl:input message="tns:dataChipperResponse"/>
<wsdl:output message="tns:cancelResponse"/>
</wsdl:operation>
</wsdl:portType>
</wsdl:definitions>
1 ответ
Решение
Вот что я обнаружил, что не так с wsdl.
<wsdl:message name="dataChipperJob">
<wsdl:part name="job" element="tns:ChipJob" />
</wsdl:message>
<wsdl:message name="dataChipperResponse">
<wsdl:part name="taskId" element="xs:long" />
</wsdl:message>
<wsdl:message name="cancelResponse">
<wsdl:part name="cancelSuccess" element="xs:boolean" />
</wsdl:message>
Теги элемента относятся к элементу Типы, а не сами элементы. Их следует изменить на
<wsdl:message name="dataChipperJob">
<wsdl:part name="job" element="tns:dataChipperJob" />
</wsdl:message>
<wsdl:message name="dataChipperResponse">
<wsdl:part name="taskId" element="tns:dataChipperResponse" />
</wsdl:message>
<wsdl:message name="cancelResponse">
<wsdl:part name="cancelSuccess" element="tns:cancelResponse" />
</wsdl:message>
Также wsdl должен определить привязку и сервис.