Extプラグインを使ってSpringを使ってコアクラスを拡張する

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

決議

例として、 portal-impl.jarにある PortalImpl コア・クラスを拡張した Ext プラグインのサンプルを作成します。 Spring Beanを介して PortalImpl.getComputerName() メソッドをオーバーライドし、サーバのノード名を返します。 Extプラグインはこのメソッドをオーバーライドして、サーバに返されたノード名を変更します。

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

    create.[bat|sh]  portal-impl-extend-spring "PortalImpl Extend Spring"
    

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

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

    web.server.display.node=true
    

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

  3. /ext-impl/src フォルダ内に、新しいクラスを配置したいパッケージ名を表すフォルダ構造を作成します (例: com/liferay/portal/util)。 次に、新しいJavaクラスを作成します。

    package com.liferay.portal.util;
    
    public class SamplePortalImpl extends PortalImpl {
    @Override public String getComputerName() { return "SAMPLE_EXT_INSTALLED_" + super.getComputerName(); } 
    }

拡張クラスで定義されたメソッドは、 PortalImpl.getComputerName() メソッドをオーバーライドします。 の "SAMPLE_EXT_INSTALLED_"は 文字列の前にサーバーのノード名が付くようになりました。

  1. Extプラグインの /ext-impl/src フォルダに、 META-INF/ext-spring.xml ファイルを作成します。 このファイルには、以下のコードを挿入します。

    <?xml version="1.0"?>
    
    <beans
        default-destroy-method="destroy"
        default-init-method="afterPropertiesSet"
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
    >
    &lt;bean class="com.liferay.portal.util.SamplePortalImpl" id="com.liferay.portal.util.PortalImpl" /&gt; 
    </beans>

コアサービスクラスを修正する予定なので、Spring Beanを介してその拡張クラスを注入することができます。 これにより、新しいクラスが確実に認知されるようになります。 拡張クラスの完全に定義されたクラス名(例: com.liferay.portal.util.SamplePortalImpl)をBeanタグの クラス 属性に、完全に定義された元のクラス名(例: com.liferay.portal.util.PortalImpl)をBeanタグの idに割り当てます。 com.liferay.portal.util.PortalImpl )をビーンタグの id 属性に指定します。

Ext プラグインがデプロイされると、新しいサービス (例: SamplePortalImpl) は、コア PortalImpl クラスを拡張します。

凄い! Liferay Digital Enterpriseのコアクラスを拡張したExtプラグインを作成しました! プラグインのデプロイ セクションの指示に従って、サーバーにデプロイしてください。

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