パーサ切り替え機能は,XML ProcessorのXML実装と,フレームワークまたはユーザが指定したXML実装との優先順を切り替えられる機能です。この機能を使うことで,フレームワークに同梱されたXML実装へ切り替えられます。
パーサ切り替え機能を使用することで,他社製のXML実装を前提とするフレームワークを使用したアプリケーションでも,XML実装を切り替えられます。ただし,パーサ切り替え機能では,アプリケーションサーバのコンポーネントが使用するXML実装をXML Processorから切り替えることはできません。
パーサ切り替え機能の有効範囲はJ2EEサーバ単位です。パーサ切り替えの設定がほかのJ2EEサーバに影響を与えることはありません。
また,パーサ切り替え機能を有効にした場合でも,J2EEサーバ起動やデプロイの実行に関しては,ユーザが指定したXML実装ではなくXML Processorが使用されます。パーサ切り替え機能の有効範囲を次の図に示します。
図3-20 パーサ切り替え機能の有効範囲
JAXP,StAX,JAXBの各APIで,XML実装を切り替えられるメソッドを次の表に示します。
表3-9 XML実装を切り替えられるメソッド名
項番 | APIの種類 | クラス名 | メソッド名 |
---|---|---|---|
1 | JAXP API | javax.xml.datatype.DatatypeFactory | newInstance() |
2 | javax.xml.parsers.DocumentBuilderFactory | newInstance() | |
3 | javax.xml.parsers.SAXParserFactory | newInstance() | |
4 | javax.xml.transform.TransformerFactory | newInstance() | |
5 | javax.xml.transform.sax.SAXTransformerFactory | newInstance() | |
6 | javax.xml.validation.SchemaFactory | newInstance(String schemaLanguage) | |
7 | javax.xml.xpath.XPathFactory | newInstance() | |
8 | newInstance(String URI) | ||
9 | org.w3c.dom.bootstrap.DOMImplementationRegistry | newInstance() | |
10 | org.xml.sax.helpers.XMLReaderFactory | createXMLReader() | |
11 | StAX API | javax.xml.stream.XMLInputFactory | newInstance() |
12 | newFactory() | ||
13 | javax.xml.stream.XMLOutputFactory | newInstance() | |
14 | newFactory() | ||
15 | javax.xml.stream.XMLEventFactory | newInstance() | |
16 | newFactory() | ||
17 | JAXB API | javax.xml.bind.JAXBContext | newInstance(Class... classesToBeBound) |
18 | newInstance(Class[] classesToBeBound, Map<String,?> properties) | ||
19 | newInstance(String contextPath) | ||
20 | newInstance(String contextPath, ClassLoader classLoader) | ||
21 | newInstance(String contextPath, ClassLoader classLoader, Map<String,?> properties) |