I'm investigating launching Karaf from within Java and I have some questions 
about setting Karaf's configuration properties.

I think Karaf shows a whole lot of promise as the foundation for OSGi products, 
I'd love to be able to use it and I'm looking forward to the 3.0 release as it 
appears to have a bunch of stuff I think makes it very useful.  The embedded 
scenario is very important to me as well, hence the questions.   We currently 
use Equinox directly with their servlet bridge.

When using the startup script, a bunch of system properties are set when 
launching the Java process.     When launching Karaf from Java, the only 
example I've seen is the web container example that I think is in the source.  
It sets a bunch of system properties via Java before calling the launcher class.

Is Karaf dependent on system properties to configure itself?  Is there any 
other way to give Karaf the config information it needs?

I see that there is a system.properties file in the /etc folder - does Karaf 
simply use this file - after modifying the values from matching system 
properties that are present?

While system properties are fine when you have are launching the Java process 
yourself, it's not appropriate to set them or read them in an embedded 
situation, as you don't always have control over how that process was launched, 
or what other classes are reading or setting system properties within the same 
process.    In an embedded situation if you set system properties in code then 
you've limited yourself to a single Karaf instance being launched from that 
process.

As an ideal solution, lauching Karaf from Java would pass in a map of 
configuration values.  We could then write wrappers that, for example, pull 
configuration values from the servlet context, or from an external properties 
file that contains the initial values.

Thanks for any feedback

Lindsay




Reply via email to