Я пытаюсь создать jaxbContext, используя шаблон синглтона, но это не удается. Если я не использую singleton и делаю jaxbContext.newInstance (TelephoneNumberList.class), это работает. Но я хотел бы, чтобы jaxbContext создавался один раз.
package com.spectrum.sci.util;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import com.spectrum.sci.exception.OSMException;
import com.spectrum.sci.model.TelephoneNumberList;
@Component
public class JaxbContextHelperForTelephoneNumberList {
private static final Logger log = LoggerFactory.getLogger(JaxbContextHelperForTelephoneNumberList.class);
private static JAXBContext jaxbContextTelephoneNumberList;
private JaxbContextHelperForTelephoneNumberList() {
}
public static JAXBContext getJaxbContextInstanceForTelephoneNumberList() {
log.info("Entering getJaxbContextInstanceForTelephoneNumberList...");
try {
Class<TelephoneNumberList> telephoneNumberList = TelephoneNumberList.class;
if (jaxbContextTelephoneNumberList == null) {
jaxbContextTelephoneNumberList = JAXBContext.newInstance(telephoneNumberList);
}
} catch (JAXBException e) {
throw new OSMException("Unable to construct jaxbContextTelephoneNumberList...");
}
return jaxbContextTelephoneNumberList;
}
}
OrderUtil class calling JaxbContextHelperForTelephoneNumberList.getJaxbContextInstanceForTelephoneNumberList()
//Convert Xml String to TelephoneNumberList
public static TelephoneNumberList convertXmlStringToJavaObj(String xmlString) {
log.info("Entering TelephoneNumberList..." + xmlString );
JAXBContext jaxbContext;
try {
jaxbContext = JaxbContextHelperForTelephoneNumberList.getJaxbContextInstanceForTelephoneNumberList();
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
StringReader reader = new StringReader(xmlString);
StreamSource inputSource = new StreamSource(reader);
TelephoneNumberList msg = unmarshaller.unmarshal(inputSource,TelephoneNumberList.class).getValue();
return msg;
} catch (JAXBException e) {
throw new OSMException("Unable to Convert XML String to Java Objects " + e.getMessage(), e);
}
}
Я получаю сообщение об ошибке "Сообщение об исключении = Ошибка в OrderDetailsService - getTelephoneNumberList Невозможно создать jaxbContext"