Fragments are bundles that can be attached to one or more host bundles by the
Framework. Attaching is done as part of resolving: the Framework appends
the relevant definitions of the fragment bundles to the host's definitions
before the host is resolved. Fragments are therefore treated as part of the
host, including any permitted headers; they must not have their own class
loader though fragments must have their own Protection Domain.
When attaching a fragment bundle to a host bundle the Framework must
perform the following steps:
1 Append the import definitions for the Fragment bundle that do not con-
flict with an import definition of the host to the import definitions of the
host bundle. A Fragment can provide an import statement for a private
package of the host. The private package in the host is hidden in that
2 Append the Require-Bundle entries of the fragment bundle that do not
conflict with a Require-Bundle entry of the host to the Require-Bundle
entries of the host bundle.
3 Append the export definitions of a Fragment bundle to the export defini-
tions of the host bundle unless the exact definition (directives and
attributes must match) is already present in the host. Fragment bundles
can therefore add additional exports for the same package name. The
bundle-version attributes and bundle-symbolic-name attributes will
reflect the host bundle.
A host and a fragment conflict when they cannot resolve to provide a consis-
tent class space. If a conflict is found, the Fragment bundle is not attached to
the host bundle.
A Fragment bundle must enter the resolved state only if it has been success-
fully attached to at least one host bundle.
During runtime, the fragment's JAR is searched after the host's bundle class