Ext プラグインでコアクラスをオーバーライドする

Liferay DXPでExtプラグインを使用するためにサポートされているユースケースは、Liferay Digital Enterpriseのコアクラスをオーバーライドすることです(例: portal-impl, portal-kernelなど)。 コア・クラスの区別については、 コアLiferayポータル・アーティファクトの検索 セクションを参照してください。 Ext プラグインを作成する前に、一般化された Ext プラグインでのカスタマイズ チュートリアルを確認してください。

決議

例として、 portal-impl.jarにある PortalImpl コア・クラスを上書きする Ext プラグインのサンプルを作成します。 サーバのノード名を返す PortalImpl.getComputerName() メソッドを編集します。 Ext プラグインは、 PortalImpl クラス全体をオーバーライドし、サーバの返されたノード名を変更するメソッドを追加します。

  1. Plugins SDKの/extフォルダに移動し、以下のコマンドを実行します。

    create.[bat|sh]  portal-impl-override "PortalImpl Override"
    

    Ext プラグインが生成され、Plugins SDK の /ext フォルダに、割り当てた名前で -ext (例: portal-impl-overrid-spring) と一緒に存在します。

  2. Liferay DXPインストールでのサーバーノード名の表示は、デフォルトでは false に設定されています。 このプロパティを有効にする必要があります。 これを行うには、Liferayバンドルのルートフォルダに移動し、 portal-ext.properties ファイルを作成します。 そのファイルに、以下のプロパティを挿入します。

    web.server.display.node=true
    

    これで、Liferayバンドルを再起動すると、サーバーのノード名が表示されるようになりました。

  3. /ext-impl/src フォルダ内に、上書きしたいクラスのフォルダ構造にマッチするフォルダ構造を作成します (例: com/liferay/portal/util)。 次に、既存のコア・クラスをオーバーライドする新しい Java クラスを作成します。

  4. 元のクラス (例: 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プラグインを作成しました。 プラグインのデプロイ セクションの指示に従って、サーバーにデプロイしてください。

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています