13

私はJbossを初めて使用しますが、それぞれがSpring-Hibernateやその他のオープンソースライブラリとポートレットを使用する複数のWebアプリケーションを持っているため、基本的に各warファイルにはそれらのjarファイルが含まれています。これらのjarファイルを共通の場所に移動して、各warファイルに入れる必要がないようにするにはどうすればよいですか?場所はそうだと思いますがserver/default/lib、よくわかりません。

また、それらの瓶をWEB-INF/lib 対に持つことはどのように異なりJBOSS/server/default/libますか?クラスローダーの問題に直面しますか?

また、静的データをのような静的フィールドに保存していますがSingleton、それらはすべてのWARファイルで共有されますか?

4

4 に答える 4

19

クラスローディング:

.jarそうです、 sを、、JBOSS/server/<configuration>/libまたはに入れてくださいJBOSS/lib

JBoss ASには、そのASバージョンでテストされるHibernateライブラリがバンドルされています。

参照してくださいjboss-6.0.0-SNAPSHOT\server\default\conf\jboss-service.xml

<server>
  <!-- Load all jars from the JBOSS_HOME/server/<config>/lib directory and
       the shared JBOSS_HOME/common/lib directory. This can be restricted to
       specific jars by specifying them in the archives attribute.
       TODO: Move this configuration elsewhere
  -->
  <classpath codebase="${jboss.server.lib.url}" archives="*"/>
  <classpath codebase="${jboss.common.lib.url}" archives="*"/>
</server>

以下も参照してください。

WEB-INF/libとの違いJBOSS/server/default/lib

LibはWARにWEB/lib付属しており、そのWAR内でのみ表示されます。他のモジュール(EJB JARなど)がある場合、それらはモジュールからは表示されず、ClassNotFoundExceptionまたは(複数の場所にクラスがある場合)を取得しますClassCastException

のライブラリはJBOSS-AS/server/<config>/libサーバー全体に表示されるため、デプロイされたすべてのアプリとそのモジュールが表示されます。ただし、(IIRC)優先順位がないため、そのlibをWARなどに持ち込み、EJB jarには入れない場合、2つの異なるバージョンを使用することになり、望ましくありません(前述の結果になる可能性がありますClassCastException)。

クラスのロード動作は、いくつかの方法で調整できます。たとえば、JBosswikiを参照してください

静的データ:

Java EEの静的フィールドに依存しないでください。これにより、問題が発生します。例えば、。同じクラスを異なるクラスローダーでロードできるため、これらの静的値のインスタンスが複数存在します。
より多くのWAR間でデータを共有する場合は、外部ストレージ(データベース、ファイル(書き込みの場合は同期あり)、JBoss Cacheなど)を使用します。

于 2010-01-21T12:08:15.590 に答える
2

http://www.mastertheboss.com/en/jboss-server/211-configuring-jboss-shared-libs.html

于 2010-05-27T09:40:52.943 に答える
0

JBOSS / server / default/libは正常に機能します。

そのフォルダー内のすべてのjarファイルがJBossにロードされます。

于 2010-01-21T12:05:18.813 に答える
0
  1. %JBOSS_HOME%\server\default\conf ディレクトリに移動します
  2. ファイル jboss-service.xml を開く
  3. タグの下に表示されます

以下のように新しいクラスパス タグを追加して、ローカル マシンの sharedlib フォルダーを含めます。

注: ファイル プロトコルをコード ベースに含めるようにしてください。

于 2016-12-26T06:59:01.397 に答える