我尝试从Clickatell wsdl生成JAXB类:您可以在这里找到wsdl定义,它相当大:http://api.clickatell.com/soap/webservice.php?WSDL
当我尝试从这个Wsdl生成java类时,出现了以下错误:[错误]未定义的简单或复杂型别'SOAP-ENC:Array' [错误]未定义的属性'SOAP-ENC:arrayType'
我希望有人能帮我。干杯,蒂姆
我尝试从Clickatell wsdl生成JAXB类:您可以在这里找到wsdl定义,它相当大:http://api.clickatell.com/soap/webservice.php?WSDL
当我尝试从这个Wsdl生成java类时,出现了以下错误:[错误]未定义的简单或复杂型别'SOAP-ENC:Array' [错误]未定义的属性'SOAP-ENC:arrayType'
我希望有人能帮我。干杯,蒂姆
5条答案
按热度按时间58wvjzkj1#
您的模式引用了模式
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/
中定义的类型SOAP-ENC:Array
,但该模式未包含在wsdl中。我遇到了类似的问题,不得不使用目录告诉jaxb/xjc在哪里可以找到模式。
转到http://schemas.xmlsoap.org/soap/encoding/并另保存为soapenc.xsd
然后创建包含以下内容的纯文本文件
然后将该文件作为目录文件传递给xjc
更新:如果你是对maven,这是如何将所有挂在一起。
将架构、soapenc.xsd和catalog.cat(纯文本文件)放在src/main/resources中
然后告诉jaxb插件将目录传递给xjc
y4ekin9u2#
我认为最好的方法是使用旧的good axis 1. 4。它被设计为与rpc服务一起工作,它通常完成它的工作。主要的问题是这个库非常非常旧(jar在2006年被上传到中央),它不再被维护了。
如果您决定给予一下,只需将以下依赖项添加到您的pom中:
添加以下插件:
把你的wsdl文件放到
src/main/resources/my_service.wsdl
中,然后用mvn clean package
构建应用程序。插件详细信息可在here中找到
q1qsirdb3#
请查看www.example.com上的WS-I基本配置文件-1.1规范http://www.ws-i.org/Profiles/BasicProfile-1.1.html#soapenc_Array
上面写着:
R2110在说明中,声明不得扩展或限制soapenc:Array类型。
R2111在说明中,声明不得在类型声明中使用wsdl:arrayType属性。
R2112在描述中,元素不应使用ArrayOfXXX约定命名。
R2113信封不得包含soapenc:arrayType属性。
哟!
vc9ivgsu4#
我在使用axis1.5的wsdl2java实用程序时,我们在数组上遇到了类似的错误。
正如上面关于soapenc.xsd的回答之一所解释的,我尝试通过使用网站“http://schemas.xmlsoap.org/soap/encoding/”的内容创建soapenc.xsd来更新我的wsdl文件。如下所示,这对我来说真的很有效。
rt4zxlrg5#
JAXB不支持RPC/编码。请使用JAX-RPC来解决此问题。