C.3 Know-how for efficiently using XML Processor
This subsection provides the know-how for efficiently using XML Processor.
-
The following methods exclusively control the threads internally. Therefore, if multiple threads invoke these methods concurrently, exclusive waiting might occur and the throughput might be affected:
-
The newInstance method of the factory classes of the following JAXP APIs:
javax.xml.datatype.DatatypeFactory
javax.xml.parsers.DocumentBuilderFactory
javax.xml.parsers.SAXParserFactory
javax.xml.transform.TransformerFactory
javax.xml.validation.SchemaFactory
javax.xml.xpath.XPathFactory
-
The newDocumentBuilder method of the javax.xml.parsers.DocumentBuilder class
-
The transform method of the javax.xml.transform.Transformer class
-
The evaluate method of the javax.xml.XPath class
Among these methods, the methods from 1 to 2 generate objects, so the processing is comparatively heavy. Therefore, re-use the generated objects and preferably do not invoke these methods frequently.
-
-
If you need to create multiple Transformers from the same style sheet with the XSLT functionality, instead of creating Transformer directly from TransformerFactory, creating one Templates object, and then creating multiple Transformers from this object is advantageous with respect to the execution performance.
-
To re-use the same XPath expression with the XPath functionality, using the compile method of the XPath class, and creating and re-using the XPathExpression object is advantageous with respect to the execution performance.
-
You can use the DOM API to implement the same processing as the XPath functionality. Using the DOM API is advantageous in terms of the execution speed, but you must code a complicated process depending on the structure of the input XML document, and furthermore, when the structure of the XML document is changed, you must re-write the processing, so this process is inferior to XPath in terms of maintainability.
-
Instead of the Validation functionality, you can also implement the validation processing using the XML schema with a DOM parser or SAX parser; however, when you repeat the validation processing by using the same schema document, the Validation functionality that can re-use the schema document parsing results as objects is advantageous with respect to the execution performance.
-
The generation of the JAXBContext object increases the load, so re-using the objects as much as possible is advantageous with respect to the execution performance.