我有一个WSDL文档:
<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://java.CAEServer"
xmlns:server="http://caeserver.caebeans.org"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.xmlsoap.org/wsdl/"
targetNamespace="http://java.CAEServer"
name="CAEInstanceImplService">
<types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://caeserver.caebeans.org"
xmlns:test="http://example.org"
xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:serv="http://caeserver.caebeans.org"
attributeFormDefault="unqualified" elementFormDefault="qualified">
<xsd:element name="data" type="xsd:string"/>
<xsd:element name="parameter">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="text">
<xsd:complexType>
<xsd:attribute name="data" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="units">
<xsd:complexType>
<xsd:attribute name="data" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="comment">
<xsd:complexType>
<xsd:attribute name="data" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="enums" type="xsd:string"/>
<xsd:element name="default" type="xsd:int"/>
<xsd:element name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="visible" type="xsd:boolean"/>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="languageData">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="name" type="xsd:string"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:element name="language">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="data" type="serv:languageData"/>
</xsd:sequence>
<!--<xsd:attribute name="xml:lang" type="xsd:string"/>-->
</xsd:complexType>
</xsd:element>
<xsd:element name="instance_ID" type="xsd:string"/>
<xsd:element name="problemCaebean">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="categories">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="category">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" ref="serv:parameter"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string"/>
<xsd:attribute name="data" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="resources">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" ref="serv:language"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string"/>
<xsd:attribute name="author" type="xsd:string"/>
<xsd:attribute name="version" type="xsd:decimal"/>
<xsd:attribute name="caebeanId" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="caeProject">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="serv:problemCaebean"/>
<xsd:element name="logical">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="node">
<xsd:complexType>
<xsd:attribute name="id" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="condition" type="xsd:string"/>
<xsd:attribute name="execute" type="xsd:string"/>
<xsd:attribute name="x" type="xsd:int"/>
<xsd:attribute name="y" type="xsd:int"/>
</xsd:complexType>
</xsd:element>
<xsd:element maxOccurs="unbounded" name="edge">
<xsd:complexType>
<xsd:attribute name="source" type="xsd:string"/>
<xsd:attribute name="target" type="xsd:string"/>
<xsd:attribute name="when" type="xsd:boolean"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="physical">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="componentCaebean">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="input">
<xsd:complexType>
<xsd:attribute name="filename" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element maxOccurs="unbounded" name="output">
<xsd:complexType>
<xsd:attribute name="filename" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="jar-premode">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="exec">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="param">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string"/>
<xsd:attribute name="appname" type="xsd:string"/>
<xsd:attribute name="appversion" type="xsd:decimal"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string"/>
<xsd:attribute name="author" type="xsd:string"/>
<xsd:attribute name="version" type="xsd:decimal"/>
<xsd:attribute name="id" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Status">
<xsd:complexType>
<xsd:choice>
<xsd:element name="NOT_STARTED"/>
<xsd:element name="RUNNING"/>
<xsd:element name="HELD"/>
<xsd:element name="SUCCESSFULL"/>
<xsd:element name="FAILED"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="CurrentTime">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:dateTime">
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="TerminationTime" nillable="true">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:dateTime">
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Description">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="serv:Status"/>
<xsd:element ref="serv:TerminationTime"/>
<xsd:element ref="serv:CurrentTime"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!--
message used to create a new instance WS-Resource
-->
<xsd:element name="createInstance">
<xsd:complexType/>
</xsd:element>
<!--
the response, simply contains an EPR to the new instance
-->
<xsd:element name="createInstanceResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="instanceID" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="submitJob">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="serv:instance_ID"/>
<xsd:element ref="serv:problemCaebean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="submitJobResponse">
<xsd:complexType>
<xsd:sequence>
<!--<xsd:element name="xml" type="xsd:string"/>-->
<xsd:element name="Result" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getStatus">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="instance_ID" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getStatusResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="serv:Status"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</types>
<message name="SubmitJobRequest">
<part name="parameter" element="server:submitJob"/>
</message>
<message name="SubmitJobResponse">
<part name="parameter" element="server:submitJobResponse"/>
</message>
<message name="GetStatusRequest">
<part name="parameter" element="server:getStatus"/>
</message>
<message name="GetStatusResponse">
<part name="parameter" element="server:getStatusResponse"/>
</message>
<portType name="CAEInstance">
<operation name="SubmitJob">
<input message="tns:SubmitJobRequest"/>
<output message="tns:SubmitJobResponse"/>
</operation>
<operation name="GetStatus">
<input message="tns:GetStatusRequest"/>
<output message="tns:GetStatusResponse"/>
</operation>
</portType>
<binding name="CAEInstanceImplPortBinding" type="tns:CAEInstance">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="SubmitJob">
<soap:operation soapAction="http://java.CAEServer/submitJob"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="GetStatus">
<soap:operation soapAction="http://java.CAEServer/getStatus"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="CAEInstanceImplService">
<port name="CAEInstanceImplPort" binding="tns:CAEInstanceImplPortBinding">
<soap:address location="http://127.0.0.1:9000/caeinstance"/>
</port>
</service>
</definitions>
我正在使用命令
创建类型和服务定义wsimport -keep -verbose ../src/main/resources/instance.wsdl
但是当我编译并运行我的项目并尝试从生成的WSDL编译客户端存根时,我遇到了错误
parsing WSDL...
[ERROR] undefined element declaration 'ns1:instance_ID'
line 36 of http://localhost:9000/caeinstance?xsd=1
[ERROR] undefined element declaration 'ns1:Result'
line 49 of http://localhost:9000/caeinstance?xsd=1
我的WSDL出了什么问题?
答案 0 :(得分:1)
CXF和Eclipse都提供WSDL验证器。您应该通过其中一个运行WSDL并查看其内容。
答案 1 :(得分:0)
您是否创建了WSDL? 我认为您正在尝试使用一些未在WSDL中导出的数据类型。
wsdl引用一个名为's'的模式但是找不到它,因为它的URL是 XMLSchema但应该是 XMLSchema.xsd
你可以使用 wsimport -b http://www.w3.org/2001/XMLSchema.xsd usrtowsdl?WSDL