アプリケーションの一部として、Apache の xerces jaxp パーサーを使用しています。アプリケーションを weblogic 9.2 にデプロイすると、次のエラーが発生します。
org.springframework.beans.factory.BeanCreationException: クラスパス リソース [META-INF/cxf/cxf.xml] で定義された名前 'org.apache.cxf.wsdl.WSDLManager' の Bean の作成中にエラーが発生しました: Bean のインスタンス化に失敗しました。ネストされた例外は org.springframework.beans.BeanInstantiationException: Bean クラスをインスタンス化できませんでした [org.apache.cxf.wsdl11.WSDLManagerImpl]: コンストラクターが例外をスローしました。ネストされた例外は java.lang.ClassCastException: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl です
分析によると、weblogic は、Apache の xerces の代わりにweblogic.jarDocumentBuilderFactoryImpl
に存在する独自のものをロードしようとしています。
DocumentBuilderFactoryImpl
xerces からweblogic を強制的にロードするために、次のことを試しました。
i) 次のタグをweblogic.xml
<prefer-web-inf-classes>true</prefer-web-inf-classes>
ii) xalan の最新バージョンを jre/lib/endorced フォルダーに配置しました。これで問題は解決しませんでした。
ii) weblogic-application.xml にエントリを追加しました。
<weblogic-application xmlns="http://www.bea.com/ns/weblogic/90">
<application-param>
<param-name>webapp.encoding.default</param-name>
<param-value>UTF-8</param-value>
</application-param>
<prefer-application-packages>
<package-name>javax.jws.*</package-name>
<package-name>org.apache.xerces.*</package-name>
<package-name>org.apache.xerces.jaxp.*</package-name>
</prefer-application-packages>
</weblogic-application>
ii) weblogic-application.xml に次のエントリを追加
<xml>
<parser-factory>
<saxparser-factory>org.apache.xerces.jaxp.SAXParserFactoryImpl</saxparser-factory>
<document-builder-factory>org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</document-builder-factory>
<transformer-factory>org.apache.xalan.processor.TransformerFactoryImpl</transformer-factory>
</parser-factory>
</xml>
iii) xerces から jre/lib へのjaxp.properties
ロードを追加しDocumentBuilderFactoryImpl
、サーバーを起動しました。この場合、weblogic は起動しませんでした。
iv) 次に、最初にサーバーを起動し、サーバーのjaxp.properties
起動時に実行時にファイルをコピーしましたが、成功しませんでした
上記のどれもうまくいきませんでした。
どんな助けでも大歓迎です。