Liferay DXPでExtプラグインを使用するためにサポートされているユースケースは、Liferay Digital Enterpriseのコアクラスをオーバーライドすることです(例: portal-impl
, portal-kernel
など)。 コア・クラスの区別については、 コアLiferayポータル・アーティファクトの検索 セクションを参照してください。 Ext プラグインを作成する前に、一般化された Ext プラグインでのカスタマイズ チュートリアルを確認してください。
決議
例として、 portal-impl.jar
にある PortalImpl コア・クラスを上書きする Ext プラグインのサンプルを作成します。 サーバのノード名を返す PortalImpl.getComputerName()
メソッドを編集します。 Ext プラグインは、 PortalImpl
クラス全体をオーバーライドし、サーバの返されたノード名を変更するメソッドを追加します。
-
Plugins SDKの/extフォルダに移動し、以下のコマンドを実行します。
create.[bat|sh] portal-impl-override "PortalImpl Override"
Ext プラグインが生成され、Plugins SDK の
/ext
フォルダに、割り当てた名前で-ext
(例:portal-impl-overrid-spring
) と一緒に存在します。 -
Liferay DXPインストールでのサーバーノード名の表示は、デフォルトでは
false
に設定されています。 このプロパティを有効にする必要があります。 これを行うには、Liferayバンドルのルートフォルダに移動し、portal-ext.properties
ファイルを作成します。 そのファイルに、以下のプロパティを挿入します。web.server.display.node=true
これで、Liferayバンドルを再起動すると、サーバーのノード名が表示されるようになりました。
-
/ext-impl/src
フォルダ内に、上書きしたいクラスのフォルダ構造にマッチするフォルダ構造を作成します (例:com/liferay/portal/util
)。 次に、既存のコア・クラスをオーバーライドする新しい Java クラスを作成します。 -
元のクラス (例:
PortalImpl
) のロジックをすべて新しいクラスにコピーします。 次に、カスタマイズしたいメソッドを変更します。 この例では、getComputerName()
メソッドを編集したいとします。 なので、以下の方法に置き換えてください。@Override public String getComputerName() { return “sample_portalimpl_ext_installed_successfully_” + _computerName; }
新しいクラスで定義されたメソッドは、
PortalImpl.getComputerName()
メソッドをオーバーライドします。sample_portalimpl_ext_installed_successfully_
文字列の前にサーバのノード名が付くようになりました。
Ext プラグインがデプロイされると、新しい Java クラスがコアの PortalImpl
クラスをオーバーライドします。
凄い! Liferay Digital EnterpriseのコアクラスをオーバーライドするExtプラグインを作成しました。 プラグインのデプロイ セクションの指示に従って、サーバーにデプロイしてください。