Carsten Ziegeler skrev:
Reinhard Poetz wrote:
How does OSGi solve this?
Since OSGi4 declarative services are supported. Think of Spring dependency injection but considering interface/implementation relations. You can use the OSGi configuratonAdmin service to change an injected component or a component's properties.
Ok, but this is then configuration at runtime and not at development
time, right?

The configuration admin is called when a service (component) is registered.

Where are those values stored?

According to the spec they are stored persistently. The actual storage mechanism is not standardized though. In Felix they talking about connecting the configuration admin to the storage API from the directory project so that configurations can be stored in e.g. an LDAP server.

Reinhard and I have discussed initializing the configuration admin from an XML or property file.

Additionally we have the possibility to redisgn e.g. forms and portal to use the OSGi whiteboard pattern[1]. Using it makes extending them very simple as it makes extensions very simple - you just have to provide a component that implements a particular interface and it is automatically added as reference to another component.

I don't want to rewrite blocks in order to use OSGi and I think one of
our main goals for using OSGi is that this does not affect the way how I
develop blocks which means it is totally transparent. So imho we need an
OSGi-free way which works at development time.

The whiteboard pattern isn't about OSGi per se, but rather about how to organize extensible components in a plugin based architecture. The configuration model that is used for CForms is not suitable for a plugin architecture at all, as it assumes a single complete list of all components in one place. If you want to ad a component you need to edit the central configuration file.

With the whiteboard pattern, each plugin register its services, e.g. validators and widgets, in a registry (the whiteboard). Then the user, e.g. the form framework search for the services it needs from the registry. This is much more flexible and extensible than the current architecture.

/Daniel

Reply via email to