我正在使用JAXB和SAX。我正在使用Unmarshaller来解组数据。提到here,在将JAXB与SAX结合使用时,我们必须使用UnmarshallerHandler而不是Unmarshaller。然后UnmarshallerHandler不是线程安全的。
那么我应该将解组代码包装在如下所示的同步块中吗?
synchronized(this) {
UnmarshallerHandler unmarshallerHandler = unmarshaller.getUnmarshallerHandler();
reader.setContentHandler(unmarshallerHandler);
reader.parse(xml);
Foo foo = (Foo) unmarshallerHandler.getResult();
}
现在使用UnmarshallerHandler优于Unmarshaller的优势是什么?
答案 0 :(得分:0)
UnmarshallerHandler
的引入使得那些需要使用SAX解析器显式使用JAXB的人很容易(例如,他们需要做一些特定的设置)。当您使用Unmarshaller
时,JAXB impl正在处理它认为合适的解析。
除非您有理由使用UnmarshallerHandler
,否则您可能会使用Unmarshaller
。