我们遇到了Jaxb classCastException强调的JaxB类加载问题。
为了解决这个问题,我添加了com.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize = true,实际上修复了这个问题。
但是,我读到这将禁用Jaxb直接与字节码交互并通过Java Reflection API的能力,因此在通过“JAXBContext.newInstance”初始化新的Jaxb上下文时可能会有轻微的性能损失。
为了测试性能,我添加了一个简单的方法,它在for循环中调用JAXBContext.newInstance大约500次。我用flag = true和= false运行它。
在最糟糕的情况下,我发现每次调用平均性能仅为3.5毫秒。
有没有人有类似的问题,并尝试了上述修复?你的发现是什么?我找不到有关com.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize的更多信息。你能分享一下它的行为和影响吗?
来自IBM的关于JAXB Context初始化的文档可能对您有所帮助:JAXBContext Initialization Takes A Long Time
问题(摘要)
JAXBContext初始化会降低应用程序性能。
症状
WebSphere Application Server中的性能降低。
原因
JAXB上下文(javax.xml.bind.JAXBContext)对象实例化是一种资源密集型操作。 JAXB上下文实例化涉及与上下文关联的所有包和类的上下文的预加载和预创建(称为预缓存过程),然后是静态(直接和间接)引用的所有包和类。那些。性能延迟将与在此预缓存过程中创建JAXB期间传递的类数相关联。