私の問題は、Liferay を変更するたびにportal-properties
(これは特に新しいポータル プロジェクトの開始時に頻繁に発生します)、ポータル全体を再起動する必要があることです。
フックを介して設定できるいくつかのプロパティと、これらの値は再デプロイ後に変更されます。また、実行時にほとんどのポータル プロパティを変更できる必要があります。
portal-ext.properties
しかし、 Liferayポータルを再起動せずに変更を反映する方法を知っていますか?
私の問題は、Liferay を変更するたびにportal-properties
(これは特に新しいポータル プロジェクトの開始時に頻繁に発生します)、ポータル全体を再起動する必要があることです。
フックを介して設定できるいくつかのプロパティと、これらの値は再デプロイ後に変更されます。また、実行時にほとんどのポータル プロパティを変更できる必要があります。
portal-ext.properties
しかし、 Liferayポータルを再起動せずに変更を反映する方法を知っていますか?
これは、Liferay フォーラムでも質問されています。
https://www.liferay.com/community/forums/-/message_boards/message/800954
しかし残念ながら、ほとんどのプロパティはポータルの起動時に 1 回しか読み取られません。通常、この場合のようにプロパティー・ファイルを使用すると、この欠点があります。
これについて Liferay で開かれている問題もありますが、まだ解決されていません。
portal-ext.properties のリロードを検索して、ここにたどり着きました。OK - Liferay の機能ではありません。
だから私は好きな古いトリックを使用します:
いつでもリロードできます
Properties customProperties = new Properties();
customProperties.load(new FileInputStream(new File(System.getProperty("catalina.base"), "conf/filename.properties")));
Liferay-Portlet-Environment でこれを試していないことを告白しなければなりませんが、このシステム プロパティ (「catalina.base」) は、少なくとも Liferay-Helper-Class を使用することによって、このコンテキストで利用できるはずです。
ポータル プロパティをオーバーライドするフックを作成すると、ポータルを再起動せずにフックをデプロイするだけでプロパティを変更できます。
フックを使用してすべてのプロパティを変更できるわけではないことに注意してください。変更できるもののリストについては、https ://docs.liferay.com/portal/6.2/definitions/ を確認してください。
一部の Liferay クラスは、静的フィールド定数を初期化するときにプロパティを読み取ります。例えば:
public static final boolean ENABLED = GetterUtil.getBoolean(
PropsUtil.get(DynamicCSSFilter.class.getName()));
基本的に、(たとえば、コントロール パネルのスクリプトを介して) プロパティを再読み込みすることは可能ですが、これらの静的定数はすべて残ります。