web-services – 具有单个数组元素的复杂类型会引发编组异常

web-services – 具有单个数组元素的复杂类型会引发编组异常,第1张

概述我们有JAX-RPC样式的Web服务,其复杂类型定义如下: <xs:complexType name = "SomeFault"><xs:sequence><xs:element name = "errorMessages" type="some:ErrorMessageWSType" minOccurs="0" maxOccurs="unbounded" /></xs:sequence> 我们有JAX-RPC样式的Web服务,其复杂类型定义如下:

<xs:complexType name = "SomeFault"><xs:sequence><xs:element name = "errorMessages" type="some:ErrorMessageWSType" minOccurs="0" maxOccurs="unbounded" /></xs:sequence></xs:complexType><xs:simpleType name = "ErrorMessageWSType"><xs:restriction base = "xs:NMTOKEN"><xs:enumeration value = "INVALID_1"/><xs:enumeration value = "INVALID_2"/><xs:enumeration value = "INVALID_3"/></xs:restriction></xs:simpleType>

当响应/故障复杂类型具有单个阵列类型字段时,我们在服务器端遇到Marshaling异常.

weblogic.wsee.codec.CodecException: Failed to encode
com.bea.xml.XmlException: Failed to find a suitable binding type for
use in marshalling object
“[Lnamespace.type.ErrorMessageWSType;@693767e9”. using schema type:
t=SomeFault@http://namespace/SOME/v1 java
type:namespace.type.ErrorMessageWSType[]

如果我们更改SomeFault,通过向复杂类型添加另一个元素,错误就会消失.

<xs:complexType name = "SomeFault"><xs:sequence><xs:element name = "errorMessages" type="some:ErrorMessageWSType" maxOccurs="unbounded" /><xs:element name = "dummyString" type="xsd:string" minOccurs="0" /></xs:sequence></xs:complexType>

我们在wsdlc代码生成期间做错了什么或这是一个已知问题?

一个类似的问题已经发布在https://forums.oracle.com/forums/thread.jspa?messageID=4462906,但没有任何回应,任何指针都会很棒.

谢谢.

解决方法 不知道这是否解决了问题的“为什么”部分,但您可以尝试重写序列部分,如:

<xs:sequence minOccurs="0" maxOccurs="unbounded"><xs:element name="errorMessages" type="some:ErrorMessageWSType"/></xs:sequence>

OTOH,可能是让第二种情况起作用的机制,但不是第一种情况?
可能是编组人员必须弄清楚xsd:string是什么意思在检查一些:ErrorMessageWSType意味着什么,然后必须唤醒一个解析器或什么?
这种思路导致我尝试的第二种方法,即在SomeFault之前声明ErrorMessageWSType(也许在另一个命名空间中,只是为了查看是否修复了任何东西).

只是我的(累)两美分,我猜这两种方法都假设编组器中存在某种错误,因为我无法真正看到示例代码中的任何内容都不符合XML模式定义.

总结

以上是内存溢出为你收集整理的web-services – 具有单个数组元素的复杂类型会引发编组异常全部内容,希望文章能够帮你解决web-services – 具有单个数组元素的复杂类型会引发编组异常所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1054034.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存