0

Oracleアプリケーションサーバー10にデプロイされたWebアプリケーションをデプロイしましたが、アプリケーションの実行時にこのエラーが発生します。

 Caused by: java.lang.NoClassDefFoundError: org/apache/log4j/Category

 Caused by: org.apache.commons.logging.LogConfigurationException: No suitable Log constructor [Ljava.lang.Class;@12badee for org.apache.commons.logging.impl.Log4JLogger (Caused by java.lang.NoClassDefFoundError: org/apache/log4j/Category)

log4jはwebappWEBINF/ lib内にバンドルされており、アプリケーションサーバーlibにもlog4jの共有libがあります。この共有ライブラリは多くのアプリケーションで共有されているため、削除できません。

これらの2つのlog4jライブラリの間にクラスの競合があることを理解しています。とにかく、この共有ライブラリを除外して、Webアプリケーション内でバンドルされたlog4jを操作できるということはありますか?この点に関する助けは大歓迎です。

4

2 に答える 2

2

@Viccari私はこれと同じものを探していましたが、OC4Jを備えた古いアプリケーションサーバーを探していました。解決策は、次の内容のWEB-INF/orion-web.xmlを追加することです。

<orion-web-app ...>
  ...
  <web-app-class-loader search-local-classes-first="true"
   include-war-manifest-class-path="true" />
  ...
</orion-web-app>

Enterprise Manager Consoleを介してアプリケーションを展開していたため、上記のソリューションは機能しませんでした。「親アプリケーションの共有ライブラリのインポートを継承する」オプションを無効にして、デプロイメント設定でクラスの読み込みを構成する必要があります。

もう1つのオプションは、次の内容のMETA-INF / orion-application.xmlファイルを使用してEARを作成し、それをデプロイすることです。

<?xml version="1.0" encoding="UTF-8"?>
<orion-application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/orion-application-10_0.xsd"
    deployment-version="10.1.3.4.0" default-data-source="jdbc/OracleDS"
    component-classification="external" schema-major-version="10"
    schema-minor-version="0">

    <imported-shared-libraries>
        <remove-inherited name="*"></remove-inherited>
    </imported-shared-libraries>

</orion-application>
于 2012-10-24T20:47:24.500 に答える
1

アプリケーション記述子でprefer-web-inf-classes要素を使用します。 ドキュメントによると、weblogic.xml

この要素をTrueに設定すると、クラスローダー委任モデルが破壊され、Webアプリケーションのクラス定義が上位レベルのクラスローダーのクラス定義よりも優先してロードされます。これにより、Webアプリケーションは独自のバージョンのサードパーティクラスを使用できます。サードパーティクラスは、WebLogicServerの一部である可能性もあります。

これは、あなたにも役立つかもしれない関連する質問です。

于 2012-08-02T00:24:32.657 に答える