gpt4 book ai didi

java - 在解码期间从 ElementNSImpl 到自己的类型的间歇性 ClassCastException

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:19:45 26 4
gpt4 key购买 nike

我们遇到了一个极难追踪的问题,即在尝试遍历未编码的对象列表时有时 会看到 ClassCastExceptions。重要的一点是有时,在重新启动后特定代码可以正常工作。这似乎指向并发/时序/竞争条件的方向。我可以确认既没有同时使用 JAXBContext,也没有编码器和解码器。我们已经通过锁定序列化对它们的访问。

但是,由于我们在 OSGi 平台上运行,其中各个 bundle 通过 Spring DM 异步初始化,因此可能有 2 个不同的 bundle 同时创建它们的 JAXBContext。

在任何情况下,对于可能导致这些间歇性 ClassCastExceptions 的原因的解释,我将不胜感激。间歇性很重要,因为它们表明代码本身通常工作正常,但某些外部因素似乎会影响行为。

这是异常的具体示例(注意我删除了公司特定的内容):

Caused by: java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.ElementNSImpl cannot be cast to com.foobar.TunnelType
at com.foobar.NetMonitorImpl.getVpnStatus(NetMonitorImpl.java:180)

第 180 行的方法是一个 for() 构造,循环遍历未编码对象内的 TunnelType 对象集合(顺便说一句,未编码工作正常)。

考虑到实际的对象解码很顺利,JAXB 是否有可能在物理上将 ElementNSImpl 对象留在嵌套集合中?

运行时环境:

  • JAXB 2.1
  • 操作系统
  • Spring 直接营销
  • JAXBContext 使用包含要编码/解码的类的包的 ClassLoader 初始化

最佳答案

只有当我忘记告诉 JAXBContext 时我才会得到这个异常关于它可能处理的所有待编码类型。

JAXBContext.newInstance(MyClass1.class,MyClass2.class, [...]);

关于java - 在解码期间从 ElementNSImpl 到自己的类型的间歇性 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/377865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com