2016-03-17 1 views
0

я реализовал класс Util со следующим статическим методом:Создайте экземпляр JAXB Marshaller в статическом методе ... это ThreadSafe?

public static String objToXml(JAXBContext jaxbContext, ClassA obj) throws Exception{ 
    Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); 
    jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 
    StringWriter writer = new StringWriter(); 
    marshaller.marshal(obj, writer); 
    return writer.toString(); 
} 

Я понимаю, что JAXB ИАС и StringWriter являются поточно ... но я хочу, чтобы дважды подтвердить, если я реализую статический метод, как это .. и имеют несколько потоков, вызывающих метод objToXml одновременно, будет ли какая-нибудь потенциальная проблема?

ответ

1

Да, вы должны создать новый Marshaller каждый раз, если вы планируете использовать их многопоточными.

См Unofficial JAXB Guide

Класс JAXBContext является поточно, но классы ИАС, Unmarshaller и Validator являются не поточно.

Смежные вопросы