Here is my conversion code. This is taking long time when we are dealing with large data... Calling the method almost a million times... We could clearly see that it is holding threads for a while.
Please suggest me some ways to improve the performance!
public class GenericObjectXMLConverter<T> { private T t = null; private static JAXBContext jaxbContext =null; public GenericObjectXMLConverter() { } public GenericObjectXMLConverter(T obj){ t = obj; } protected final Logger log = Logger.getLogger(getClass()); /** * Converts the java Object and into a xml string message type. * @param object the object to convert * @return String the converted xml message as string */ public String objectToXMLMessage(T object) { StringWriter stringWriter = new StringWriter(); //JAXBContext jaxbContext=null; try { jaxbContext = JAXBContext.newInstance(object.getClass()); Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); jaxbMarshaller.marshal(object, stringWriter); } catch (JAXBException e) { log.warn("JAXBException occured while converting the java object into xml string :"+e.getMessage()); } /*if(log.isDebugEnabled()) log.debug("xml string after conversion:"+stringWriter.toString());*/ return stringWriter.toString(); } /** * Converts a xml string message into a Java Object * @param string the string message to convert * @return Object the result as Java Object. If the message parameter is null then * this method will simply return null. */ @SuppressWarnings("unchecked") public T xmlToObject(String message) { if(message.equals("") || message.equals(" ") || message.length()==0){ return null; }else{ T object=null; try { jaxbContext = JAXBContext.newInstance(t.getClass()); StringReader reader = new StringReader(message); Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); object = (T)jaxbUnmarshaller.unmarshal(reader); } catch (JAXBException e) { log.warn("JAXBException occured while converting the xml string into a Java Object :"+e.getMessage()); } /* if(log.isDebugEnabled()){ log.debug("Java object after conversion:"+object.toString()); }*/ return object; } } }
object instancemight be different, but theclasswill probably be the same. I would be really surprised if you have a million different classes in your project :) - stackoverflow.com/questions/1215881/….