2.2. Sample OSGi Application
Example of bundle dependencies
Figure 2.2, “Sample OSGi Application” shows an overview of a sample OSGi application consisting of five bundles, which illustrates the basic bundle types discussed in the previous section. The application is driven by the
hello-consumer
bundle, which imports a HelloParis
service from the hello-paris
bundle and imports a HelloBoston
service from the hello-boston
bundle.
Figure 2.2. Sample OSGi Application
The sample bundles
The sample OSGi application consists of the following bundles:
time-util
- Fits the pattern of a library bundle. The
time-util
bundle is a utility library that can createClock
instances that tell the time in a particular time zone.Thetime-util
bundle is implemented using classes from the JDK and thus has no external package dependencies. hello-paris
- Fits the pattern of an API bundle. The
hello-paris
bundle consists of a single Java interface, which returns a greeting,getGreeting()
, and gives the local time in Paris,getLocalTime()
.Thehello-paris
bundle has the following external package dependency:org.fusesource.example.time
hello-paris-impl
- Fits the pattern of a provider bundle. The
hello-paris-impl
bundle implements thehello-paris
API bundle.Thehello-paris-impl
bundle has the following external package dependencies:org.fusesource.example.hello.paris org.fusesource.example.time
hello-boston
- Fits the pattern of an API/provider combination bundle. The
hello-boston
bundle combines a Java interface and its implementation, where the Java interface returns a greeting,getGreeting()
, and gives the local time in Boston,getLocalTime()
.Thehello-boston
bundle has the following external package dependency:org.fusesource.example.time
hello-consumer
- Fits the pattern of a consumer bundle. The
hello-consumer
bundle imports theHelloParis
OSGi service and theHelloBoston
OSGi service and then invokes on these services to report the local times in Paris and in Boston.Thehello-consumer
bundle has the following external package dependencies:org.fusesource.example.hello.paris org.fusesource.example.hello.boston org.fusesource.example.time