https://github.com/amazonwebservices/aws-sdk-for-java/blob/master/src/main/java/com/amazonaws/services/s3/model/transform/XmlResponsesSaxParser.java#L102
public XmlResponsesSaxParser() throws AmazonClientException { // Ensure we can load the XML Reader. try { xr = XMLReaderFactory.createXMLReader(); } catch (SAXException e) { // oops, lets try doing this (needed in 1.4) System.setProperty("org.xml.sax.driver", "org.apache.crimson.parser.XMLReaderImpl"); try { // Try once more... xr = XMLReaderFactory.createXMLReader(); } catch (SAXException e2) { throw new AmazonClientException("Couldn't initialize a sax driver for the XMLReader"); } } }
判別手順
- System.setPropertyガセットされている前提でXMLReaderFactory.createXMLReader();を実施
- だめならorg.apache.crimson.parser.XMLReaderImplを使ってみようか・・・
という順番で判定しているようです。
古いバージョンでは org.apache.crimson.parser.XMLReaderImpl でパースするのを試してうまく行けばラッキーという感じで、JavaやTomcatのバージョンを上げて動かなくなった場合、org.apache.crimson.parser.XMLReaderImplは古いからもう使えないよ・・・ということになって明示的に指定する必要がありそうです。