web服务单击将SOAP wsdl转换为JAXB java类
我试图从Clickatell wsdl生成JAXB类: 您可以在这里找到非常大的wsdl定义: http://api.clickatell.com/soap/webservice.php?WSDL
尝试从此Wsdl生成java类时,我遇到以下错误: [错误]未定义的简单或复杂类型“SOAP-ENC:数组” [错误]未定义的属性“SOAP-ENC:arrayType”
我希望有人能帮助我。 干杯 提姆
你可以在下面搜索框中键入要查询的问题!
我试图从Clickatell wsdl生成JAXB类: 您可以在这里找到非常大的wsdl定义: http://api.clickatell.com/soap/webservice.php?WSDL
尝试从此Wsdl生成java类时,我遇到以下错误: [错误]未定义的简单或复杂类型“SOAP-ENC:数组” [错误]未定义的属性“SOAP-ENC:arrayType”
我希望有人能帮助我。 干杯 提姆
# 1 楼答案
JAXB不支持RPC/编码。使用JAX-RPC解决此问题
# 2 楼答案
我使用的是axis1的wsdl2java实用程序。我们在数组上得到了类似的错误
正如上面soapenc上的一个答案所解释的。在xsd中,我尝试通过创建soapenc来更新我的wsdl文件。包含网站“http://schemas.xmlsoap.org/soap/encoding/”内容的xsd。 如下图所示,这对我来说非常有效
# 3 楼答案
我认为最好的方法是使用旧的好轴1.4。它被设计为与rpc服务一起工作,并且通常完成它的工作。主要的问题是这个库非常非常旧(jar在2006年被上传到了central),它不再被维护
如果您决定尝试一下,只需在pom中添加以下依赖项:
添加以下插件:
将您的wsdl文件放入
src/main/resources/my_service.wsdl
,并通过mvn clean package
构建应用程序插件详细信息可在here中找到
# 4 楼答案
您的架构引用了架构xmlns:SOAP-ENC=”中定义的类型SOAP-ENC:Arrayhttp://schemas.xmlsoap.org/soap/encoding/“但该模式不包括在wsdl中
我遇到了一个类似的问题,必须使用目录来告诉jaxb/xjc在哪里可以找到模式
转到http://schemas.xmlsoap.org/soap/encoding/并另存为soapenc。xsd
然后创建一个包含以下内容的纯文本文件
然后将该文件作为目录文件传递给xjc
更新:如果你在maven上,这就是它如何结合在一起的
放置模式soapenc。xsd和目录。src/main/resources中的cat(纯文本文件)
然后告诉jaxb插件将目录传递给xjc
# 5 楼答案
检查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属性
哟!