사실 저는 하나의 XStream 인스턴스 만 원합니다. 그래서 아래 클래스가 있습니다 :Java xStream processAnnotations concurrency
public class XSteamTool{
private static XStream xStream = new XStream();
static{
xStream.ignoreUnknownElements();
xStream.registerConverter(new DateConverter(TimeZone.getDefault()));
}
public static String objToXml(Object obj){
xStream.processAnnotations(obj.getClass());
return xStream.toXML(obj);
}
public static <T> T xmlToObj(String xmlString, Class<T> clazz){
xStream.processAnnotations(clazz);
return(T)xStream.fromXML(xmlString);
}
}
그러나이 문제는 멀티 스레드 환경에서 발생합니다. 공식 문서에서 해당 노트를 찾습니다. XStream은 스레드 안전입니다. 불행하게도 주석 잘 개체 마샬링이 나는 동기 전에 processAnnotations 그 시도
을 처리하는 동안 현재 적용되는 구성의 변화를 보이는 정의된다
public static String objToXml(Object obj){
synchronized (obj.getClass()) {
xStream.processAnnotations(obj.getClass());
}
return xStream.toXML(obj);
}
public static <T> T xmlToObj(String xmlString, Class<T> clazz){
synchronized (clazz) {
xStream.processAnnotations(clazz);
}
return(T)xStream.fromXML(xmlString);
}
가 궁금 사용이 맞다면 . 모든 제안을 부탁드립니다. 마침내
감사합니다. 그러나 그것은 싱글 톤에 관한 것이 아닙니다. – bluearrow