Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace XMLReaderFactory with SAXParserFactory #27239

Closed

Commits on Aug 4, 2021

  1. Replace XMLReaderFactory with SAXParserFactory

    XMLReaderFactory has been marked as deprecated and without additional
    configuration, and it's slower than SAXParserFactory.
    
    Previously `XMLReaderFactory.createXMLReader()` is called upon every
    request. This is an anti-pattern as mentioned in [1] and it can be very
    slow since it loads the jar service file unless a parser has been
    pre-assigned [2] (e.g. by setting org.xml.sax.driver).
    
    SAXParserFactory uses a FactoryFinder [3] instead, which takes advantage
    of a thread-local cache provided by ServiceLoader. Developers can still
    pre-assign a factory by setting javax.xml.parsers.SAXParserFactory to
    make it faster.
    
    [1] https://bugs.openjdk.java.net/browse/JDK-6925410
    [2] https://github.com/openjdk/jdk/blob/c8add223a10030e40ccef42e081fd0d8f00e0593/src/java.xml/share/classes/org/xml/sax/helpers/XMLReaderFactory.java#L144-L148
    [3] https://github.com/openjdk/jdk/blob/66c653c561b3b5e904579af62e23ff94952bca05/src/java.xml/share/classes/javax/xml/parsers/SAXParserFactory.java#L181-L185
    Frederick888 committed Aug 4, 2021
    Configuration menu
    Copy the full SHA
    929e9b6 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    877974b View commit details
    Browse the repository at this point in the history