= The Blog Sample

== Running the Blog Sample

NOTE:: These instructions are for the 0.2-incubating release of Aries.
In the 0.2-incubating release the sample was changed to use an in-memory database to avoid dependency on an explicit version of Derby.
If you would prefer to use a database on disk check the instructions for the 0.1-incubating release.
You will also need to modify datasource.xml (under blog-datasource) as indicated in the comments and then rebuild the sample.

=== Create the OSGi platform for the Blog sample

Download and unzip the source zip for the link:aries:downloads.html[latest release]  of Aries Samples and build the blog-assembly module:

 cd samples-0.2-incubating/blog/blog-assembly
 mvn install

This procedure will pull in the binaries from the latest release and its dependencies.

=== Running the Blog sample

Download the JDBC based Blog sample application (.eba file) from the link:aries:downloads.html[latest release] . Change directory to the blog-assembly target directory:

 cd samples-0.2-incubating/blog-sample/blog-assembly/target

now start Aries in an OSGi framework (we're using Eclipse Equinox in this case)

 java -jar osgi-3.5.0.v20090520.jar -console

The OSGi console should start up, the 'ss' command should show all of the Blog bundles in state 'ACTIVE'.

Now start the blog application (.eba file) you downloaded earlier, by copying it into the load directory which was created when Aries started.

Point your browser to http://localhost:8080/org.apache.aries.samples.blog.web/

If you subsequently delete the .eba from the load directory the application will be uninstalled.

=== Running the sample using a JPA persistence layer

The first blog sample application was written to use a JDBC persistence layer.
There is a second application implemented to demonstrate the JPA capability

To run the blog sample which uses the JPA persistence layer, start the OSGi framework, remove any previous copies of the blog sample from the target/load directory, then copy the Blog sample JPA .eba file into the load directory.

Finally, after typing 'refresh' at the OSGi console, point your browser at http://localhost:8080/org.apache.aries.samples.blog.web/ . You should see something that looks precisely the same as the blog sample running with the JDBC persistence layer, but this time running using the JPA persistence layer.

== Using the latest, unreleased code

If you prefer to use the very latest code from subversion, checkout and build the Aries trunk by following the link:aries:buildingaries.html[Building Aries instructions] .

== About the Blog sample

The blog sample components can be visualised like this:

image::downloads/archived/0.1-incubating/BlogSample.png[]
