[Seasar-user:13386] Re: [Tomcat][TEEDA]起動時にParserConfigurationExceptionについて

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 3月 21日 (金) 19:00:04 JST


小林 (koichik) です.

Date:    Fri, 21 Mar 2008 18:05:25 +0900
From:    "西山はじめ" <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:13385] [Tomcat][TEEDA]起動時にParserConfigurationExceptionについて

> Tomcat起動時にParserConfigurationExceptionが発生してしまします。
> FAQですと、xercesImpl.jarとxml-apis.jarを削除すれば良いとのことですが、運用上の都合で削除できない状況となっております。
> 削除せずに、起動させる方法はありますでしょうか?

Teeda 1.0.12 以降なら以下を参照して STRICT を
試してください.

http://teeda.seasar.org/ja/extension_customize.html#parse-xhtml

> また、よろしければどうしてこのようなエラーが発生するのかお教えいただけないでしょうか。
> jarファイルは、$CATALINA_HOME/common/endorsed配下よりWEB-INF/libの方を先に参照すると思っております。

WEB-INF/lib より $CATALINA_HOME/common/endorsed が先です.

$CATALINA_HOME/common/endorsed は java.endorsed.dirs に
登録されるので,そこにある Jar はブートストラップ
クラスローダの周辺でロードされてしまいます.
そして Tomcat の WebappClassLoader は自身でクラスを
ロードする前にシステムクラスローダからのロードを
試みるので,$CATALINA_HOME/common/endorsed が
先になります.

Tomcat 5.5.26 の WebappClassLoader.java だと
1275 行目からが該当部分.

        // (0.2) Try loading the class with the system class loader, to prevent
        //       the webapp from overriding J2SE classes
        try {
            clazz = system.loadClass(name);
            if (clazz != null) {
                if (resolve)
                    resolveClass(clazz);
                return (clazz);
            }
        } catch (ClassNotFoundException e) {
            // Ignore
        }



-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



Seasar-user メーリングリストの案内