Apache

Run Modes

As of Sling 6 the org.apache.sling.runmode bundle is replaced by the new Sling Settings (org.apache.sling.settings) Bundle. For backwards compatibility this bundle may still exist in your environment. New code should use the API of the new Sling Settings Bundle, though.

Overview

Run modes are meant to define different sets of configuration parameters for various Sling instances.

In a web publishing environment, for example, one could use run modes like staging, production, dev, dmz or combinations of such values.

The [org.apache.sling.runmode]({{ refs.http://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/runmode.path }}) bundle provides a simple way of defining and querying a list of run modes.

Installation

The run mode service is not present in the default Sling launchpad builds, to activate it install and start the org.apache.sling.runmode bundle.

Configuration

Run modes can only be configured using a system property, or via the sling.properties file.

Using -Dsling.run.modes=foo,bar on the JVM command-line, for example, activates the foo and bar run modes.

This command-line parameter takes precedence over a similar definition (*sling.run.modes=dev,staging*) that might be present in the sling.properties file found in the Sling home directory.

Getting the current list of run modes

The [RunMode service]({{ refs.http://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/runmode/src/main/java/org/apache/sling/runmode/RunMode.java.path }}) provides the current list of run modes, examples:

:RunMode r = ...get from BundleContext...
String [] currentRunModes = r.getCurrentRunModes();

String [] expectedRunModes = { "foo", "wii" };
if(r.isActive(expectedRunModes)) {
  // at least one of (foo,wii) run modes
  // is active
}

See also

The RunMode service is used by the [jcrinstall]({{ refs.jcr-installer-provider.path }}) services.