Network Deployment (Distributed operating systems), v8.0 > Develop and deploying applications > Develop OSGi applications > Sample OSGi applications
OSGi blog sample application
The blog sample application is a traditional blogging application, used for publishing essay-length articles and allowing readers to comment on them. This sample application shows how to write and package bundles into an enterprise bundle archive (EBA) file. The sample includes example code for Blueprint management, bean injection, using and publishing services from and to the OSGi service registry, and the use of Java persistence.
Before you begin
The blog sample application consists of five bundles, but can be run with four bundles because the fifth bundle is an upgrade to the persistence bundle.
The sample application requires that the supplied com.ibm.samples.websphere.osgi.logging.api.jar and com.ibm.samples.websphere.osgi.logging.impl.jar bundles are installed into the internal bundle repository. The following procedure describes how to do this. These two JAR files, and the blog sample EBA file, are provided in the installableApps directory of the OSGi_blogSample.zip compressed archive file.
About this task
The bundles are divided into the following functional areas:
- com.ibm.samples.websphere.osgi.blog.persistence, which contains code relating to the Java Persistence API (JPA) layer, and also contains interfaces that are used by the main application code to update and query blog entries.
- com.ibm.samples.websphere.osgi.blog_1.0.0, which contains the main application logic code, and interacts between the web front end and the back end persistence code layer.
- com.ibm.samples.websphere.osgi.blog.web, which contains the static web content and backing Java code for the web front end for the application.
- com.ibm.samples.websphere.osgi.blog.api, which contains the API for the whole sample.
- com.ibm.samples.websphere.osgi.blog.persistence_1.1.0, which contains an upgraded persistence bundle that also supplies a comment service.
We can use scripts to completely install the sample application, or you can use scripts to complete the initial configuration of the application then use the administrative console to install the application into the application server. We can also use, modify and remove the sample, and upgrade the persistence service provided by the sample.
Procedure
Configure and install the blog sample.
We can either configure and install the sample using scripts (the first optional step below), or you can configure the sample using scripts then install the sample using the administrative console (the second optional step below).
The scripts that you use to do this are provided in the scripts directory of the OSGi_blogSample.zip compressed archive file. The createBlogDb.sql script contains the necessary configuration commands to create the required Derby database and associated tables. The blogSampleInstall.py script contains the required jython to create data sources, and to install the blog sample with default configuration. You should fully qualify the path to the script if you do not run it from the directory that contains the script.
If we have data sources already defined in the environment, and these data sources have the same name as the data sources specified in the blogSampleInstall.py script, then the sample might not install and run successfully.
In the following steps substitute your own values for the variables WAS_HOME, profileName, serverName, nodeName, blogSample.eba_Location, com.ibm.samples.websphere.osgi.logging.api.jar_Location, com.ibm.samples.websphere.osgi.logging.impl.jar_Location, uncompressed_sample_directory, and path_to_ant.
- Optional: Configure and install the sample using scripts.
- Create and configure the "BLOGDB" Derby database and associated tables by running the following command.
On UNIX platforms:
WAS_HOME/derby/bin/embedded/ij.sh scripts/createBlogDb.sqlOn Windows platforms:
WAS_HOME\derby\bin\embedded\ij.bat scripts\createBlogDb.sql
- Create the data sources, create the business-level application and import the .eba file as an asset by running the following command.
The target application server must be running before you use this script.
On UNIX platforms:
WAS_HOME/profiles/profileName/bin/wsadmin.sh -f scripts/blogSampleInstall.py fullInstall serverName nodeName blogSample.eba_Location com.ibm.samples.websphere.osgi.logging.api.jar_Location com.ibm.samples.websphere.osgi.logging.impl.jar_LocationOn Windows platforms:
WAS_HOME\profiles\profileName\bin\wsadmin.bat -f scripts\blogSampleInstall.py fullInstall serverName nodeName blogSample.eba_Location com.ibm.samples.websphere.osgi.logging.api.jar_Location com.ibm.samples.websphere.osgi.logging.impl.jar_Location
- Optional: Configure the sample using scripts, then install the sample using the administrative console.
- Create and configure the ""BLOGDB" " Derby database and associated tables by running the following command.
On UNIX platforms:
WAS_HOME/derby/bin/embedded/ij.sh scripts/createBlogDb.sqlOn Windows platforms:
WAS_HOME\derby\bin\embedded\ij.bat scripts\createBlogDb.sql
- Create the data sources by running the following command.
On UNIX platforms:
WAS_HOME/profiles/profileName/bin/wsadmin.sh -f scripts/blogSampleInstall.py setupOnly serverName nodeNameOn Windows platforms:
WAS_HOME\profiles\profileName\bin\wsadmin.bat -f scripts\blogSampleInstall.py setupOnly serverName nodeName- Use the administrative console to add the com.ibm.samples.websphere.osgi.logging.api.jar file to the internal bundle repository.
- Navigate to Environment > OSGi bundle repositories > Internal bundle repository
- Click New.
- Select the file system that hosts the com.ibm.samples.websphere.osgi.logging.api.jar file, then click Browse.
- Browse to the uncompressed_sample_dir/installableApps directory.
- Select the com.ibm.samples.websphere.osgi.logging.api.jar file, then click OK.
- Click OK.
- Click Save.
- Repeat the previous step to add the com.ibm.samples.websphere.osgi.logging.impl.jar file to the internal bundle repository.
- Use the administrative console to import the application (EBA file) as an asset, and to configure the business-level application.
- Import the asset.
- Navigate to Applications > New application > New Asset.
- On the Upload asset panel, browse to the uncompressed_sample_dir/installableApps directory.
- Select the com.ibm.samples.websphere.osgi.blog.eba file, then click Next.
- On the Select options for importing an asset panel, click Next.
- On the Summary panel, click Finish.
- Click Save.
- Create the business-level application and add the asset.
- Navigate to Applications > New application > New Business Level Application.
- On the New Application panel, enter a name for the business-level application. For example, "blog".
- Click Apply.
- In the Deployed assets pane, click Add > Add Asset.
- Select the com.ibm.samples.websphere.osgi.blog.eba asset, then click Continue.
- On the Set options panel, click Next.
- Select a target for the composition unit, then click Next.
- Modify the context root if required, then click Next.
- Modify the virtual host if required, then click Next.
- On the Summary panel, click Finish.
- Click Save.
- Start the application.
- Select the newly-created business-level application.
- Click Start.
Use the blog sample.
- Use your browser to navigate to //publib.boulder.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=/ ://server:port/context_root/ (by default //publib.boulder.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=/ ://localhost:9080/blog/). The View blog screen is displayed.
- Register yourself as an Author. You need to do this before you can create blog entries.
- Click Create Author.
- Fill in the form.
- Click Submit.
- Create a blog entry.
- Navigate back to //publib.boulder.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=/ ://localhost:9080/blog/ (or click Blog Home).
- Click Create New Post.
- Fill in the form. Use the email address specified when you created the Author.
- Click Submit.
The View blog screen is redisplayed, and should contain your post.
Upgrade the persistence service.
To add the new persistence bundle to the blog application, use the administrative console to add the com.ibm.samples.websphere.osgi.blog.persistence_1.1.0.jar file to the internal bundle repository, then modify the asset to expect a new bundle version.
- Navigate to Environment > OSGi bundle repositories > Internal bundle repository.
- Click New.
- Browse to the uncompressed_sample_dir/installableApps directory.
- Select the com.ibm.samples.websphere.osgi.blog.persistence_1.1.0.jar file, then click OK.
- Save your changes to the master configuration.
- Navigate to Applications > Application types > Assets.
- Click com.ibm.samples.websphere.osgi.blog.eba to view the asset information.
- Scroll to the end of the asset information, then click Update bundle versions in this application.
- Find the com.ibm.samples.websphere.osgi.blog.persistence bundle in the list.
- Click the down arrow beside the text "no preference". You are offered a choice between version 1.0.0 or 1.1.0 of the persistence bundle.
- Select version 1.1.0, then work through the preview, commit and save screens.
- Navigate to Applications > Application types > Business-level applications.
- Stop then restart the blog sample.
Select the business-level application representing the blog sample application, then click Stop. Wait until the status column shows that the application has stopped, then click Start.
- Use your browser to navigate to //publib.boulder.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=/ ://server:port/context_root/ (by default //publib.boulder.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=/ ://localhost:9080/blog/) then refresh the screen. The View blog screen is displayed. There is a new option to add comments to blog posts.
Modify the blog sample
All the source code for this application is provided in sub-directories below the uncompressed_sample_dir directory. Each part of the project has its own ant build.xml script. To build the whole application into a newly-available EBA file, you use the ant build.xml file located in the uncompressed_sample_dir directory. WAS ships a version of ant in its bin directory called ws_ant.
To build the sample, you also need several JAR files on the ant classpath.
To simplify matters, you can edit the was.root property in the supplied build.properties file to point to these JAR files.
- Put the following jar files on the ant classpath:
- javax.j2ee.persistence.jar
- javax.j2ee.jsp.jar
- javax.j2ee.servlet.jar
These JAR files are available in the plugins directory of Websphere Application Server. Edit the was.root property in the supplied uncompressed_sample_dir/scripts/build.properties file, and point it to your WAS_HOME directory. If we have copied the jars to another location, modify the was.root property to point to this location.
- Run the following ant command from the uncompressed_sample_dir directory:
path_to_ant -propertyfile scripts/build.properties -buildfile build.xmlThe newly-built binary (EBA file) is in the uncompressed_sample_dir/output directory.This is the only location to which this EBA file is written. The script does not overwrite the original binary located in the uncompressed_sample_dir/installableApps directory.
Remove the blog sample.
To remove the blog sample, you complete the following 3 steps:
- Remove the application configuration and the data sources, either by using a script (the first optional step below), or by using the administrative console (the second optional step below).
- Remove the shared logging bundles from the internal bundle repository.
- Remove the database.
Only remove the bundles if we have no other applications installed that use them. Both the blog and blabber sample applications use the shared logging bundles, so if both applications are installed these bundles should not be removed.
The uninstall script is provided in the scripts directory of the OSGi_blogSample.zip compressed archive file. The blogSampleUninstall.py script contains the required jython to remove data sources and to remove the installation of the blog sample with default configuration. You should fully qualify the path to the script if you do not run it from the directory that contains the script.
In the following steps substitute your own values for the variables WAS_HOME, and profileName.
- Optional: Remove the application configuration and the data sources by running the following command.
The target application server must be running before you use this script.
On UNIX platforms:
WAS_HOME/profiles/profileName/bin/wsadmin.sh -f scripts/blogSampleUninstall.pyOn Windows platforms:
WAS_HOME\profiles\profileName\bin\wsadmin.bat -f scripts\blogSampleUninstall.py
- Optional: Remove the application configuration and the data sources by using the administrative console.
- Remove the application configuration.
- Navigate to Applications > Application types > Business-level applications.
- Select the business-level application representing the blog sample application, then click Stop.
- Click the business-level application representing the blog sample application to view the configuration details.
- Select all the deployed assets, then click Delete.
- Click OK to confirm removal.
- Click Save.
- Select the business-level application representing the blog sample application, then click Delete.
- Navigate to Applications > Application types > Assets.
- Select the com.ibm.samples.websphere.osgi.blog.eba asset, then click Delete.
- Click OK to confirm removal.
- Click Save.
- Remove the data sources.
- Navigate to Resources > JDBC > Data sources.
- Select the two data sources configured for the blog application.
- Click Delete.
- Click Save.
- Remove the shared logging bundles from the internal bundle repository by using the administrative console.
- Navigate to Environment > OSGi bundle repositories > Internal bundle repository.
- Select the following bundles:
- com.ibm.samples.websphere.osgi.logging.api.jar
- com.ibm.samples.websphere.osgi.logging.impl.jar
- com.ibm.samples.websphere.osgi.blog.persistence_1.1.0
- Click Delete.
- Click Save.
- Remove the database.
On UNIX platforms, open a command prompt, then run:
cd WAS_HOME/derby rm -fr BLOGDBOn Windows platforms, delete the WAS_HOME\derby\BLOGDB directory.
Results
The following illustration shows the correctly running sample:
Parent topic: Sample OSGi applications
Related concepts:
About OSGi ApplicationsRelated tasks:
Blabber sample application
Secure OSGi ApplicationsRelated reference:
OSGi Applications: Troubleshooting tips
Sample OSGi applicationsRelated information:
About OSGi Applications
Develop and deploying an OSGi application
Deploy an OSGi application as a business-level application
Administer bundles in the internal bundle repository
Accept OSGi applications with the Blueprint Container specification
Best practices for developing and working with OSGi applications
Develop enterprise OSGi applications for WAS
Task topic Feedback
Copyright IBM Corporation 2009, 2011. All Rights Reserved.
This information center is powered by Eclipse technology.