Extending Liferay
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

ライフサイクルイベントの待機

Liferay は、ポータルやポートレットの初期化などのライフサイクル イベントを OSGi サービス レジストリに登録します。 OSGi クラスは、これらのサービス登録をリッスンして、特定のタスクを実行する前にそれぞれのライフサイクル イベントを待機できます。 ModuleServiceLifecycle インターフェース は、これらのイベントの名前を定義します。

  • LICENSE_INSTALL
  • PORTAL_INITIALIZED
  • PORTLETS_INITIALIZED

次のサンプルは、 PORTAL_INITIALIZED イベントをリッスンし、コンソールにメッセージを記録します。

サンプルコードをデプロイする

新しいLiferay インスタンスを起動し、以下を実行します。

docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.132-ga132

http://localhost:8080でLiferayにサインインします。 メールアドレス test@liferay.com とパスワード testを使用してください。 プロンプトが表示されたら、パスワードを learnに変更します。

次に、以下の手順に従います。

  1. サンプルをダウンロードして解凍します。

    curl https://resources.learn.liferay.com/examples/liferay-h4l9.zip -O
    
    unzip liferay-h4l9.zip
    
  2. モジュールのルートから、ビルドおよびデプロイします。

    ./gradlew deploy -Ddeploy.docker.container.id=$(docker ps -lq)
    

    このコマンドは、デプロイされたjarをDockerコンテナ上の /opt/liferay/osgi/modules にコピーするのと同じです。

  3. Liferay Dockerコンテナコンソールでデプロイを確認します。

    STARTED com.acme.h4l9.impl.0.0 [1009]
    
  4. 別のタブで、Liferay コンテナを停止します。

    docker stop $(docker ps -lq)
    
  5. Liferay コンテナを再起動します。 Liferay の起動が完了すると、 PORTAL_INITIALIZED イベントが登録されます。

    docker start $(docker ps -lq)
    
  6. サンプルモジュールはライフサイクルイベントをリッスンし、次のメッセージを Liferay Docker コンテナコンソールに出力します。

    INFO  [http-nio-8080-exec-6][H4L9PortalInstanceLifecycleListener:20] Invoking #activate
    

コンポーネントからアクションを実行する

宣言型サービス を使用すると、必要なイベントを簡単にターゲットにすることができます。

@Reference アノテーションを使用して、必要なライフサイクル イベントの名前をターゲットにします。 選択したイベントが登録されると、コンポーネントはタスクの実行を開始します。

@Reference(target = ModuleServiceLifecycle.PORTAL_INITIALIZED)
private ModuleServiceLifecycle _moduleServiceLifecycle;
@Activate
protected void activate() {
	if (_log.isInfoEnabled()) {
		_log.info("Invoking #activate");
	}
}