At the end of the previous step, a dependency was created on an OSGi Service Registry exposed instance of
greenpages.Directory. The application would not start because no other bundle was
contributing an instance of this service to the Service Registry.
Ensure the server instance is stopped before proceeding.
In this step Spring’s context scanning is added which will create an instance of the
DirectoryImpl class.
Open the greenpages.internal.DirectoryImpl class in the greenpages.app
project. Add the @Component annotation to the class:
@Component("directory") public class DirectoryImpl implements Directory { …
generating imports with Eclipse’s help if necessary.
Open the META-INF/spring/module-context.xml in the greenpages.app
project. (This is found under the src/main/resources directory.)
Add component scanning to this file:
<context:component-scan base-package="greenpages.internal"/>
When complete, go to the next step.
In this step the DirectoryImpl instance is published to the OSGi Service
Registry.
Open the META-INF/spring/osgi-context.xml file. Add the
<osgi:service…/> tag to publish the directory bean with an
interface of greenpages.Directory.
<osgi:service ref="directory" interface="greenpages.Directory"/>
Start (or restart) the dm Server instance from the Servers view. If the GreenPages PAR was not
removed before, it will be automatically deployed, otherwise deploy it as before. There should be no errors reported.
When GreenPages is deployed successfully, open a web browser and navigate to
http://localhost:8080/greenpages. On
the home page type wilkinson into the search field and press Submit.
This will return a list (of size 1) of search results. From here, select
view to get the “detailed” listing.

This uses the stub implementation of the Directory interface (DirectoryImpl)
which only knows about “Andy Wilkinson”.
The web interface is complete enough. Go to the next chapter for the middle tier implementation.