Liferayポータルクラスローダーの階層
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちらまでご連絡ください。
すべてのLiferay DXPアプリケーションは、OSGiコンテナーに存在します。 ポータルは、アプリケーションサーバーにデプロイされるWebアプリケーションです。 ポータルのモジュールフレームワークバンドル(モジュール)はOSGiコンテナーに存在し、クラスローダーを備えています。 JavaのブートストラップクラスローダーからバンドルクラスおよびJSPのクラスローダーまでのすべてのクラスローダーは、階層の一部です。
このチュートリアルでは、Liferayのクラスローダー階層を説明し、次のコンテキストでの動作を説明します。
- Liferayポータルなど、アプリサーバーにデプロイされたWebアプリケーション
- Module FrameworkにデプロイされたOSGiバンドル
次の図は、Liferayのクラスローダーの階層を示しています。
クラスローダーの説明は次のとおりです。
-
ブートストラップ:JREのクラス(パッケージ
java。*
)およびJava拡張クラス($JAVA_HOME/ lib / ext
)。 コンテキストに関係なく、すべてのjava。*
クラスのロードは、Bootstrapクラスローダーに委任されます。 -
システム:
CLASSPATH
設定されたクラス、またはアプリケーションサーバーのJavaクラスパス(-cp
または-classpath
)パラメーターを介して渡されたクラス。 -
共通:アプリケーションサーバー上のWebアプリケーションがグローバルにアクセスできるクラス。
-
Webアプリケーション:アプリケーションの
WEB-INF / classes
フォルダーとWEB-INF / lib / *。jarのクラス
。 -
モジュールフレームワーク:モジュールフレームワークバンドルの制御された分離を提供するために使用されるLiferayのOSGiモジュールフレームワーククラスローダー。
-
bundle:バンドルのパッケージまたは他のバンドルがエクスポートするパッケージのクラス。
-
JSP:次のバンドルとクラスローダーを集約するクラスローダー:
- JSPのクラスローダーを含むバンドル
- JSPサーブレットバンドルのクラスローダー
- Javax Expression Language(EL)実装バンドルのクラスローダー
- Javax JSTL実装バンドルのクラスローダー
-
Service Builder:サービスビルダークラス
使用されるクラスローダーはコンテキストに依存します。 クラスローディングルールは、アプリケーションサーバーによって異なります。 WebアプリケーションとOSGiバンドルのクラスローディングも異なります。 ただし、すべてのコンテキストで、Bootstrapクラスローダーは java。*
パッケージからクラスをロードします。
次に、Webアプリケーションの観点からのクラスローディングについて説明します。
Webアプリケーションクラスローディングパースペクティブ
アプリケーションサーバーは、Liferay DXPなどのWebアプリケーションがクラスとリソースを検索する場所と順序を指示します。 Apache Tomcat などのアプリケーションサーバーは、次のデフォルトの検索順序を強制します。
- ブートストラップクラス
- Webアプリの
WEB-INF / classes
- Webアプリの
WEB-INF / lib / *。jar
- システムクラスローダー
- 共通のクラスローダー
最初に、WebアプリケーションはBootstrapを検索します。 クラス/リソースがない場合、Webアプリケーションは独自のクラスとJARを検索します。 それでもクラス/リソースが見つからない場合は、システムクラスローダーをチェックしてから、共通クラスローダーをチェックします。 Webアプリケーションが独自のクラスとJARをチェックする場合を除いて、Webアプリケーションは階層を親優先順で検索します。
Oracle WebLogic やIBM WebSphereなどのアプリケーションサーバーには、追加のクラスローダーがあります。 また、クラスローダーの階層と検索順序が異なる場合があります。 クラスローディングの詳細については、アプリケーションサーバーのドキュメントを参照してください。
他のクラスローディングの視点
バンドルクラスローディングフロー チュートリアルでは、OSGiバンドルの観点からクラスローディングについて説明しています。
JSPおよびService Builderクラスのクラスローディングは、WebアプリケーションおよびOSGiバンドルクラスのクラスローディングに似ています。
これで、Liferay DXPのクラスローディング階層を理解し、Webアプリケーションのコンテキストでそれを理解し、他のクラスローディングパースペクティブに関する情報を参照できます。