You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

The Sling Launchpad

This tries to explain how exactly the Sling Launchpad works, what constitutes the Sling Launchpad and how you can use the Sling Launchpad to custom create you Sling launchers.

Components

The Sling Launchapd consists of Launchbad Base project and three additional projects which ultimately create a Standalone Java Application and a Web Appliction with standard parts of Sling.

Launchpad Base

The Launchpad Base projects creates the following artifacts, which are required in actual setups to get a Sling application:

  • Launcher JAR – The primary artifact of the Base project contains the actual support to launch the Apache Felix OSGi Framework and install bundles, which are packaged with the application. It also contains the Apache Felix Framework together with the OSGi R4.1 Core and Compendium libraries as well as the Equinox HttpService bridge and the Servlet API.
  • App JAR – The secondary artifact with classifier app is a minimal Standalone Java Application which may be started by simply typing
$ java -jar org.apache.sling.launchpad.base-app.jar
  • Web App Archive – The secondary artifact with classifier webapp is a minimal Web Application, which may simply be deployed into your favirourite servlet container, provided it supports at least Servlet API 2.4.
  • Source JAR – The secondary artifact with the classifier sources is simple the source of the Launchpad Base project.

To build a very basic Sling launcher, the Launchpad Base is actually all you need. But to really glue this together and get a usable system, some more work is required. Lets see how the additionaly projects Launchpad Bundles, Launchpad App, and Launchpad WebApp get to that.

Launchpad Bundles

The second project we want to look at is the Launchpad Bundles project. This is a very simple project in that it only collects together a number of OSGi bundles, which will make up the final application. The bundles are stored in a (big) Java Archive in folders whose path is formed with resources/9 where 9 is a start level which is assigned to the bundles as they are installed. The special start level 0 instructs the installer to not actually assign a specific start level to the bundles contained in that folder.

Currently the following start level assignement is used by the Launchpad Bundles project:

Start Level

Bundle Group

Bundle(s)

1

Basic bundles required for the correct operation of Sling

org.apache.sling.commons.log

5

Apache Felix Web Console

org.apache.felix.bundlerepository, org.apache.felix.webconsole, org.apache.sling.extensions.threaddump

10

OSGi Compendium Service Implementations

org.apache.felix.configadmin, org.apache.felix.eventadmin, org.apache.felix.metatype, org.apache.felix.scr

15

JCR Repository (Jackrabbit)

commons-collections, commons-io-1.4.jar
commons-lang, jackrabbit-api, jackrabbit-jcr-commons, org.apache.sling.commons.mime, org.apache.sling.commons.osgi, org.apache.sling.jcr.api, org.apache.sling.jcr.base, org.apache.sling.jcr.jackrabbit.server, org.apache.sling.jcr.webdav

0

Actual Sling Application bundles

org.apache.sling.adapter, org.apache.sling.api, org.apache.sling.bundleresource.impl, org.apache.sling.commons.json, org.apache.sling.engine, org.apache.sling.extensions.apt.parser, org.apache.sling.extensions.apt.servlet, org.apache.sling.httpauth, org.apache.sling.jcr.classloader, org.apache.sling.jcr.contentloader, org.apache.sling.jcr.ocm, org.apache.sling.jcr.resource, org.apache.sling.launchpad.content, org.apache.sling.samples.path-based.rtp, org.apache.sling.scripting.api, org.apache.sling.scripting.core, org.apache.sling.scripting.javascript, org.apache.sling.scripting.jsp, org.apache.sling.scripting.jsp.taglib, org.apache.sling.servlets.get, org.apache.sling.servlets.post, org.apache.sling.servlets.resolver

Launchpad App and Launchpad WebApp

The Launchpad App and Launchpad WebApp bundles are actually projects which just glue together artifacts from the Launchpad projects. There is nothing special about them. Here's what is done:

  • Take the appropriate secondary artifact from the Launchpad Base project: app for the Standalone Java Application or webapp for the Web Application and unpack
  • Take the Launchpad Base primary artifact and place it under the name org.apache.sling.launchpad.base.jar into the resources folder
  • Take the Launchpad Bundles artifact and unpack it
  • Finally pack all together into a single big JAR or WAR file

That's it. The resulting artifact may be directly used to launch the Standalone Java Application or may directly be deployed into any Servlet API 2.4 (or later) compliant servlet container.

  • No labels