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

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 クラス全体をオーバーライドし、サーバーの返すノード名を変更するメソッドを追加します。

  1. Plugins SDKの/extフォルダに移動して、以下のコマンドを実行してください:

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

    Extプラグインが生成され、Plugins SDKの /ext フォルダに、割り当てた名前の後に -ext が付いた状態で存在します(例: portal-impl-override-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_ String の前に、サーバーのノード名が付くようになりました。

Extプラグインがデプロイされると、新しいJavaクラスは、コア PortalImpl クラスをオーバーライドします。

Liferay Digital EnterpriseのコアクラスをオーバーライドするExtプラグインを作成しました。 Deploy the Plugin セクションの説明に従って、サーバーにプラグインを導入してください。

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