Vla*_*mir 111 java jaxb marshalling
问题有点理论化,创建JAXB上下文,marshaller和unmarshaller的成本是多少?
我发现我的代码可以从保持相同的JAXB上下文和可能与所有编组操作相同的编组器中受益,而不是在每个编组时创建上下文和编组器.
那么创建JAXB上下文和marshaller/unmarshaller的成本是多少?是否可以为每个编组操作创建context + marshaller,或者最好避免它?
bdo*_*han 230
注意: 我是EclipseLink JAXB(MOXy)的负责人,也是JAXB 2(JSR-222)专家组的成员.
JAXBContext
是线程安全的,只应创建一次并重复使用,以避免多次初始化元数据的成本. Marshaller
并且Unmarshaller
不是线程安全的,但是要创建轻量级,并且可以按操作创建.
Sah*_*hoo 40
理想情况下,你应该有一个单身JAXBContext
和本地实例Marshaller
和Unmarshaller
.
JAXBContext
实例是线程安全的,Marshaller
而Unmarshaller
实例不是线程安全的,不应该跨线程共享.
JB *_*zet 14
遗憾的是,这在javadoc中没有具体描述.我能说的是Spring使用了一个在线程之间共享的全局JAXBContext,而它为每个编组操作创建了一个新的编组器,代码中的javadoc注释表明JAXB marshallers不一定是线程安全的.
本页也是如此:https://javaee.github.io/jaxb-v2/doc/user-guide/ch03.html#other-miscellaneous-topics-performance-and-thread-safety.
我猜想创建一个JAXBContext是一项代价高昂的操作,因为它涉及扫描类和注释的包.但测量它是最好的方法.
归档时间: |
|
查看次数: |
43912 次 |
最近记录: |