我正在从RESTful Web服务获得响应,该服务可以返回最长300kb的String。

当我尝试使用JaxB2解组时,最多需要12秒

有什么我可以做的吗?

public class Convertor{

   JAXBContext responseJaxbContext;

   public Convertor(){
      requestJaxbContext = JAXBContext.newInstance(MyClassResponse.class);
   }


    public MyClassResponse convertXml(String str) {
         MyClassResponse response = null;
        try {
             Unmarshaller jaxbUnMarshaller = bookingResponseJaxbContext.createUnmarshaller();
             StringReader reader = new StringReader(str);
             response = (MyClassResponse) jaxbUnMarshaller.unmarshal(reader);

        } catch (JAXBException e) {
            e.printStackTrace();
        }
        return response;
    }
}


更新:我通过使用禁用架构验证

jaxbUnMarshaller.setSchema(null);

现在,我的编组时间为5 -7秒。

最佳答案

确保只实例化一次JAXBContext / Convertor类。
以我的经验,创建JAXBContext是昂贵的。
编辑:
但这不是12秒的解释,我想...

07-26 01:13