クラスローディング:
.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など)を使用します。