第5章 JBoss EAP のクラスローディングの概要


JBoss EAP は、デプロイされたアプリケーションのクラスパスを制御するためにモジュール形式のクラスローディングシステムを使用します。このシステムは、階層クラスローダーの従来のシステムよりも、柔軟性があり、より詳細に制御できます。開発者は、アプリケーションで利用可能なクラスに対して粒度の細かい制御を行い、アプリケーションサーバーで提供されるクラスを無視して独自のクラスを使用するようデプロイメントを設定できます。

モジュール形式のクラスローダーにより、すべての Java クラスはモジュールと呼ばれる論理グループに分けられます。各モジュールは他のモジュールへの依存関係を定義して、そのモジュールのクラスを自身のクラスパスに含めることができます。デプロイされた各 Java Archive (JAR) および Web Archive (WAR) ファイルは、モジュールとして扱われます。そのため、開発者はモジュール設定を追加することでアプリケーションのクラスパスの内容を制御できます。

5.1. JBoss EAP のモジュールの種類

モジュールは、クラスローディングおよび依存関係管理に使用されるクラスの論理グループです。JBoss EAP は次の 2 種類のモジュールを識別します。

  • 静的モジュール
  • 動的モジュール

この 2 種類のモジュールの主な違いは、パッケージ化方法です。

JBoss EAP は、事前定義されたモジュールのセットも提供します。

5.1.1. JBoss EAP の静的モジュール

静的モジュールは、アプリケーションサーバーの EAP_HOME/modules/ ディレクトリーで定義されます。各モジュールは EAP_HOME/modules/com/mysql/ のようにサブディレクトリーとして存在します。各モジュールには、module.xml 設定ファイルとすべての必要な Java Archive (JAR) ファイルが格納されるスロットサブディレクトリー (デフォルトでは main) が含まれます。アプリケーションサーバーにより提供される API は、Jakarta EE API と他の API を含む静的モジュールとして提供されます。

例: MySQL JDBC ドライバー module.xml ファイル

<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.9" name="com.mysql">
  <resources>
    <resource-root path="mysql-connector-j-8.0.33.jar"/>
  </resources>
  <dependencies>
    <module name="java.xml" export="true"/>
    <module name="java.xml.crypto" export="true"/>
    <module name="jdk.xml.dom" export="true"/>
    <module name="jakarta.transaction.api"/>
  </dependencies>
</module>
Copy to Clipboard Toggle word wrap

注記

MySQL ドライバーの JAR 名 (mysql-connector-j-8.0.33.jar) は、あくまで例として示したものです。テスト済みの MySQL バージョンの詳細は、Tested databases を参照してください。

モジュール名 com.mysql は、スロット名 main を除くモジュールのディレクトリー構造と一致する必要があります。

カスタム静的モジュールの作成は、同じサードパーティーライブラリーを使用する同じサーバー上に多くのアプリケーションがデプロイされる場合に役立ちます。これらのライブラリーを各アプリケーションとバンドルする代わりに、管理者はこれらのライブラリーが含まれるモジュールを作成およびインストールできます。アプリケーションは、カスタム静的モジュールで明示的な依存関係を宣言できます。

JBoss EAP ディストリビューションで提供されるモジュールは、EAP_HOME/modules ディレクトリー内の system ディレクトリーにあります。このため、サードパーティーによって提供されるモジュールから分離されます。また、JBoss EAP 上で使用する、Red Hat により提供されるすべての製品によって、system ディレクトリー内にモジュールがインストールされます。

モジュールごとに 1 つのディレクトリーを使用して、カスタムモジュールが EAP_HOME/modules ディレクトリーにインストールされるようにする必要があります。こうすると、同梱されたバージョンではなく、system ディレクトリーに存在するカスタムバージョンのモジュールがロードされるようになります。これにより、ユーザー提供のモジュールがシステムモジュールよりも優先されます。

JBOSS_MODULEPATH 環境変数を使用して JBoss EAP がモジュールを検索する場所を変更する場合は、指定された場所の 1 つで system サブディレクトリー構造を探します。system 構造は、JBOSS_MODULEPATH で指定された場所のどこかに存在する必要があります。

module.xml ファイルの resource-root path 要素では、絶対パスも使用できます。これにより、リソースライブラリーを EAP_HOME/modules ディレクトリーに移動しなくても、リソースライブラリーにアクセスできます。

例: module.xml ファイルの絶対パス

<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.9" name="oracle.jdbc">
    <resources>
        <resource-root path="/home/redhat/test.jar"/>
    </resources>
</module>
Copy to Clipboard Toggle word wrap

5.1.2. JBoss EAP の動的モジュール

動的モジュールは、Java Archive (JAR) または Web Archive (WAR) デプロイメントごとに、または Enterprise Archive (EAR) 内のサブデプロイメントごとに、アプリケーションサーバーによって作成およびロードされます。動的モジュールの名前は、デプロイされたアーカイブの名前に由来します。デプロイメントはモジュールとしてロードされるため、依存関係を設定し、他のデプロイメントで依存関係として使用することが可能です。

モジュールは必要な場合にのみロードされます。通常は、明示的または暗黙的な依存関係を持つアプリケーションがデプロイされるときにロードされます。

5.1.3. JBoss EAP の定義済みモジュール

アプリケーションサーバーでデフォルトのモジュールローダーを使用する場合、定義済みモジュールのセットを使用できます。このモジュールはすべての JBoss Modules API が含まれる org.jboss.modules で、JBoss Modules によって提供され、常に利用可能です。標準の Java Platform Module System (JPMS) モジュールも、標準の名前で使用できます。

Java 9 以上で使用できるプラットフォームモジュールのリストは、該当する JDK のドキュメントを参照してください。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る