Вы уже заметили, что один объект JAXBContext contextObj
недостаточно.
Вместо этого вам нужно Map<Class, JAXBContext>
отображение от Class
объектов до JAXBContext
объектов.
Вам нужно немного реорганизовать свой метод getInstance(Class)
.
Необходимо изменить только 3 строки (отмеченные //!!
).
В Map
вы сохраняете все созданные ранее JAXBContext
объекты.
Всякий раз, когда вам нужен JAXBContext
, который уже был создан ранее,
вы найдете его в Map
и можете использовать его снова.
public class JAXBInitialisedSingleton {
private static Map<Class, JAXBContext> contextMap = new HashMap<>(); //!!
private JAXBInitialisedSingleton() {
}
public static JAXBContext getInstance(Class abc) {
JAXBContext contextObj = contextMap.get(abc); //!!
try {
if (contextObj == null) {
contextObj = JAXBContext.newInstance(abc);
contextMap.put(abc, contextObj); //!!
}
} catch (JAXBException e) {
throw new IllegalStateException("Unable to initialise");
}
return contextObj;
}
}