Liferay DXPでExtプラグインを使用するユースケースとして、Liferay Digital Enterpriseのコアクラス(例: portal-impl
, portal-kernel
, など)のオーバーライドをサポートしています。 コアクラスを区別するために、 Finding Core Liferay Portal Artifacts のセクションを参照することができます。 Extプラグインを作成する前に、一般的な Customization with Ext Plugins チュートリアルを確認したことを確認してください。
解決策
例として、 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-override-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_
String の前に、サーバーのノード名が付くようになりました。
Extプラグインがデプロイされると、新しいJavaクラスは、コア PortalImpl
クラスをオーバーライドします。
Liferay Digital EnterpriseのコアクラスをオーバーライドするExtプラグインを作成しました。 Deploy the Plugin セクションの説明に従って、サーバーにプラグインを導入してください。