I would like to know if you can suggest a better way of handling/parsing a
large GML2 document. At the moment, I'm using the sample code you have
provided in the
WFS_1_0_0_ParsingTest under gt-xsd-wfs package.

        File tmp = File.createTempFile("geoserver-DescribeFeatureType",
"xml");

        tmp.deleteOnExit();

        InputStream in = getClass().getResourceAsStream(
"geoserver-DescribeFeatureType.xml");

        copy(in, tmp);

        in = getClass().getResourceAsStream(
"geoserver-GetFeature-of-a-very-big-file.xml");

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

        dbf.setNamespaceAware(true);

        DocumentBuilder db = dbf.newDocumentBuilder();

        Document doc = db.parse(in);

        String schemaLocation = doc.getDocumentElement().getAttributeNS(

                "http://www.w3.org/2001/XMLSchema-instance";,
"schemaLocation");

        String absolutePath = DataUtilities.fileToURL(tmp).toExternalForm();

        schemaLocation = schemaLocation.replaceAll("
http://cite.opengeospatial.org/gmlsf .*",

                "http://cite.opengeospatial.org/gmlsf " + absolutePath);

        doc.getDocumentElement().setAttributeNS("
http://www.w3.org/2001/XMLSchema-instance";,

                "schemaLocation", schemaLocation);

        tmp = File.createTempFile("geoserver-GetFeature", "xml");

        tmp.deleteOnExit();

        Transformer tx = TransformerFactory.newInstance().newTransformer();

        tx.transform(new DOMSource(doc), new StreamResult(tmp));

        in = new FileInputStream(tmp);

        Parser parser = new Parser(configuration);

        FeatureCollectionType fc = (FeatureCollectionType) parser.parse(in);


After running the test against a GML2 document with more than 1000 features
(with geometry included in the returned attribute), it throws an
OutOfMemoryError. Any hints on what I can replace the Transformer.transform
call with? I don't think increasing the heap space will be a scalable
solution as I might have to handle datasets that are even bigger than the
limit I set for the heap memory.

Nov 20, 2012 12:53:01 PM org.apache.catalina.core.StandardWrapperValve
invoke

SEVERE: Servlet.service() for servlet [appServlet] in context with path
[/aurin-data-provider] threw exception [Handler processing failed; nested
exception is java.lang.OutOfMemoryError: Java heap space] with root cause

java.lang.OutOfMemoryError: Java heap space

at java.util.Arrays.copyOfRange(Arrays.java:3209)

at java.lang.String.<init>(String.java:215)

at java.lang.StringBuffer.toString(StringBuffer.java:585)

at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown
Source)

at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown
Source)

at org.apache.xerces.dom.DeferredTextImpl.synchronizeData(Unknown Source)

at org.apache.xerces.dom.CharacterDataImpl.getNodeValue(Unknown Source)

at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:240
)

at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:226
)

at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:226
)

at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:226
)

at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:226
)

at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:226
)

at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:226
)

at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:226
)

at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:226
)

at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:226
)

at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:226
)

at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:132
)

at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:94)

at
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(
TransformerImpl.java:679)

at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(
TransformerImpl.java:723)

at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(
TransformerImpl.java:336)


Thanks,
Logan
------------------------------------------------------------------------------
Monitor your physical, virtual and cloud infrastructure from a single
web console. Get in-depth insight into apps, servers, databases, vmware,
SAP, cloud infrastructure, etc. Download 30-day Free Trial.
Pricing starts from $795 for 25 servers or applications!
http://p.sf.net/sfu/zoho_dev2dev_nov
_______________________________________________
GeoTools-GT2-Users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users

Reply via email to