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

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

アプリケーションは、Java EE スタイルの Web Application ARchive (WAR) アーティファクトとして、または Java ARchive (JAR) OSGi バンドルアーティファクトとして作成できます。 Bean Portlets、PortletMVC4Spring Portlets、および JSF Portlets は、フレームワークが 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.xml、liferay-web.xml、portlet.xml、liferay-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 プラグインに基づいて WAB をデプロイするには、WAR プラグインを Liferay インスタンスの deploy/ フォルダーにコピーします。フォルダーは [Liferay Home] にあります。 WAB は、 module.framework.war.dir プロパティで指定されたディレクトリ (デフォルトではosgi/war ) に作成されます。

生成されたWABを保存する

必要に応じて、WABをローカルフォルダに保存します。これにより、生成されたWABを確認することができます。生成された WAB を保存するには、次の ポータル プロパティ を [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ストラクチャーの例と同じ構造になっています。モジュールフレームワークWebアプリケーションバンドル プロパティのセクションで詳細が説明されています。

WABを破壊する

Liferayは、ポータルまたはOSGiフレームワークがシャットダウンされると、すべてのWABを自動的に削除します。

デプロイされていない WAB を削除するには、 deploy/ フォルダー内のファイルを削除します。問題を回避するため、LiferayはWABがデプロイされている場合、60秒間待機してからWABを破棄します。このタイムアウトは、 コントロール パネル → システム設定 → モジュール コンテナ → WAB Extender で変更できます。タイムアウトをミリ秒単位で設定します(例: 120000)。

既にデプロイされている WAB を削除するには、Liferay インスタンスが WAR を保存するフォルダー内のファイルを削除します (これは module.framework.war.dir プロパティで設定されます)。