0

件名を検索しましたが、わかりやすいものは見つかりませんでした... Tomcat (v5.5) があります。そこには多くの webapp がデプロイされています。各 webapp には、すべてのライブラリが WEB-INF/lib ディレクトリにあります。だから重複が多い。

いくつかの一般的なメソッドを整理するために、クラシック ライブラリ (XXX_API) が作成されました。そのため、このライブラリは各 Web アプリケーションに追加されてコンパイルされますが、デプロイはされません。このライブラリは、Tomcat の共​​有ディレクトリにデプロイされます。

Spring 3.1.1 の JdbcTemplate を使用して、いくつかの DAO を共通ライブラリに統合しようとしました。そのため、XXX_API をデプロイするために、Spring ライブラリを共有ディレクトリにデプロイする必要がありました。

現在、すべてのアプリケーションを起動することはできません。それらのいくつかは、次の例外でクラッシュしました: java.lang.IllegalArgumentException. クラス org.springframework.jdbc.config.JdbcNamespaceHandler は NamespaceHandler インターフェースを実装していません。情報については、Spring 2.0.6 で開発されています:(

この問題は、applicationContext.xml でローカライズされているようです。

だから、ここで私の質問:

  • Tomcat の共​​有ディレクトリはどのように機能していますか?
  • Web アプリの lib ディレクトリよりも優先的にロードされますか?
  • applicationContext.xml で宣言された名前空間についての単なる pb ですか?
  • 両方の春のバージョンを持つことは可能ですか?

ありがとうございました。

4

4 に答える 4

2

あなたが本当に求めているのは、クラスローダがどのようにロードされるか、どのような順序でロードされるかなどです。このページでは、Tomcat コンテナ内での webapp の実行に関与するすべてのクラスローダについて詳しく説明しています。クラスがどこで、どのような順序で検索され、どのクラスが各 webapp およびコンテナー自体から参照できるかを示します。これに対する変更は、Tomcat のバージョン間で重要であることに注意してください。

http://tomcat.apache.org/tomcat-5.5-doc/class-loader-howto.html

于 2012-11-16T16:48:23.190 に答える
1

私が見た共有 lib フォルダーの主な用途は、jdbc ドライバー、jta トランザクション マネージャー、および次のようなその他のインフラストラクチャなどです。

  1. コンテナーが使用可能である必要があります (jdbc と jta の場合、jndi データソースと jta ユーザー トランザクションを作成するため)。
  2. OracleドライバのOCIバージョンを使用する場合は、jdbcドライバのように環境固有です。この場合、ojdbc.jar ファイルを、そのマシンにインストールされているネイティブ Oracle クライアント ライブラリのバージョンと一致させる必要があります。もう 1 つの例は、jms コネクタです。
  3. そのjarを複数回ロードすると、ネイティブライブラリを2回ロードしようとしたときに問題が発生するため、ネイティブライブラリを使用するもの。

spring のような実際のアプリ ライブラリを共有 lib フォルダーに配置するつもりはありません。

于 2012-11-16T18:54:41.980 に答える
0

そのため、各 Web アプリケーションのすべてのスプリング jar を削除しました。共有ディレクトリにある spring lib (3.1.1) をインポートしました。そして、それらを(ネットビーンズの下で)チェックを外して、ビルドに含めないようにしました。

サーブレット v2.5 で標準化するために、web.xml、applicationContext.xml、Spring Servlet の宣言も変更しました。

今は大丈夫そうですが…

于 2012-11-19T16:12:51.930 に答える
0

おそらく、1 つのクラスがアプリ クラスローダによってロードされ、別のクラスが共有クラスローダによってロードされるためです。

共有ディレクトリを使用しないでください。何のために?ディスク容量を節約するには?

于 2012-11-16T16:56:50.967 に答える