Creating an OSGi application

For the simple HelloWorld OSGi application, the bundle that defines the service and the bundle that uses the service are packaged together in an OSGi application.

Before you begin

This topic assumes that you have already completed the following tasks:

You can create your application as described in this topic, in which case the application manifest file is created for you by the tooling, or you can create your application using Apache Ant.

About this task

OSGi bundles are packaged as Java™ archive (JAR) files with a .jar extension. A single OSGi application is packaged in an enterprise bundle archive (EBA) file with a .eba extension, just as an enterprise application is packaged in an enterprise archive (EAR) file with a .ear extension. In this example application, the bundles are packaged directly in the EBA file. However, the EBA file does not have to contain the bundles; they can be pulled in at run time. For an OSGi application deployed to WebSphere® Application Server, a bundle can be located in the EBA file, or in the WebSphere Application Server internal bundle repository, or in an external bundle repository. Every EBA file contains an application manifest file, called APPLICATION.MF, that contains the metadata that defines the application. It lists the bundles that the application uses, and says where each bundle is located.

Rational® Application Developer Version 8.5 provides graphical support for creating and packaging bundles. The sample procedure that follows uses this tool. You can also use other tools, and the steps are adaptable to other tools.

This sample procedure creates a simple hello-world OSGi application called com.ibm.ws.eba.helloWorldApp, in which the three bundles com.ibm.ws.eba.helloWorld.api, com.ibm.ws.eba.helloWorld.service and com.ibm.ws.eba.helloWorld.client are packaged together in an .eba file.

When you deploy and start this application, it prints the greeting message OSGi Service: Hello World! to the system output log.

Procedure

To create the application, complete the following steps:

  1. Create an OSGi application project.
    1. Click File > New > OSGi Application Project.
      The OSGi Application Project panel is displayed.
    2. Configure the project.
      • For Project name, enter com.ibm.ws.eba.helloWorldApp.
      • Ensure that Use default location is selected.
      • Ensure that Add project to working sets is cleared.
    3. Click Next.
    4. In the Contained Bundles list, select com.ibm.ws.eba.helloWorld.api 1.0.0, com.ibm.ws.eba.helloWorld.client1.0.0 and com.ibm.ws.eba.helloWorld.service1.0.0.

      For more information about these bundles, see Creating a service bundle and Creating a client bundle.

    5. Click Finish.
  2. Optional: Deploy and test the OSGi application project on a server running inside IBM® Rational Application Developer.

    If you are using Rational Application Developer Version 8, you can deploy to a local machine without first exporting the OSGi application as an EBA file. This is typically how you would test your application. If you are using another tool, omit this step.

    1. Right-click the com.ibm.ws.eba.helloWorldApp project, then select Run As > Run on Server.
      The Run On Server panel is displayed. If you have already configured a WebSphere Application Server in your Rational Application Developer workspace, you can select Choose an existing server, and then select that server. Otherwise, manually define a new server by completing the remaining steps.
    2. Configure the Run On Server panel:
      1. For server type, select IBM > WebSphere Application Server v8.0.
      2. For server host name, enter a valid TCP/IP host name. For example, enter the TCP/IP hostname for your computer or enter localhost.
      3. For server name, enter the name by which you want to refer to the server within Rational Application Developer.
      4. For server runtime environment, select WebSphere Application Server v8.0. If this option is not available in the list, complete the following steps:
        1. Click Add.
        2. Navigate to the app_server_root directory for your installation of WebSphere Application Server. For more information on the app_server_root directory, see app_server_root.
        3. Click Finish.
      5. Click Next.
      The WebSphere Application Server Settings panel is displayed.
    3. Configure the WebSphere Application Server Settings panel:
      1. For the profile name, select the profile that you use with OSGi Applications.
      2. For the application server name, verify that the application server name for your profile is displayed. By default, the first application server for a profile is called server1.
      3. If security is enabled on your application server, enter a user ID and password.
      4. Click Next.
      The list of configured OSGi application projects is displayed.
    4. Check that your OSGi application project is in the list of configured projects.
    5. Click Finish.
      The server starts automatically, your application is published and started, and the following output is displayed on the Console tab:
      [4/15/10 14:07:33:295 GMT] 00000023 SystemOut O Client: Start...
      [4/15/10 14:07:33:581 GMT] 00000023 SystemOut O OSGi Service: Hello World!
      [4/15/10 14:07:33:581 GMT] 00000023 SystemOut O Client: End... 
  3. Export the project as an EBA file.
    1. Right-click the project name, then select Export > OSGi > OSGi Application EBA.
    2. Enter a location for the exported file, then name the file com.ibm.ws.eba.helloWorldApp.eba.
    3. Click Finish.

Results

You have completed the detailed instructions for developing a simple OSGi application. In this application, a client bundle that uses a service that is defined in a service bundle to produce the message OSGi Service: Hello World!. Your application uses the OSGi service registry to share the hello service between the defining bundle and the client bundle. All interactions with the service registry are handled through Blueprint.

What to do next

You are now ready to deploy and start your OSGi application outside of Rational Application Developer, by completing the following steps:
  1. Deploy your OSGi application as a business-level application.
  2. Start your business-level application.
  3. Check the system output log for the greeting message OSGi Service: Hello World!.
You can use the administrative console or wsadmin commands to deploy and start an OSGi application in WebSphere Application Server. For information about how to do this for any OSGi application, see Starting your business-level application. When you check the system output log, you should see the following message:
[4/15/10 14:07:33:295 GMT] 00000023 SystemOut O Client: Start...
[4/15/10 14:07:33:581 GMT] 00000023 SystemOut O OSGi Service: Hello World!
[4/15/10 14:07:33:581 GMT] 00000023 SystemOut O Client: End...