com.sun.istack.SAXException2:Instance ...替换为“java.lang.Object”,但是...绑定到匿名类型 [英] com.sun.istack.SAXException2 : Instance ... is substituting "java.lang.Object", but ... is bound to an anonymous type
问题描述
我正在从1.x版本将项目升级到jaxb 2.2.7。
I'm upgrading a project to jaxb 2.2.7 from version 1.x.
我已经让应用程序工作了一段时间,但在一些响应我看到了:
I've got the app working some of the time, but on some responses I see this:
java.lang.RuntimeException: javax.xml.bind.MarshalException
- with linked exception:
[com.sun.istack.SAXException2: Instance of "com.mycompany.global.er.decoupling.binding.response.PricePointType$BalanceImpactRates$BalanceImpactRate"
is substituting "java.lang.Object", but
"com.mycompany.global.er.decoupling.binding.response.PricePointType$BalanceImpactRates$BalanceImpactRate"
is bound to an anonymous type.]
这在jaxb 1.0中运行良好。我不知道问题是什么。
This worked fine in jaxb 1.0. I've no idea what the problem could be.
这是xsd的摘录(我无法更改,因为客户正在使用它):
Here's an extract from the xsd (which I can't change, since clients are using it):
<xs:complexType name="price-pointType">
<xs:sequence>
<xs:element name="id" type="xs:string" />
.........
<xs:element name="duration" type="durationType" />
<xs:element name="order" type="xs:int" />
<xs:element name="min-sub-period" type="xs:int" />
<xs:element name="balance-impacts" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="balance-impact" type="charging-resourceType"
minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="balance-impact-rates" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="balance-impact-rate" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="rate" type="xs:double" />
</xs:sequence>
<xs:attribute name="charging-resource-code" type="xs:string"
use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
有什么建议吗?
推荐答案
问题结果是匿名复杂类型的精心嵌套。
The problem turned out to be the elaborate nesting of anonymous complex types.
通过将它们分开如下,问题就消失了。另外,我获得了更多可重复使用的代码。
By separating them out as below, the problem went away. And as an added bonus, I got more re-usable code.
<xs:complexType name="balanceImpactRate">
<xs:sequence>
<xs:element name="rate" type="xs:double" />
</xs:sequence>
<xs:attribute name="charging-resource-code" type="xs:string"
use="required" />
</xs:complexType>
<xs:complexType name="balanceImpactRates" >
<xs:sequence>
<xs:element name="balance-impact-rate" type="balanceImpactRate" minOccurs="0"
maxOccurs="unbounded">
</xs:element>
</xs:sequence>
</xs:complexType>
这篇关于com.sun.istack.SAXException2:Instance ...替换为“java.lang.Object”,但是...绑定到匿名类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!