Spring批处理Jaxb2Marshaller共享JAXBContext
我正在使用StatxeventitemReader来解组xml。在我的导入过程中,可能会有许多相同类型的文件(我使用自定义分区器为每个线程读取1个文件),我得到了很多: o、 s.oxm.jaxb.Jaxb2Marshaller:使用 要绑定的类 我读到JAXBContext是线程安全的。因此,似乎该部分可以改进,并且仅使用一个实例 我正在使用这个阅读器:Spring批处理Jaxb2Marshaller共享JAXBContext,jaxb,spring-batch,Jaxb,Spring Batch,我正在使用StatxeventitemReader来解组xml。在我的导入过程中,可能会有许多相同类型的文件(我使用自定义分区器为每个线程读取1个文件),我得到了很多: o、 s.oxm.jaxb.Jaxb2Marshaller:使用 要绑定的类 我读到JAXBContext是线程安全的。因此,似乎该部分可以改进,并且仅使用一个实例 我正在使用这个阅读器: public class MultiResourceXmlImportReader<T> extends MultiResour
public class MultiResourceXmlImportReader<T> extends MultiResourceItemReader<T> {
public MultiResourceXmlImportReader(FileTypeEnum fileType, Resource... resources) {
super();
setResources(resources);
setDelegate(new XmlImportReader(fileType.getRootElementName(), fileType.getXmlEntityClass()));
}
}
公共类MultiResourceXmlImportReader扩展了MultiResourceItemReader{
公共多资源XmlImportReader(文件类型枚举文件类型,资源…资源){
超级();
资源组(资源组);
setDelegate(新的XmlImportReader(fileType.getRootElementName(),fileType.getXmlEntityClass());
}
}
使用此ResourceAwareItemReaderItemStream:
public class XmlImportReader<T> extends StaxEventItemReader<T> {
public XmlImportReader(String rootElementName, Class<T> modelClass) {
setFragmentRootElementName(rootElementName);
Jaxb2Marshaller itemMarshaller = new Jaxb2Marshaller();
itemMarshaller.setClassesToBeBound(modelClass);
setUnmarshaller(itemMarshaller);
}
public XmlImportReader(String rootElementName, Class<T> modelClass, Resource resource) {
this(rootElementName, modelClass);
setResource(resource);
}
}
公共类XmlImportReader扩展了StateEventItemReader{
公共XmlImportReader(字符串rootElementName,类modelClass){
setFragmentRootElementName(rootElementName);
Jaxb2Marshaller itemmashaller=新的Jaxb2Marshaller();
itemMarshaller.setClassesToBeBound(modelClass);
setUnmarshaller(itemMarshaller);
}
公共XmlImportReader(字符串rootElementName、类modelClass、资源){
这(rootElementName,modelClass);
setResource(资源);
}
}
是否只需要使用1个安装版的JAXBContext?StateVentitemReader不是线程安全的。我只建议将它设置为
步骤
的作用域。我的问题是,是否可以在多个StateEventItemReader之间设置和共享JAXBContextStateEventItemReader
不是线程安全的。我只建议将它设置为步骤
的作用域。我的问题是,是否可以在多个StatxeventemReader之间设置和共享JAXBContext