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

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 create Clock instances that tell the time in a particular time zone.
The time-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().
The hello-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 the hello-paris API bundle.
The hello-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().
The hello-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 the HelloParis OSGi service and the HelloBoston OSGi service and then invokes on these services to report the local times in Paris and in Boston.
The hello-consumer bundle has the following external package dependencies:
org.fusesource.example.hello.paris
org.fusesource.example.hello.boston
org.fusesource.example.time
Red Hat logoGithubRedditYoutubeTwitter

Learn

Try, buy, & sell

Communities

About Red Hat Documentation

We help Red Hat users innovate and achieve their goals with our products and services with content they can trust.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

© 2024 Red Hat, Inc.