1 Reply Latest reply on Mar 12, 2010 1:14 AM by Freeman(Yue) Fang

    How to implement Stream Unmarshaller in CXF-SE for large XML more than130MB

    sanjayk Newbie

      Dear Forum members,

       

      I am facing issue in using CXF service engine component in receiving very large XML file holds more than 130 MB.

       

      Here is the server environment.

       

      OS : Unix

      FUSE 3.3.1.18

      JDK 1.5.1_16

       

      Our Service unit sequence is liek below.

       

      HTTP SOAP-Consumer --> CXF-SE --> FUSE Mediation Router --> Bean Servicce Unit

       

       

      Soap consumer receives the large xml which sent by client. Then soap consumer sends the large XML as MTOM to CXF-SE service Unit.

       

      In CXF-SE implementation class we have operation specific methods which are defined in wsdl which has MTOM support. Client sends data in base64Binary format and CXF-SE converts that binary xml into textbased XML and Unmarshall into JAXB generated java objects and passes it to the operation in CXF-SE implementaion class.

       

      We are getting OutofMemory exception here in CXF-SE Service Unit when unmarshalling the large XML into JAXB generated java objects. We have increased heap memory upto 3GB then the problem solved for the single request. But still the problem(OutofMemory) persists for 3 concurrent requests.

       

      When we search in the internet some one suggested to use XMLStreamUnmarshaller for lage scale XML Unmarshalling.

       

      Could you please tell me how to implement Streaming Unmarshaller in CXF-SE Service Unit?

       

      Or

       

      Please help me in dealing large scale XML in CXF-SE.How to implement the CXF-SE Service unit in optimal use of memory?

       

      We thought of implementing the JIBX in CXF-SE but it is not supported in the FUSE version 3.3.1.18 which we are using. Please corect me if I am wrong?

       

      Please help me in resolving this issue.

       

      Thanks,

      Sanjay