Documentation

WARのデプロイ(WABジェネレータ)

アプリケーションは、Java EEスタイルのWebアプリケーションARchive(WAR)アーティファクトまたはJava ARchive(JAR)OSGiバンドルアーティファクトとして作成できます。 Beanポートレット、PortletMVC4Springポートレット、およびJSFポートレットは、フレームワークがWARレイアウトを想定し、WEB-INF/web.xml記述子などのJava EEリソースを必要とするため、WARとしてパッケージ化する必要があります

Liferayは、これらのWARスタイルのプラグインをLiferayのOSGiランタイムによってOSGiモジュールのようにデプロイおよび処理する方法を提供します。 それらは WAB に変換できます。

Liferay DXPは、Java EEスタイルWARの展開のためのOSGi Web Application Bundle(WAB)標準をサポートしています。 WABは、WARレイアウトを持ち、Bundle-SymbolicName OSGiディレクティブを含むMETA-INF/MANIFEST.MFファイルを含むアーカイブです。 WABはOSGiバンドルです。 プロジェクトソースにはWARレイアウトがありますが、アーティファクトファイル名は拡張子.jarまたは.warで終わる場合があります。

WABジェネレータがWARを変換する方法

Liferayは、WABジェネレータによって自動生成されたWABの使用のみをサポートしています。 WABジェネレータは、デプロイメント中に従来のWARスタイルのプラグインをWABに変換します。 では、WABジェネレータは具体的にどのようにWARファイルをWABに変換するするのでしょうか。

WABジェネレータは、プラグインWARのJSP、記述子ファイル、およびクラス(WEB-INF/classes内および埋め込みJAR内)で参照されるパッケージを検出します。 記述子ファイルには、web.xmlliferay-web.xmlportlet.xmlliferay-portlet.xml、およびliferay-hook.xmlがあります。 WAB ジェネレータは、検出されたパッケージがプラグインのWEB-INF/classes 内フォルダにあるかどうか、またはWEB-INF/libフォルダ内にある埋め込みJARにあるかどうかを検証します。 どちらの場所でも見つからないパッケージは、WABのMETA-INF/MANIFEST.MFファイル内のImport-Package OSGiヘッダーに追加されます。

以下のタイプの場所でのみ参照されるパッケージをインポートするには、Import-Package OSGiヘッダーをプラグインのWEB-INF/liferay-plugin-package.propertiesファイルに追加し、そのヘッダーの値のリストにパッケージを追加する必要があります。

  • 認識されない記述子ファイル

  • カスタムまたは認識されない記述子要素または属性

  • リフレクションコード

  • クラスローダーコード

WARとWABのストラクチャー比較

WABフォルダストラクチャーとWARフォルダストラクチャーには違いがあります。 WARスタイルのポートレットの次のフォルダストラクチャーについて考えてみます。

WAR

  • my-war-portlet

    • src

      • main

        • java

        • webapp

          • WEB-INF

            • classes

            • lib

            • resources

            • views

            • liferay-display.xml

            • liferay-plugin-package.properties

            • liferay-portlet.xml

            • portlet.xml

            • web.xml

WARスタイルのポートレットがLiferayにデプロイされ、WABジェネレータによって処理されると、ポートレットのフォルダストラクチャーが変換されます。

WAB

  • my-war-portlet-that-is-now-a-wab

    • META-INF

      • MANIFEST.MF

    • WEB-INF

      • classes

      • lib

      • resources

      • views

      • liferay-display.xml

      • liferay-plugin-package.properties

      • liferay-portlet.xml

      • portlet.xml

      • web.xml

主な違いは、META-INF/MANIFEST.MFファイルの追加です。 WABジェネレータは、OSGi対応のマニフェストファイルを自動的に生成します。 マニフェストファイルの内容に影響を与えるようにしたい場合は、プラグインのliferay-plugin-package.propertiesファイルにBndディレクティブとOSGiヘッダを直接配置することができます。

注釈

生成されたWABは、手動で追加された bnd.bndファイルまたはビルド時プラグイン(例: bnd-maven-plugin)を使用できません。

WARのデプロイ

WARプラグインに基づいてWABをデプロイするには、WARプラグインを[Liferay Home]内のLiferayインスタンスの deploy/ フォルダにコピーします。

WABのコピーを保存する

必要に応じて、WABをローカルフォルダに保存します。 これにより、生成されたWABを確認することができます。 生成されたWABSを保存するには、以下の ポータルプロパティ[Liferay Home]/portal-ext.propertiesファイルに追加します。 その後、Liferayサーバーを再起動します。

module.framework.web.generator.generated.wabs.store=true
module.framework.web.generator.generated.wabs.store.dir=${module.framework.base.dir}/wabs

これらのプロパティは、WABジェネレータに生成されたWABをインストールのosgi/wabs/フォルダに保存するように指示します。 生成されたWABは、上記のWABストラクチャーの例と同じ構造になっています。 Module Framework Web Application Bundles のプロパティセクションで詳細を説明しています。

WARプラグインをWABとしてデプロイでき、WABのコピーを保存して調べる方法が分かりました。