Examine the possibility of implementing Derby modules as OSGI bundles
---------------------------------------------------------------------

                 Key: DERBY-3405
                 URL: https://issues.apache.org/jira/browse/DERBY-3405
             Project: Derby
          Issue Type: New Feature
            Reporter: Dibyendu Majumdar


At present, Derby as a whole is offered as an OSGI bundle.
Internally, Derby does not use OSGI for managing modules. Modules and services 
(which are collections of modules) are managed using the Monitor component, 
which is a custom IoC container, designed specifically for Derby.

Some of the features of the Monitor component, mirror facilities offered by 
OSGI. The obvious ones are:

a) Loading modules based upon environment. The features offered by the Monitor 
subsystem were described by Dan like this:

The monitor ... selects the module implementation that is suitable for the 
given environment by:

  - seeing what the current JDK level is and if a module implementation 
supports it
  - seeing what classes a module implementation requires and if they exist
  - if the module implements ModuleSupportable and if so asking the module if 
it can support the current environment.

As an example, modules.properties today contains three JDBC implementations, 
JSR169, JDBC 3 and JDBC 4, having multiple exist is not an issue, the monitor 
selects the correct one.

The ability to load bundles based on environment compatibility is one of OSGI 
features.

b) Resolving module interdependencies.
c) Managing life-cycle of services and modules.

A migration from the Monitor component to an OSGI based packaging is not going 
to be an easy transition. At this stage, therefore, this is more of an 
experiment.

The benefits of using OSGI are:

a) It supports dependencies based upon versions of bundles. 
b) It will make it easier to add/remove components, specially at run-time. 
However, the use case for this needs defining.
c) It may open up Derby to other possibilities ... 

The disadvantages are:

a) Introduces a dependency on OSGI - whereas Derby at present has its own IoC 
implementation.
b) Will mean a major change to how Derby is bundled and therefore potentially 
impact users.



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to