### OSGi

code

docs

tests

OSGi Library allows you to import OSGi services as Zest™ Services and to export Zest™ Services as OSGi Services both leveraging the Zest™ Availability and OSGi FallbackStrategy mechanisms.

Table 39. Artifact

Group ID | Artifact ID | Version
--- | --- | ---
org.qi4j.library | org.qi4j.library.osgi | 2.1

#### Export Zest™ services to an OSGi Bundle

    interface MyQi4jService
        extends OSGiEnabledService
    {
        // ...
    }
    [...snip...]

    public void assemble( ModuleAssembly module )
        throws AssemblyException
    {
        BundleContext bundleContext = // ...
        [...snip...]

        module.services( OSGiServiceExporter.class ).
            setMetaInfo( bundleContext );
        module.services( MyQi4jService.class );
    }

#### Import OSGi services in a Zest™ Module

    public void assemble( ModuleAssembly module )
        throws AssemblyException
    {
    [...snip...]

        module.services( OSGiServiceImporter.class ).
            setMetaInfo( new OSGiImportInfo( bundleContext,
                                             MyOSGiService.class,
                                             MyOtherOSGiService.class ) ).
            setMetaInfo( new MyFallbackStrategy() );
    }

The fallback strategy is invoked when the OSGi service is not available and a method call is invoked.