Hi Devs,

Dims has started the work on providing the OSGi extension to Axis2.  This
extension is a single bundle which consist of all the jars needed to run
axis2. It uses OSGi Bundle events to update AxisConfiguration.  Main  aspect
of  OSGi  is version and modularity. In order to get the full power of OSGi,
we need to consider the following,

1. Modules and Service loading
2. Using OSGi services

I would consider the first section. Second section has a broad scope and
lets discuss that in a separate thread.

With the OSGi, one could be able to write aar & mar as OSGi bundles. Thus,
when Axis2 start, one can give a repository where services & modules
available and one could use  bundles to  mimic this behaviour. When it's
come to bundles, they could either exist or remove from the system any-time.
This is dynamism of OSGi and this behaviour is currently not possible with
current module & service loading mechanism.

Current architecture requires, modules to be available first before services
are loaded, if modules are referenced by theses services. Thus, services
have a direct dependency to modules. Even if the service is not faulty, if
the referenced module is not available, that service become faulty. This
behaviour contradicts the nature of dynamic behaviour.

Thus, what would really need is modules to be loaded and initialize
orthogonal of service load and initialization. If loaded service reference
to a module that is not available yet, marked that service as "unresolved"
until the module is available. Once the module is available it would be
easily go thorough the "unresolved" services and marked the relevant
services as "resolved". Everything will be handle using OSGi events, which
is very powerful and flexible. There  could be other events that make the
service "unresolved", but the major one is module.

Where there are 100s of bundles available in the system, its not practical
to assume a start level to  bundles. These bundles may mimic Axis2
services/module or other 3rd party bundle.

I am totally fine with current deployment mechanism, but in order to obtain
a tighter integration we would have to revisit the current deployment
semantics. In addition to this standardizing this on Axis2 provide unique
user experience among the Axis2 community.

I am really appreciate if Axis2 folks comment on prior.

Thank you!

Saminda

Reply via email to