Startup Properties

init.xargs style

Concierge supports Knopflerfish-style startup files. The -Dxargs=myxargsfile property can be used to specify a specific startup file, otherwise Concierge searches for a file called init.xargs. The following options are supported:

-Dproperty=value Set a system property. List of properties below shows all properties that affect the behavior of Concierge.
-install URL Install a bundle. URL can be an URL to a file on a http web server or something in the form file:/my/dir/my.jar. If ch.ethz.iks.concierge.jars is set, everything which is not a full URL is interpreted as a path relative to the JAR directory URL.
-start URL Start a bundle that has been installed before.
-istart URL Install and start a bundle.
-initlevel level Set the initial start level for all successive -install and -start commands.
-startlevel level Set the start level of the framework.
-init Perform a clean start instead of a restart, even if a profile is set.

system.properties style

Additionally, Oscar-style system.properties files are supported. A specific file can be set by the -Dproperties=my.properties property. The following properties are supported:

osgi.auto.install a space delimited list of bundles that are installed.
osgi.auto.install.level a space delimited list of bundles that are installed on start level level.
osgi.auto.start a space delimited list of bundles that are started.
osgi.auto.start.level a space delimited list of bundles that are started on start level .level.
osgi.startlevel.framework the initial start level of the framework.
osgi.startlevel.bundle the initial start level for newly installed bundles.

Using profiles

Profiles can be defined and used for restarts. From the command line, just start your Concierge framework and add the name of the profile as an argument. Or using an xargs files, the option -profile profileName can be used and in property files, it is the osgi.profile=profile property.
The idea of a profile is to have different separated setups of bundles that can be restarted at any time. Different to Oscar, Concierge does not require user interaction to use or define profiles.

The init option can be used to control restart or clean start. If a profile is set, Concierge tries to restore the profile and otherwise performs a clean start and starts / installs all required bundles. By setting init (or the osgi.init property), it can be enforced that Concierge always performs a clean start, if the restart of the profile is not passed as argument in the following form:

java -jar concierge-0.6.0.jar myprofile

List of properties

Currently, Concierge supports the following properties:

Attribute Default Comment
org.osgi.framework.system.packages Comma-separated list of additional packages provided by the system and used to resolve package imports. This can be, e.g., javax.* packages.
ch.ethz.iks.concierge.basedir . All paths that are not explicitly defined are considered to be relative to the basedir.
ch.ethz.iks.concierge.jars = basedir The path where the bundle JARs can be found.
ch.ethz.iks.concierge.storage basedir/storage The path of the storage location. Can be used to allocate the framework's private storage on a different medium, for instance if Concierge is executed from a read-only medium.
ch.ethz.iks.concierge.classloader.buffersize 2048 = 2048 Bytes The buffer size for class loader I/O operations. Generally, it is a tradeoff of how many data can be read at once and how much time it takes to allocate the buffer memory. Experiments have shown that the size of 2k is the minimum on many devices. But this can depend on the average size of your bundles, the hardware architecture, disk block size, etc.
ch.ethz.iks.concierge.log.enabled false = disabled Enable the internal LogService of the Concierge framework. This allows the framework to write debug messages to the log. This is particularly useful for headless devices don't support System.out. Simply add a small LogReader that writes all log messages to a disk.
ch.ethz.iks.concierge.log.buffersize 10 = ten entries. Number of log entries that are buffered.
ch.ethz.iks.concierge.log.level 1 = LOG_ERROR The log level. Can be 0 = NONE, 1 = LOG_ERROR, 2 = LOG_WARNING, 3 = LOG_INFO or 4 = LOG_DEBUG. The larger level includes all smaller levels.
ch.ethz.iks.concierge.debug.bundles false = disabled Generate debug messages for bundle operations. Requires the log service to be enabled.
ch.ethz.iks.concierge.debug.packages false = disabled Generate debug messages for package operations. Requires the log service to be enabled.
ch.ethz.iks.concierge.debug.services false = disabled Generate debug messages for service operations. Requires the log service to be enabled.
ch.ethz.iks.concierge.debug.classloading false = disabled Generate debug messages for class loading operations. Requires the log service to be enabled.
ch.ethz.iks.concierge.debug false = disabled Generate full debug output. This is equivalent to ch.ethz.iks.concierge.log.enabled=true, ch.ethz.iks.concierge.log.level=4, ch.ethz.iks.concierge.debug.bundles=true, ch.ethz.iks.concierge.debug.packages=true, ch.ethz.iks.concierge.debug.services=true, and ch.ethz.iks.concierge.debug.classloading=true.
ch.ethz.iks.concierge.strictStartup false = disabled Strict startup means, Concierge terminates if one of the initially started bundle fails to install or if a warning occurs.
ch.ethz.iks.concierge.decompressEmbedded true = enabled Tells Concierge to decompress bundles containing embedded JARs. This can give a remarkable speedup if significant parts of the bundles' code reside inside of embedded JARs. For devices with highly constrained resources, this should be disabled.
ch.ethz.iks.concierge.security.enabled false = disabled Enable OSGi security. Please note, that the security part is not yet 100% complete and not entirely tested. So use with care. Also note, that this property has no effect unless you also specify a Java SecurityManager for your VM.