我们有 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>
当响应/故障复杂类型具有单个数组类型字段时,我们在服务器端遇到编组异常。
weblogic.wsee.codec.CodecException:无法对 com.bea.xml.XmlException 进行编码:找不到合适的绑定类型以用于编组对象“[Lnamespace.type.ErrorMessageWSType;@693767e9”。使用模式类型: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已经发布了一个类似的问题,但如果没有任何回应,任何指针都会很棒。
谢谢。