Hello Liferay Community,
I am designing a modernized production deployment strategy for Liferay Portal 7.4. Our primary goals are to treat the core Liferay bundle directory as completely immutable infrastructure and to optimize system uptime by avoiding unnecessary JVM restarts during configuration updates.
We have devised a strategy to decouple environment-specific properties and OSGi settings from the bundle, pushing them to an external system directory (/etc/liferay/).
I would highly appreciate feedback, edge-case warnings, or validation from enterprise Liferay architects on the following setup.
1. The Core Architecture
We are categorizing our configurations into two distinct lifecycle buckets:
- JVM-Bound Properties (
portal-ext.properties): Loaded once at startup. Changes require a graceful service restart. - Live-Reloadable OSGi Configs (
*.config): Managed by Apache Felix File Install for real-time hot-reloading.
2. Externalization Implementation
A. Chaining Portal Properties
Instead of deploying different portal-ext.properties into the bundle per environment, the bundle contains a single static file pointing to the host file system:
# Packed inside the core bundle's portal-ext.properties
include-and-override=/etc/liferay/portal-ext.properties