Hi,

NXRuntime.getRuntime().getProperty(String propertyName,String defaultValue) should also be available.

Regards.



Bogdan Stefanescu wrote:

Hi all,

A few weeks ago a global configuration mechanism was added to Nuxeo5. I will explain here
how this is working and what's this good for.

So, what's it good for?

As you know most of Nuxeo5 modules (functionalities) are configured through XML component descriptors that supports defining properties, extension points and contributing extensions to other components.
So the configuration is defined at component level.
But there are cases when you want to define global properties accessible to all components in the system.
Examples:
- you need a name and a version for your product so that it may be displayed in the web interface or exposed by some components to clients through web services (ex: getProductName() getproductVersion())
This should be defined at a global level in the application
- you need to setup some ports to listen to in your component. But want to put this configuration in a centralized place so that when you need to change the ports used by nuxeo5 you modify only one file. For example the streaming service is listening to the port 3233, and the remoting service to 62474 If you want to modify the ports used by nuxeo5 you need to modify the StreamingService.xml and RemotingService.xml filers from nuxeo-runtime.jar
Using a global configuration file you will need to modify only one file.


How it works?

To define global properties you simply copy a java property file in nuxeo.ear/config directory. The file should have one of the following extensions: *.ini, *.config, *.properties All properties declared in these files will be loaded at start time and made accessible through NXRuntime API.
Example:

NXRuntime.getRuntime().getProperty("org.nuxeo.ecm.product.name");

Also you can use property keys inside component XML descriptors as part of property values.
Example:

<component name="org.nuxeo.runtime.streaming" version="1.0.0">
<implementation class="org.nuxeo.runtime.services.streaming.StreamingService"/> <property name="isServer" type="Boolean" value="${org.nuxeo.runtime.streaming.isServer}"/>
 ...
</component>

The property "isServer" of the org.nuxeo.runtime.streaming component will be expanded to the value
of the global property "org.nuxeo.runtime.streaming.isServer"

You can also use expansion when defining global components:

Example:
org.nuxeo.runtime.host=localhost
org.nuxeo.runtime.streaming.serverLocator=socket://${org.nuxeo.runtime.host}:3233

The property org.nuxeo.runtime.streaming.serverLocator will be expanded to socket://localhost:3233


By default Nuxeo5 comes with a configuration file named nuxeo.config and that for now contains the following properties:

--------------------------------------------------------------------------------
# application instance config
org.nuxeo.ecm.instance.name = Nuxeo5 org.nuxeo.ecm.instance.description = Nuxeo ECM server on JBoss

# product config
org.nuxeo.ecm.product.name = Nuxeo5 org.nuxeo.ecm.product.version = 5.1M2

# runtime remoting config
org.nuxeo.runtime.server.enabled=true
org.nuxeo.runtime.server.port=62474
org.nuxeo.runtime.server.host=127.0.0.1

# streaming config
org.nuxeo.runtime.streaming.isServer=true
org.nuxeo.runtime.streaming.serverLocator=socket://127.0.0.1:3233
-------------------------------------------------------------------------------------------
Bogdan

_______________________________________________
ECM mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm

Reply via email to