You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

Configuration Management

The configuration handler aims to manage component configuration. This handler allows the configuration and dynamic reconfiguration of instances. A configuration is a set of couple (name, value). The name can be a field name or a property name associated to a field or/and a method.

Configurable Property configuration

To support configuration, the component type needs to declare which properties are configurable. These properties are not necessarily service property but can be internal component property.

Examples

<iPOJO>
<Component className="fr.imag.adele.escoffier.hello.impl.HelloServiceImpl">
   <Provides>
       <Property name="foo" field="m_foo"/>
   </Provides>
   <Properties propagation="false"/>
       <Property name="foo" field="m_foo"/>
       <Property name="array" method="updateArray"/>
       <Properties name="hello.language" type="java.lang.String"/>
   </Properties>
</Component>

<instance component="fr.imag.adele.escoffier.hello.impl.HelloServiceImpl" name="HelloService">
   <property name="foo" value="bar"/>
   <property name="array" value="\{1, 2, 3}"/>
   <property name="hello.language" value="en"/>
</instance
</iPOJO>

In the previous snippet, you can see three configurable properties. The first is a configurable property attached to the field 'foo' that is a service property too. The second is an array property attached to a method (updateArray). The third property is a staticproperty, in the sense that neither field nor method is attached to this property.

These three properties are configured by the instance configuration.

By setting the attribute propagation to "true", you allow the property propagation to the service registration. It means that at each time that the configuration of the instance is updated, all property contained in the configuration is propagate to the service registrations. For example, in the previous example, not only foowill be published but array and hello.language are also published.

If a property has a method, this method is invoked each time that the property value changes (the method is called to push the initial value just after the constructor). The method receives one argument of the type of the property (an integer array in the example).

Dynamic Reconfiguration

The handler supports reconfiguration. To reconfigure an instance you can use both iPOJO Factory and the Managed Service Factory exposed by the factory of the targeted instance. By calling the method reconfigure or update (according of the service do you use), the handler receive the new configuration and apply it. If the propagation is activated, the service registrations are updated too.

  • No labels