我正在使用消息驱动bean。它们是池的,所以有很多实例。我需要在onMessage方法中使用JAXB解组器。我想要的是在init方法中创建解组程序实例,例如:
public class MyMDB implemetns MessageListener {
private Unmarshaller unmarshaller;
@PostConstruct
public void init() {
unmarshaller = JAXBContext.newInstance(...)
}
public void onMessage(Message message) {
// use unmarshaller
}
}
在这种情况下,我应该为并发性问题操心吗?据我所知,解组器不是线程安全的。我应该在这里使用ThreadLocal吗? Unmadshaller
的创建是轻的。您可以保留对线程安全JAXBContext
的引用,然后在每次需要时创建一个新的Unmarshaller
。