JDK 1.4 リリースでは多くの変更がありましたが、その一環として、JAXP API
と特定のバージョンの Xerces が JDK に同梱されるようになりました。これにより、
独自の XML パーサをアプリケーションで使いたい場合に影響が出ます。
Tomcat 5 以前のバージョンでは、$CATALINA_HOME/common/lib
ディレクトリの XML パーサを置き換えるだけで、
すべての Webアプリケーションによって使われているパーサを変更できました。
しかしこのテクニックは、JDK 1.4 上で動かす場合には使えません。
なぜなら JDK 1.4 では、$CATALINA_HOME/common/lib よりも
JDK 内の実装が通常のクラスローダの委譲過程において常に優先されるからです。
JDK 1.4 は、JCP (Java Community Process) 以外で定義された API
(つまり W3C の DOM や SAX) の置き換えを可能にする
"Endorsed Standards Override Mechanism" (推奨規格標準オーバーライド機構)
をサポートしています。このメカニズムは XML パーサ実装の更新でも使えます。
詳細については、
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/standards/index.html
(原文)
をご覧下さい。
Tomcat では、システムプロパティ設定として
-Djava.endorsed.dirs=$CATALINA_HOME/common/endorsed
をコンテナを起動するコマンドラインに含めることによってこのメカニズムを使えます。
したがって、このディレクトリにインストールされたパーサを置き換えることができます。
この方法は JDK 1.4 のシステムでも有効です。