Liferay DXPでExt Pluginsを使用するためにサポートされているユースケースは、Liferay Digital Enterpriseの web.xml
ファイルに機能を追加することです。 始める前に、一般化された Extプラグインでのカスタマイズ チュートリアルを確認してください。
決議
例として、Liferay Digital Enterprise の既存の web.xml
ファイルに追加する Ext プラグインのサンプルを作成します (例えば、 /tomcat-[version]/webapps/ROOT/WEB-INF
フォルダにあります)。 Liferay Digital Enterpriseの起動時にコンソールに新しいプリントアウトを追加します。
-
Plugins SDKの
/ext
フォルダに移動し、以下のコマンドを実行します。create.[bat|sh] add-printout "Add Printout"
Ext プラグインが生成され、Plugins SDK の
/ext
フォルダに、割り当てた名前で-ext
(例:add-printout-ext
) と続いて存在します。 -
Liferay Digital Enterprise インストールが
web.xml
の新しい機能を認識するためには、 ServletContextListener インターフェイスを実装したクラスを作成する必要があります。 このクラスは、新しい機能を追加するサーブレットのコンテキストイベントを初期化します。/docroot/WEB-INF/ext-impl/src
フォルダに、新しいクラスを配置したいパッケージ名を表すフォルダ構造を作成します (例:com/liferay/portal/servlet/context
)。 次に、新しいJavaクラスを作成します。package com.liferay.portal.servlet.context; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class ExtAddEntryWebXmlPortalContextLoaderListener implements ServletContextListener {
public void contextDestroyed(ServletContextEvent servletContextEvent) { } public void contextInitialized(ServletContextEvent servletContextEvent) { System.out.println("EXT_ADD_ENTRY_WEBXML_INSTALLED_SUCCESSFULLY"); }
上記のクラスには、サーブレットのコンテキストイベントを初期化したり破棄したりする 2 つのメソッドが含まれています。 ポータルコンテキストの初期化時に、新しい
web.xml
'の機能を必ず追加してください。 Extプラグインのインストールを確認するプリントアウトを追加するために、contextInitialized(...)
メソッドでシンプルなprint文を定義しました。System.out.println("EXT_ADD_ENTRY_WEBXML_INSTALLED_SUCCESSFULLY");
-
サーブレットのコンテキストイベントを定義したので、それをリッスンするリスナーを
web.xml
に追加する必要があります。docroot/WEB-INF/ext-web/docroot/WEB-INF
フォルダで、デフォルトで生成されたweb.xml
ファイルを開きます。 -
タグの間に以下のタグを追加します。
<listener> <listener-class>com.liferay.portal.servlet.context.ExtAddEntryWebXmlPortalContextLoaderListener</listener-class> </listener>
素晴らしい! Extプラグインがデプロイされると、Liferay Digital Enterpriseのインストールでは、 のServletContextListener
インスタンスが作成され、カスタム・サーブレット・コンテキスト・イベントが初期化されます。 このイベントは、 web.xml
ファイルによって認識され、Liferay Digital Enterpriseのインストールに新しい機能が追加されます。 プラグインのデプロイ セクションの指示に従って、Ext プラグインをサーバーにデプロイしてください。