JAXB实现(Metro,Eclipselink
MOXy,Apache
JaxMe等)通常在
JAXBContext.newInstance调用期间初始化其元数据。所有OXM工具都需要在某个时候初始化映射元数据,并尝试最小化此操作的成本。由于不可能用零成本做到这一点,因此最好只做一次。JAXBContext的实例是线程安全的,因此,您只需创建一次即可。
根据JAXB 2.2规范的第4.2节JAXB上下文:
为了避免创建JAXBContext实例所涉及的开销,鼓励JAXB应用程序重用JAXBContext实例。抽象类JAXBContext的实现必须是线程安全的,因此,应用程序中的多个线程可以共享同一JAXBContext实例。
Marshaller和Unmarshaller的实例不是线程安全的,并且不能在线程之间共享,它们的创建是轻量级的。



