この記事では、Liferay DXPでExtプラグインを使用するためのサポートされているユースケースを説明します。これにより、Springを使用してLiferay Digital Enterpriseのコアクラス(例えば、 portal-impl
, portal-kernel
など)を拡張することができます。 コア・クラスの区別については、 コアLiferayポータル・アーティファクトの検索 セクションを参照してください。 Ext プラグインを作成する前に、一般化された Ext プラグインでのカスタマイズ チュートリアルを確認してください。
決議
例として、 portal-impl.jar
にある PortalImpl コア・クラスを拡張した Ext プラグインのサンプルを作成します。 Spring Beanを介して PortalImpl.getComputerName()
メソッドをオーバーライドし、サーバのノード名を返します。 Extプラグインはこのメソッドをオーバーライドして、サーバに返されたノード名を変更します。
-
Plugins SDKの
/ext
フォルダに移動し、以下のコマンドを実行します。create.[bat|sh] portal-impl-extend-spring "PortalImpl Extend Spring"
Ext プラグインが生成され、Plugins SDK の
/ext
フォルダに、割り当てた名前で-ext
(例:portal-impl-extend-spring-ext
) と続いて存在しています。 -
Liferay DXPインストールでのサーバーノード名の表示は、デフォルトでは
false
に設定されています。 このプロパティを有効にする必要があります。 これを行うには、Liferayバンドルのルートフォルダに移動し、portal-ext.properties
ファイルを作成します。 そのファイルに、以下のプロパティを挿入します。web.server.display.node=true
これで、Liferayバンドルを再起動すると、サーバーのノード名が表示されるようになりました。
-
/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_"は
文字列の前にサーバーのノード名が付くようになりました。
-
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" >
<bean class="com.liferay.portal.util.SamplePortalImpl" id="com.liferay.portal.util.PortalImpl" />
</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プラグインを作成しました! プラグインのデプロイ セクションの指示に従って、サーバーにデプロイしてください。