2016-11-21 15 views
1

私たちのアプリケーションでは、Liferay 6.2 Portalを使用しています。 portal-ext.propertiesのプロパティをConsulから取得した値で更新したいとします。 例えば、virtual.hosts.valid.hostsプロパティにConsulの値を設定したいとします。 避けるべきオプションの1つは、Consul-templateを使用し、bashスクリプトを使用してファイルを更新することです。領事を使用してLiferayを設定する方法

Liferayのプロパティをプログラムで更新する方法はありますか? (フックなどから)

答えて

0

プログラムでのLiferayのプロパティを設定する簡単なプログラム的な方法がないので、私たちは私たちのカスタムに領事と更新設定からデータを読み取るために、スタートアップのshスクリプトを変更することを決め

0

いくつかのプロパティは、フックを介して動的に更新することができます。 lifteray-hook.xmlのdtdでそれらを見つけることができます。ちょうどフックを作成し、dtdのURLを参照してください(私は現在、私の電話で、このURLのようなリソースへのアクセス権がありません)

+0

をportal-ext.propertiesありがとうございますが、DTDは、ということを述べて特定のプロパティセットだけを変更することができます。必要なものはリストにありません。 また、(Javaコードから)外部サービスにRESTリクエストを送信して、必要な値を取得する必要があります。 – Dmitry

+0

dtdに記載されていないすべてのプロパティについては、アプリケーションサーバーを再起動するか、自分でアップデートを実装する必要があります。可能かもしれませんが、実装されていない可能性があります。私は非動的プロパティは、それらを変更するAPIがないことを疑う –

+0

私は再起動に問題はありません。私はちょうどLiferayを設定するためにファイルシステム内の何かを変更しないようにしたいので、Liferayの起動時にいくつかのプロパティの値を変更する方法が必要です。 – Dmitry

2

conf.dを使用することができます。基本的には、etcdやconsulから設定を取得してローカルファイルに書き込むことができるティルニー設定マネージャです。 私はそれを使用して、LiferayインスタンスのKubernetesクラスタを構成することができました。私はスタンドアロンの例を持っていませんが、here is conf.d設定ファイルを作成するコード(CoseOSのクラウド設定から)です。

+0

ファイルシステムの変更を避けることをお勧めします。プログラムでLiferayプロパティを変更する方法がない場合、bashスクリプトを使用してLiferayプロパティを変更することができますが、これは避けたいものです。 – Dmitry

+2

これをプログラムで行うことは可能ですが複雑です。あなたはconsiferからプロパティを直接ロードするためにLiferayを置き換える/拡張する必要があります(ConfigurationFactoryとConfigurationFactoryImplを探してください) –

+0

私は自分自身でConfigurationFactoryImplの実装を提供し、クラスパスでLiferayのクラスを置き換える必要があるでしょうか? – Dmitry

関連する問題