Liferayポータルクラスローダーの階層

Liferayポータルクラスローダーの階層

ファストトラック記事は、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちらまでご連絡ください。

すべてのLiferay DXPアプリケーションは、OSGiコンテナーに存在します。 ポータルは、アプリケーションサーバーにデプロイされるWebアプリケーションです。 ポータルのモジュールフレームワークバンドル(モジュール)はOSGiコンテナーに存在し、クラスローダーを備えています。 JavaのブートストラップクラスローダーからバンドルクラスおよびJSPのクラスローダーまでのすべてのクラスローダーは、階層の一部です。

このチュートリアルでは、Liferayのクラスローダー階層を説明し、次のコンテキストでの動作を説明します。

  • Liferayポータルなど、アプリサーバーにデプロイされたWebアプリケーション
  • Module FrameworkにデプロイされたOSGiバンドル

次の図は、Liferayのクラスローダーの階層を示しています。

図1.0:これは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 などのアプリケーションサーバーは、次のデフォルトの検索順序を強制します。

  1. ブートストラップクラス
  2. Webアプリの WEB-INF / classes
  3. Webアプリの WEB-INF / lib / *。jar
  4. システムクラスローダー
  5. 共通のクラスローダー

最初に、WebアプリケーションはBootstrapを検索します。 クラス/リソースがない場合、Webアプリケーションは独自のクラスとJARを検索します。 それでもクラス/リソースが見つからない場合は、システムクラスローダーをチェックしてから、共通クラスローダーをチェックします。 Webアプリケーションが独自のクラスとJARをチェックする場合を除いて、Webアプリケーションは階層を親優先順で検索します。

Oracle WebLogic やIBM WebSphereなどのアプリケーションサーバーには、追加のクラスローダーがあります。 また、クラスローダーの階層と検索順序が異なる場合があります。 クラスローディングの詳細については、アプリケーションサーバーのドキュメントを参照してください。

他のクラスローディングの視点

バンドルクラスローディングフロー チュートリアルでは、OSGiバンドルの観点からクラスローディングについて説明しています。

JSPおよびService Builderクラスのクラスローディングは、WebアプリケーションおよびOSGiバンドルクラスのクラスローディングに似ています。

これで、Liferay DXPのクラスローディング階層を理解し、Webアプリケーションのコンテキストでそれを理解し、他のクラスローディングパースペクティブに関する情報を参照できます。

関連トピック

バンドルクラスローディングフロー

« Liferay開発のOSGiの基本バンドルクラスローディングフロー »
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています