我正在通过使用一个wsdl和多个xsd文件来创建一个肥皂服务。 xsd文件包含在我的wsdl中。我已经尝试过使用maven与jaxws和cxf插件。这两个插件在解析wsdl时都抛出错误/异常。
以下是来自jaxws的错误:
[错误]无效的wsdl:operation“ insertSubscriber”:其文档操作,消息部分必须引用架构元素声明
CXF死了,没有抛出任何错误描述。
jxc框架从xsd文件创建类,但是它们没有用,因为我必须手动创建端点并且类的链接已经在我的wsdl中定义。
我也有C ++ gsoap客户端,它使用相同的wsdl和xsds来创建我的soap服务,但是我想将我的服务迁移到Java应用程序。如何解决以上问题?
wsdl片段:
<wsdl:import namespace="MyDomain/mytypes" location="MyTypes1.xsd"/>
<xsd:complexType name="insertSubscriberRequest">
<xsd:sequence>
<xsd:element name="insertAddressList" type="mytypes:InsertAddressList"/>
</xsd:sequence>
</xsd:complexType>
<wsdl:message name="insertSubscriberRequest">
<wsdl:part name="insertSubscriberRequest" type="tns:insertSubscriberRequest"/>
</wsdl:message>
<!--wsdl operation-->
<wsdl:portType name="myService">
<wsdl:operation name="insertSubscriber">
<wsdl:input message="tns:insertSubscriberRequest"/>
<wsdl:output message="tns:insertSubscriberResponse"/>
</wsdl:operation>
</wsdl:portType>
<!--soap operation-->
<wsdl:operation name="insertSubscriber">
<soap:operation soapAction="MyDomain/mytypes/insertSubscriber"/>
<wsdl:input>
<soap:body use="literal" namespace="MyDomain/mytypes"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal" namespace="MyDomain/mytypes"/>
</wsdl:output>
</wsdl:operation>
MyTypes1.xsd中的片段:
<xs:complexType name="InsertAddressList">
<xs:annotation>
<xs:documentation>Definition of a list of Account IDs for Insert operation</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="accountId" type="MyType2:sdsAccountId" minOccurs="10" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
MyTypes2.xsd中的片段
<xs:simpleType name="sdsAccountId">
<xs:annotation>
<xs:documentation>Definition of Account ID parameter</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="26"/>
<xs:pattern value="([0..9]){1,26}"/>
</xs:restriction>
</xs:simpleType>
答案 0 :(得分:0)
我验证了WSDL文件,并且导入错误。实际上,它两次在wsdl:definitions和两次在xsd:schema中导入xsds。从wsdl:definitions删除导入对我有用,
使用wsimport时,我面临着同样的问题,但是它正在使用cxf。