Introduction

This document was created as part of ACE-109. It also relates to KARAF-399 and KARAF-400. Since the actual Deployment Admin implementation is part of Apache Felix, we will probably at some point cross post this document to the Felix developer community as well.

Problem Description

The current Deployment Admin specification states that you can have only one version of a bundle (identified by its symbolic name) in a deployment package. It also states that a bundle (identified by its symbolic name) can only be part of a single deployment package.

In some cases it might actually make sense to allow different versions of a bundle side by side. An example would be a library bundle such as commons logging, or a bundle that provides a specific service that is available in two, not backward compatible versions.

In theory, the deployment admin specification could allow more versions of a bundle to be installed at once. The problem that then exists is what to do when upgrading or downgrading to different versions of that same deployment package. Currently, if a newer version of a deployment package contains a newer version of a bundle, this is considered an update. This model breaks down if there are multiple versions around, for example, what if we have the following deployment packages:

deployment package

version

bundle symbolic name

version

bundle symbolic name

version

DP

1.0

A

1.0

A

1.1

DP

2.0

A

2.0

A

2.1

Let's say we want to update from DP 1.0 to DP 2.0. Is A 2.0 an update of A 1.0, or of A 1.1? What about A 2.1? Or are both not updates but fresh installs, meaning A 1.0 and 1.1 should both be uninstalled before installing A 2.0 and A 2.1?

The reason for not wanting to uninstall/install but update instead is to correctly preserve the data area of the bundle (which is only preserved on an update).

Potential Solutions

Some random notes:

  • bundles can be marked as singletons

Conclusion

...

  • No labels