2016-11-21 50 views
1

我们在我们的应用程序中使用Liferay 6.2 Portal。 我们想用来自Consul的值更新portal-ext.properties中的属性。 例如,我们要使用Consul的值来设置property virtual.hosts.valid.hosts。 我们想要避免的一个选择是使用Consul-template并使用bash脚本更新文件。如何使用Consul配置Liferay

是否有编程方式来更新Liferay中的属性? (例如,来自挂钩)

回答

0

由于没有以编程方式配置Liferay的性质不容易的编程方式,我们决定修改启动sh脚本在我们的习惯阅读距离领事和更新配置数据portal-ext.properties

0

某些属性可以通过钩子动态更新。你可以在liferay-hook.xml的dtd中找到它们。只需创建一个钩子并查找dtd url(我目前在我的手机上,没有像这个url的资源访问权限)

+0

谢谢你,但DTD指出,它允许只更改特定的一组属性,而我需要的属性不在列表中。 此外,我需要发送REST请求到外部服务(从Java代码)以获得期望的值。 – Dmitry

+0

对于未在dtd中列出的所有属性,您需要重新启动应用服务器或自行实施更新。这可能是可能的,但只是没有实现。我怀疑非动态属性没有API来改变他们 –

+0

我没有任何问题重新启动。我只是想避免在文件系统中更改任何配置Liferay的东西,所以我需要一种方法来在Liferay启动期间更改某些属性的值。 – Dmitry

2

您可以使用conf.d。它基本上是一个配置管理器,可以从etcd或consul获取配置并将其写入本地文件。 我已经使用它来配置Kubernetes集群的Liferay实例。我没有独立的示例,但创建conf.d配置文件的代码(来自CoseOS的云配置)为here is

+0

我宁愿避免对文件系统进行任何更改。如果没有办法以编程方式更改Liferay属性,我们可以使用bash脚本来更改它们 - 但这是我们想要避免的。 – Dmitry

+2

以编程方式做到这一点是可能的,但很复杂。你必须替换/扩展Liferay以直接从consul载入属性(查找ConfigurationFactory和ConfigurationFactoryImpl) –

+0

您是否需要提供我自己的ConfigurationFactoryImpl实现并将Liferay的类替换为类路径? – Dmitry