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.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のデプロイ
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のコピーを保存して調べる方法が分かりました。