title: How can I improve JAXB performance?
body: <p>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.</p>
  
  <p>Please suggest me some ways to improve the performance!</p>
  
  <pre><code>public class GenericObjectXMLConverter&lt;T&gt; {
  
    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;
      }
    }
  
  }
  </code></pre>