incubator-sling-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Sling: Launching a JCR Repository inside Equinox (page edited)
Date Wed, 09 Jul 2008 10:05:00 GMT
<html>
<head>
    <base href="http://cwiki.apache.org/confluence" />
    <style type="text/css">
    <!--
    body, p, td, table, tr, .bodytext, .stepfield {
	font-family: Verdana, arial, sans-serif;
	font-size: 11px;
	line-height: 16px;
	color: #000000;
	font-weight: normal;
}
#PageContent {
	text-align: left;
	background-color: #fff;
	padding: 0px;
	margin: 0px;
    padding-bottom:20px;
}
/*
** when this stylesheet is used for the Tiny MCE Wysiwyg editor's edit area, we can't
** use an id=PageContent or class=wiki-content, so we must
** set the body style to that used for PageContent, and p to that used for wiki-content.
*/

body {
	margin: 0px;
	padding: 0px;
	text-align: center;
    background-color: #f0f0f0;
}

@media print {

body {
    background-color: #fff;
}

}

.monospaceInput {
    font:12px monospace
}

.wiki-content p, .commentblock p {
    margin: 16px 0px 16px 0px;
    padding: 0px;
}

.wiki-content-preview {
    padding: 5px;
    border-left: 1px solid #3c78b5;
    border-right: 1px solid #3c78b5;
}

ul, ol {
    margin-top: 2px;
    margin-bottom: 2px;
    padding-top: 0px;
    padding-bottom: 0px;
}

pre {
    padding: 0px;
    margin-top: 5px;
    margin-left: 15px;
    margin-bottom: 5px;
    margin-right: 5px;
    text-align: left;
}

.helpheading {
    font-weight: bold;
    background-color: #D0D9BD;
        border-bottom: 1px solid #3c78b5;
        padding: 4px 4px 4px 4px;
        margin: 0px;
        margin-top: 10px;
}
.helpcontent {
        padding: 4px 4px 20px 4px;
    background-color: #f5f7f1;
}

.code {
 	border: 1px dashed #3c78b5;
    font-size: 11px;
	font-family: Courier;
    margin: 10px;
	line-height: 13px;
}

.focusedComment {
    background: #ffffce;
}

.commentBox, .focusedComment {
    padding: 10px;
    margin: 5px 0 5px 0;
    border: 1px #bbb solid;
}

.codeHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.codeContent {
    text-align: left;
    background-color: #f0f0f0;
    padding: 3px;
}

.preformatted {
 	border: 1px dashed #3c78b5;
    font-size: 11px;
	font-family: Courier;
    margin: 10px;
	line-height: 13px;
}

.preformattedHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.preformattedContent {
    background-color: #f0f0f0;
    padding: 3px;
}

.panel {
 	border: 1px dashed #3c78b5;
    margin: 10px;
    margin-top: 0px;
}

.panelHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.panelContent {
    background-color: #f0f0f0;
    padding: 5px;
}

.anonymousAlert {
    background-color: #f0f0f0;
 	border: 1px dashed red;
    font-size: 11px;
    padding: 10px 5px 10px 5px;
    margin: 4px;
	line-height: 13px;
}

.lockAlert {
    background-color: #f0f0f0;
    width: 50%;
 	border: 1px dashed red;
    font-size: 11px;
    padding: 10px 5px 10px 5px;
    margin: 4px;
	line-height: 13px;
}


.code-keyword {
  color: #000091;
  background-color: inherit;
}

.code-object {
  color: #910091;
  background-color: inherit;
}

.code-quote {
  color: #009100;
  background-color: inherit;
}

.code-comment {
  color: #808080;
  background-color: inherit;
}


.code-xml .code-keyword {
  color: inherit;
  font-weight: bold;
}

.code-tag {
  color: #000091;
  background-color: inherit;
}

.breadcrumbs {
    background-color: #f0f0f0;
 	border-color: #3c78b5;
	border-width: 1px 0px 1px 0px;
	border-style: solid;
    font-size: 11px;
    padding: 3px 0px 3px 0px;
}

.navmenu {
    border: 1px solid #ccc;
}

.menuheading {
    font-weight: bold;
    background-color: #f0f0f0;
 	border-bottom: 1px solid #3c78b5;
	padding: 4px 4px 2px 4px;
}

.menuitems {
	padding: 4px 4px 20px 4px;
}

.rightpanel {
    border-left: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
}

#helpheading {
    text-align: left;
    font-weight: bold;
    background-color: #D0D9BD;
 	border-bottom: 1px solid #3c78b5;
	padding: 4px 4px 4px 4px;
	margin: 0px;
}
#helpcontent {
	padding: 4px 4px 4px 4px;
    background-color: #f5f7f1;
}
.helptab-unselected {
    font-weight: bold;
	padding: 5px;
    background-color: #f5f7f1;
}
.helptab-selected {
    font-weight: bold;
    background-color: #D0D9BD;
	padding: 5px;
}
.helptabs {
    margin: 0px;
    background-color: #f5f7f1;
	padding: 5px;
}
.infopanel-heading {
    font-weight: bold;
	padding: 4px 0px 2px 0px;
}

.pagebody {
}

.pageheader {
	padding: 5px 5px 5px 0px;
 	border-bottom: 1px solid #3c78b5;
}

.pagetitle {
	font-size: 22px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
}

.newpagetitle {
    color: #ccc !important;
}

.steptitle {
	font-size: 18px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
	margin-bottom: 7px;
}

.substeptitle {
    font-size: 12px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
    margin: 2px 4px 4px 4px;
    padding: 2px 4px 1px 4px;
}

.stepdesc {
    font-family: Verdana, arial, sans-serif;
	font-size: 11px;
	line-height: 16px;
	font-weight: normal;
    color: #666666;
    margin-top: 7px;
    margin-bottom: 7px;
}

.steplabel {
    font-weight: bold;
    margin-right: 4px;
    color: black;
    float: left;
    width: 15%;
    text-align: right;
}

.stepfield {
    background: #f0f0f0;
    padding: 5px;
}

.submitButtons{
    margin-top:5px;
    text-align:right;
}

.formtitle {
	font-size: 12px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
}

.sectionbottom {
    border-bottom: 1px solid #3c78b5;
}

.topRow {
    border-top: 2px solid #3c78b5;
}

.tabletitle {
	font-size: 14px;
	font-weight: bold;
	font-family: Arial, sans-serif;
    padding: 3px 0px 2px 0px;
    margin: 8px 4px 2px 0px;
	color: #003366;
	border-bottom: 2px solid #3c78b5;
}
.pagesubheading {
    color: #666666;
    font-size: 10px;
    padding: 0px 0px 5px 0px;
}

HR {
	color: 3c78b5;
	height: 1;
}

A:link, A:visited, A:active, A:hover {
	color: #003366;
}

h1 A:link, h1 A:visited, h1 A:active {
	text-decoration: none;
}

h1 A:hover {
    border-bottom: 1px dotted #003366;
}

.wiki-content > :first-child, .commentblock > :first-child {
    margin-top: 3px;
}

.logocell {
    padding: 10px;
}

input {
	font-family: verdana, geneva, arial, sans-serif;
	font-size: 11px;
	color: #000000;
}

textarea, textarea.editor {
	font-family: verdana, geneva, arial, sans-serif;
	font-size: 11px;
	color: #333333;
}

/* use logoSpaceLink instead.
.spacenametitle {
	font: 21px/31px Impact, Arial, Helvetica;
    font-weight: 100;
    color: #999999;
	margin: 0px;
}
.spacenametitle img {
  margin: 0 0 -4px 0;
}
.spacenametitle a {
    text-decoration: none;
    color: #999999;
}
.spacenametitle a:visited {
    text-decoration: none;
    color: #999999;
}*/

.spacenametitle-printable {
	font: 20px/25px Impact, Arial, Helvetica;
    font-weight: 100;
    color: #999999;
	margin: 0px;
}
.spacenametitle-printable a {
    text-decoration: none;
    color: #999999;
}
.spacenametitle-printable a:visited {
    text-decoration: none;
    color: #999999;
}

.blogDate {
	font-weight: bold;
	text-decoration: none;
	color: black;
}

.blogSurtitle {
    background: #f0f0f0;
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.blogHeading {
    font-size: 20px;
    line-height: normal;
    font-weight: bold;
    padding: 0px;
    margin: 0px;
}

.blogHeading a {
   text-decoration: none;
   color: black;
}

.endsection {
	align: right;
	color: #666666;
	margin-top: 10px;
}
.endsectionleftnav {
	align: right;
	color: #666666;
	margin-top: 10px;
}

h1 {
	font-size: 24px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	color: #003366;
 	border-bottom: 1px solid #3c78b5;
	padding: 2px;
	margin: 36px 0px 4px 0px;
}

h2 {
	font-size: 18px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
 	border-bottom: 1px solid #3c78b5;
	padding: 2px;
	margin: 27px 0px 4px 0px;
}

h3 {
	font-size: 14px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 21px 0px 4px 0px;
}

h4 {
	font-size: 12px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 18px 0px 4px 0px;
}

h4.search {
	font-size: 12px;
	line-height: normal;
	font-weight: normal;
	background-color: #f0f0f0;
	padding: 4px;
	margin: 18px 0px 4px 0px;
}

h5 {
	font-size: 10px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 14px 0px 4px 0px;
}

h6 {
	font-size: 8px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 14px 0px 4px 0px;
}

.smallfont {
    font-size: 10px;
}
.descfont {
    font-size: 10px;
    color: #666666;
}
.smallerfont {
    font-size: 9px;
}
.smalltext {
    color: #666666;
    font-size: 10px;
}
.smalltext a {
    color: #666666;
}
.smalltext-blue {
    color: #3c78b5;
    font-size: 10px;
}
.surtitle {
    margin-left: 1px;
    margin-bottom: 5px;
    font-size: 14px;
    color: #666666;
}

/* css hack found here:  http://www.fo3nix.pwp.blueyonder.co.uk/tutorials/css/hacks/ */
.navItemOver { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #003366; cursor: hand; voice-family: '\'}\''; voice-family:inherit; cursor: pointer;}
.navItemOver a { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItemOver a:visited { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItemOver a:hover { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItem { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; }
.navItem a { color: #ffffff; text-decoration: none; }
.navItem a:hover { color: #ffffff; text-decoration: none; }
.navItem a:visited { color: #ffffff; text-decoration: none; }

div.padded { padding: 4px; }
div.thickPadded { padding: 10px; }
h3.macrolibrariestitle {
    margin: 0px 0px 0px 0px;
}

div.centered { text-align: center; margin: 10px; }
div.centered table {margin: 0px auto; text-align: left; }

.tableview table {
    margin: 0;
}

.tableview th {
    text-align: left;
    color: #003366;
    font-size: 12px;
    padding: 5px 0px 0px 5px;
    border-bottom: 2px solid #3c78b5;
}
.tableview td {
    text-align: left;
    border-color: #ccc;
    border-width: 0px 0px 1px 0px;
    border-style: solid;
    margin: 0;
    padding: 4px 10px 4px 5px;
}

.grid {
    margin: 2px 0px 5px 0px;
    border-collapse: collapse;
}
.grid th  {
    border: 1px solid #ccc;
    padding: 2px 4px 2px 4px;
    background: #f0f0f0;
    text-align: center;
}
.grid td  {
    border: 1px solid #ccc;
    padding: 3px 4px 3px 4px;
}
.gridHover {
	background-color: #f9f9f9;
}

td.infocell {
    background-color: #f0f0f0;
}
.label {
	font-weight: bold;
	color: #003366;
}

label {
	font-weight: bold;
	color: #003366;
}

.error {
	background-color: #fcc;
}

.errorBox {
	background-color: #fcc;
    border: 1px solid #c00;
    padding: 5px;
    margin: 5px;
}

.errorMessage {
	color: #c00;
}

.success {
	background-color: #dfd;
}

.successBox {
	background-color: #dfd;
    border: 1px solid #090;
    padding: 5px;
    margin-top:5px;
    margin-bottom:5px;
}

blockquote {
	padding-left: 10px;
	padding-right: 10px;
	margin-left: 5px;
	margin-right: 0px;
	border-left: 1px solid #3c78b5;
}

table.confluenceTable
{
    margin: 5px;
    border-collapse: collapse;
}

/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
table.confluenceTable td.confluenceTd
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
}

/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
table.confluenceTable th.confluenceTh
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
    background-color: #f0f0f0;
    text-align: center;
}

td.confluenceTd
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
}

th.confluenceTh
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
    background-color: #f0f0f0;
    text-align: center;
}

DIV.small {
	font-size: 9px;
}

H1.pagename {
	margin-top: 0px;
}

IMG.inline  {}

.loginform {
    margin: 5px;
    border: 1px solid #ccc;
}

/* The text how the "This is a preview" comment should be shown. */
.previewnote { text-align: center;
                font-size: 11px;
                    color: red; }

/* How the preview content should be shown */
.previewcontent { background: #E0E0E0; }

/* How the system messages should be shown (DisplayMessage.jsp) */
.messagecontent { background: #E0E0E0; }

/* How the "This page has been modified..." -comment should be shown. */
.conflictnote { }

.createlink {
    color: maroon;
}
a.createlink {
    color: maroon;
}
.templateparameter {
    font-size: 9px;
    color: darkblue;
}

.diffadded {
    background: #ddffdd;
    padding: 1px 1px 1px 4px;
	border-left: 4px solid darkgreen;
}
.diffdeleted {
    color: #999;
    background: #ffdddd;
    padding: 1px 1px 1px 4px;
	border-left: 4px solid darkred;
}
.diffnochange {
    padding: 1px 1px 1px 4px;
	border-left: 4px solid lightgrey;
}
.differror {
    background: brown;
}
.diff {
    font-family: lucida console, courier new, fixed-width;
	font-size: 12px;
	line-height: 14px;
}
.diffaddedchars {
    background-color:#99ff99;
    font-weight:bolder;
}
.diffremovedchars {
    background-color:#ff9999;
    text-decoration: line-through;
    font-weight:bolder;
}

.greybackground {
    background: #f0f0f0
}

.greybox {
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.borderedGreyBox {
    border: 1px solid #cccccc;
    background-color: #f0f0f0;
    padding: 10px;
}

.greyboxfilled {
 	border: 1px solid #ddd;
    background: #f0f0f0;
    padding: 3px;
	margin: 1px 1px 10px 1px;
}

.navBackgroundBox {
    padding: 5px 5px 5px 5px;
    font-size: 22px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: white;
    background: #3c78b5;
    text-decoration: none;
}

.previewBoxTop {
	background-color: #f0f0f0;
    border-width: 1px 1px 0px 1px;
    border-style: solid;
    border-color: #3c78b5;
    padding: 5px;
    margin: 5px 0px 0px 0px;
    text-align: center;
}
.previewContent {
    background-color: #fff;
 	border-color: #3c78b5;
	border-width: 0px 1px 0px 1px;
	border-style: solid;
	padding: 10px;
	margin: 0px;
}
.previewBoxBottom {
	background-color: #f0f0f0;
    border-width: 0px 1px 1px 1px;
    border-style: solid;
    border-color: #3c78b5;
    padding: 5px;
    margin: 0px 0px 5px 0px;
    text-align: center;
}

.functionbox {
    background-color: #f0f0f0;
 	border: 1px solid #3c78b5;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.functionbox-greyborder {
    background-color: #f0f0f0;
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.search-highlight {
    background-color: #ffffcc;
}

/* normal (white) background */
.rowNormal {
    background-color: #ffffff;
 }

/* alternate (pale yellow) background */
.rowAlternate {
    background-color: #f7f7f7;
}

/* used in the list attachments table */
.rowAlternateNoBottomColor {
    background-color: #f7f7f7;
}

.rowAlternateNoBottomNoColor {
}

.rowAlternateNoBottomColor td {
    border-bottom: 0px;
}

.rowAlternateNoBottomNoColor td {
    border-bottom: 0px;
}

/* row highlight (grey) background */
.rowHighlight {
    background-color: #f0f0f0;

}

TD.greenbar {FONT-SIZE: 2px; BACKGROUND: #00df00; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
TD.redbar {FONT-SIZE: 2px; BACKGROUND: #df0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
TD.darkredbar {FONT-SIZE: 2px; BACKGROUND: #af0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }

TR.testpassed {FONT-SIZE: 2px; BACKGROUND: #ddffdd; PADDING: 0px; }
TR.testfailed {FONT-SIZE: 2px; BACKGROUND: #ffdddd; PADDING: 0px; }

.toolbar  {
    margin: 0px;
    border-collapse: collapse;
}

.toolbar td  {
    border: 1px solid #ccc;
    padding: 2px 2px 2px 2px;
    color: #ccc;
}

td.noformatting {
    border-width: 0px;
    border-style: none;
    text-align: center;
	padding: 0px;
}

.commentblock {
    margin: 12px 0 12px 0;
}

/*
 * Divs displaying the license information, if necessary.
 */
.license-eval, .license-none, .license-nonprofit {
    border-top: 1px solid #bbbbbb;
    text-align: center;
    font-size: 10px;
    font-family: Verdana, Arial, Helvetica, sans-serif;
}

.license-eval, .license-none {
    background-color: #ffcccc;
}

.license-eval b, .license-none b {
    color: #990000
}

.license-nonprofit {
    background-color: #ffffff;
}

/*
 * The shadow at the bottom of the page between the main content and the
 * "powered by" section.
 */
.bottomshadow {
    height: 12px;
    background-image: url("$req.contextPath/images/border/border_bottom.gif");
    background-repeat: repeat-x;
}

/*
 * Styling of the operations box
 */
.navmenu .operations li, .navmenu .operations ul {
    list-style: none;
    margin-left: 0;
    padding-left: 0;
}

.navmenu .operations ul {
    margin-bottom: 9px;
}

.navmenu .label {
    font-weight: inherit;
}

/*
 * Styling of ops as a toolbar
 */
.toolbar div {
    display: none;
}

.toolbar .label {
    display: none;
}

.toolbar .operations {
    display: block;
}

.toolbar .operations ul {
    display: inline;
    list-style: none;
    margin-left: 10px;
    padding-left: 0;
}

.toolbar .operations li {
    list-style: none;
    display: inline;
}

/* list page navigational tabs */
#foldertab {
padding: 3px 0px 3px 8px;
margin-left: 0;
border-bottom: 1px solid #3c78b5;
font: bold 11px Verdana, sans-serif;
}

#foldertab li {
list-style: none;
margin: 0;
display: inline;
}

#foldertab li a {
padding: 3px 0.5em;
margin-left: 3px;
border: 1px solid #3c78b5;
border-bottom: none;
background: #3c78b5;
text-decoration: none;
}

#foldertab li a:link { color: #ffffff; }
#foldertab li a:visited { color: #ffffff; }

#foldertab li a:hover {
color: #ffffff;
background: #003366;
border-color: #003366;
}

#foldertab li a.current {
background: white;
border-bottom: 1px solid white;
color: black;
}

#foldertab li a.current:link { color: black; }
#foldertab li a.current:visited { color: black; }
#foldertab li a.current:hover {
background: white;
border-bottom: 1px solid white;
color: black;
}

/* alphabet list */
ul#squaretab {
margin-left: 0;
padding-left: 0;
white-space: nowrap;
font: bold 8px Verdana, sans-serif;
}

#squaretab li {
display: inline;
list-style-type: none;
}

#squaretab a {
padding: 2px 6px;
border: 1px solid #3c78b5;
}

#squaretab a:link, #squaretab a:visited {
color: #fff;
background-color: #3c78b5;
text-decoration: none;
}

#squaretab a:hover {
color: #ffffff;
background-color: #003366;
border-color: #003366;
text-decoration: none;
}

#squaretab li a#current {
background: white;
color: black;
}

.blogcalendar * {
    font-family:verdana, arial, sans-serif;
    font-size:x-small;
    font-weight:normal;
    line-height:140%;
    padding:2px;
}


table.blogcalendar {
    border: 1px solid #3c78b5;
}

.blogcalendar th.calendarhead, a.calendarhead {
    font-size:x-small;
    font-weight:bold;
    padding:2px;
    text-transform:uppercase;
    background-color: #3c78b5;
    color: #ffffff;
    letter-spacing: .3em;
    text-transform: uppercase;
}

.calendarhead:visited {color: white;}
.calendarhead:active {color: white;}
.calendarhead:hover {color: white;}

.blogcalendar th {
    font-size:x-small;
    font-weight:bold;
    padding:2px;
    background-color:#f0f0f0;
}

.blogcalendar td {
    font-size:x-small;
    font-weight:normal;
}

.searchGroup { padding: 0 0 10px 0; background: #f0f0f0; }
.searchGroupHeading { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; padding: 2px 4px 1px 4px; }
.searchItem { padding: 1px 4px 1px 4px; }
.searchItemSelected { padding: 1px 4px 1px 4px; font-weight: bold; background: #ddd; }

/* permissions page styles */
.permissionHeading {
    border-bottom: #bbb; border-width: 0 0 1px 0; border-style: solid; font-size: 16px; text-align: left;
}
.permissionTab {
    border-width: 0 0 0 1px; border-style: solid; background: #3c78b5; color: #ffffff; font-size: 10px;
}
.permissionSuperTab {
    border-width: 0 0 0 1px; border-style: solid; background: #003366; color: #ffffff;
}
.permissionCell {
    border-left: #bbb; border-width: 0 0 0 1px; border-style: solid;
}

/* warning panel */
.warningPanel { background: #FFFFCE; border:#F0C000 1px solid; padding: 8px; margin: 10px; }
/* alert panel */
.alertPanel { background: #FFCCCC; border:#C00 1px solid; padding: 8px; margin: 10px; }
/* info panel */
.infoPanel { background: #D8E4F1; border:#3c78b5 1px solid; padding: 8px; margin: 10px; }

/* side menu highlighting (e.g. space content screen) */
.optionPadded { padding: 2px; }
.optionSelected { background-color: #ffffcc; padding: 2px; border: 1px solid #ddd; margin: -1px; }
.optionSelected a { font-weight: bold; text-decoration: none; color: black; }

/* information macros */
.noteMacro { border-style: solid; border-width: 1px; border-color: #F0C000; background-color: #FFFFCE; text-align:left; margin-top: 5px; margin-bottom: 5px}
.warningMacro { border-style: solid; border-width: 1px; border-color: #c00; background-color: #fcc; text-align:left; margin-top: 5px; margin-bottom: 5px}
.infoMacro { border-style: solid; border-width: 1px; border-color: #3c78b5; background-color: #D8E4F1; text-align:left; margin-top: 5px; margin-bottom: 5px}
.tipMacro { border-style: solid; border-width: 1px; border-color: #090; background-color: #dfd; text-align:left; margin-top: 5px; margin-bottom: 5px}
.informationMacroPadding { padding: 5px 0 0 5px; }

table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td, table.sectionMacro td {
    border: none;
}

table.sectionMacroWithBorder td.columnMacro { border-style: dashed; border-width: 1px; border-color: #cccccc;}

.pagecontent
{
    padding: 10px;
    text-align: left;
}

/* styles for links in the top bar */
.topBarDiv a:link {color: #ffffff;}
.topBarDiv a:visited {color: #ffffff;}
.topBarDiv a:active {color: #ffffff;}
.topBarDiv a:hover {color: #ffffff;}
.topBarDiv {color: #ffffff;}

.topBar {
    background-color: #003366;
}


/* styles for extended operations */
.greyLinks a:link {color: #666666; text-decoration:underline;}
.greyLinks a:visited {color: #666666; text-decoration:underline;}
.greyLinks a:active {color: #666666; text-decoration:underline;}
.greyLinks a:hover {color: #666666; text-decoration:underline;}
.greyLinks {color: #666666; display:block; padding: 10px}

.logoSpaceLink {color: #999999; text-decoration: none}
.logoSpaceLink a:link {color: #999999; text-decoration: none}
.logoSpaceLink a:visited {color: #999999; text-decoration: none}
.logoSpaceLink a:active {color: #999999; text-decoration: none}
.logoSpaceLink a:hover {color: #003366; text-decoration: none}

/* basic panel (basicpanel.vmd) style */
.basicPanelContainer {border: 1px solid #3c78b5; margin-top: 2px; margin-bottom: 8px; width: 100%}
.basicPanelTitle {padding: 5px; margin: 0px; background-color: #f0f0f0; color: black; font-weight: bold;}
.basicPanelBody {padding: 5px; margin: 0px}

.separatorLinks a:link {color: white}
.separatorLinks a:visited {color: white}
.separatorLinks a:active {color: white}

.greynavbar {background-color: #f0f0f0; border-top: 1px solid #3c78b5; margin-top: 2px}

div.headerField {
    float: left;
    width: auto;
    height: 100%;
}

.headerFloat {
    margin-left: auto;
    width: 50%;
}

.headerFloatLeft {
    float: left;
    margin-right: 20px;
    margin-bottom: 10px;
}

#headerRow {
    padding: 10px;
}

div.license-personal {
   background-color: #003366;
   color: #ffffff;
}

div.license-personal a {
   color: #ffffff;
}

.greyFormBox {
    border: 1px solid #cccccc;
    padding: 5px;
}

/* IE automatically adds a margin before and after form tags. Use this style to remove that */
.marginlessForm {
    margin: 0px;
}

.openPageHighlight {
    background-color: #ffffcc;
    padding: 2px;
    border: 1px solid #ddd;
}

.editPageInsertLinks, .editPageInsertLinks a
{
    color: #666666;
    font-weight: bold;
    font-size: 10px;
}

/* Style for label heatmap. */
.top10 a {
    font-weight: bold;
    font-size: 2em;
    color: #003366;
}
.top25 a {
    font-weight: bold;
    font-size: 1.6em;
    color: #003366;
}
.top50 a {
    font-size: 1.4em;
    color: #003366;
}
.top100 a {
    font-size: 1.2em;
    color: #003366;
}

.heatmap {
    list-style:none;
    width: 95%;
    margin: 0px auto;
}

.heatmap a {
    text-decoration:none;
}

.heatmap a:hover {
    text-decoration:underline;
}

.heatmap li {
    display: inline;
}

.minitab {
padding: 3px 0px 3px 8px;
margin-left: 0;
margin-top: 1px;
margin-bottom: 0px;
border-bottom: 1px solid #3c78b5;
font: bold 9px Verdana, sans-serif;
text-decoration: none;
float:none;
}
.selectedminitab {
padding: 3px 0.5em;
margin-left: 3px;
margin-top: 1px;
border: 1px solid #3c78b5;
background: white;
border-bottom: 1px solid white;
color: #000000;
text-decoration: none;
}
.unselectedminitab {
padding: 3px 0.5em;
margin-left: 3px;
margin-top: 1px;
border: 1px solid #3c78b5;
border-bottom: none;
background: #3c78b5;
color: #ffffff;
text-decoration: none;
}

a.unselectedminitab:hover {
color: #ffffff;
background: #003366;
border-color: #003366;
}

a.unselectedminitab:link { color: white; }
a.unselectedminitab:visited { color: white; }

a.selectedminitab:link { color: black; }
a.selectedminitab:visited { color: black; }

.linkerror { background-color: #fcc;}

a.labelOperationLink:link {text-decoration: underline}
a.labelOperationLink:active {text-decoration: underline}
a.labelOperationLink:visited {text-decoration: underline}
a.labelOperationLink:hover {text-decoration: underline}

a.newLabel:link {background-color: #ddffdd}
a.newLabel:active {background-color: #ddffdd}
a.newLabel:visited {background-color: #ddffdd}
a.newLabel:hover {background-color: #ddffdd}

ul.square {list-style-type: square}

.inline-control-link {
    background: #ffc;
    font-size: 9px;
    color: #666;
    padding: 2px;
    text-transform: uppercase;
    text-decoration: none;
}


.inline-control-link a:link {text-decoration: none}
.inline-control-link a:active {text-decoration: none}
.inline-control-link a:visited {text-decoration: none}
.inline-control-link a:hover {text-decoration: none}

.inline-control-link {
    background: #ffc;
    font-size: 9px;
    color: #666;
    padding: 2px;
    text-transform: uppercase;
    text-decoration: none;
    cursor: pointer;
}

div.auto_complete {
    width: 350px;
    background: #fff;
}
div.auto_complete ul {
    border: 1px solid #888;
    margin: 0;
    padding: 0;
    width: 100%;
    list-style-type: none;
}
div.auto_complete ul li {
    margin: 0;
    padding: 3px;
}
div.auto_complete ul li.selected {
    background-color: #ffb;
}
div.auto_complete ul strong.highlight {
    color: #800;
    margin: 0;
    padding: 0;
}

/******* Edit Page Styles *******/
.toogleFormDiv{
    border:1px solid #A7A6AA;
    background-color:white;
    padding:5px;
    margin-top: 5px;
}

.toogleInfoDiv{
    border:1px solid #A7A6AA;
    background-color:white;
    display:none;
    padding:5px;
    margin-top: 10px;
}

.inputSection{
    margin-bottom:20px;
}

#editBox{
   border:1px solid lightgray;
   background-color:#F0F0F0;
}

/******* Left Navigation Theme Styles ********/
.leftnav li a {
    text-decoration:none;
    color:white;
    margin:0px;
    display:block;
    padding:2px;
    padding-left:5px;
    background-color: #3c78b5;
    border-top:1px solid #3c78b5;
}

.leftnav li a:active {color:white;}
.leftnav li a:visited {color:white;}
.leftnav li a:hover {background-color: #003366; color:white;}

/* Added by Shaun during i18n */
.replaced
{
    background-color: #33CC66;
}

.topPadding
{
    margin-top: 20px;
}

/* new form style */
.form-block {
    padding: 6px;
}
.form-error-block {
    padding: 6px;
    background: #fcc;
    border-top: #f0f0f0 1px solid;
    border-bottom: #f0f0f0 1px solid;
    margin-bottom: 6px;
    padding: 0 12px 0 12px;
}
.form-element-large {
    font-size: 16px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
}

.form-element-small {
    font-size: 12px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
}

.form-header {
    background: lightyellow;
    border-top: #f0f0f0 1px solid;
    border-bottom: #f0f0f0 1px solid;
    margin-bottom: 6px;
    padding: 0 12px 0 12px;
}
.form-header p, .form-block p, .form-error-block p {
    line-height: normal;
    margin: 12px 0 12px 0;
}
.form-example {
    color: #888;
    font-size: 11px;
}
.form-divider {
    border-bottom: #ccc 1px solid;
    margin-bottom: 6px;
}
.form-buttons {
    margin-top: 6px;
    border-top: #ccc 1px solid;
    border-bottom: #ccc 1px solid;
    background: #f0f0f0;
    padding: 10px;
    text-align: center;
}
.form-buttons input {
    width: 100px;
}
.form-block .error {
    padding: 6px;
    margin-bottom: 6px;
}
    -->
    </style>
</head>
<body>

<div id="PageContent">
<table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%"><tr>
<td valign="top" class="pagebody">

    <div class="pageheader">
        <span class="pagetitle">
            Page Edited :
            <a href="http://cwiki.apache.org/confluence/display/SLING">SLING</a> :
            <a href="http://cwiki.apache.org/confluence/display/SLING/Launching+a+JCR+Repository+inside+Equinox">Launching a JCR Repository inside Equinox</a>
        </span>
    </div>

     <p>
        <a href="http://cwiki.apache.org/confluence/display/SLING/Launching+a+JCR+Repository+inside+Equinox">Launching a JCR Repository inside Equinox</a>
        has been edited by             <a href="http://cwiki.apache.org/confluence/display/~alexander.klimetschek@googlemail.com">Alexander Klimetschek</a>
            <span class="smallfont">(May 01, 2008)</span>.
     </p>
    
     <p>
                 <a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=84671&originalVersion=6&revisedVersion=7">(View changes)</a>
     </p>

    <span class="label">Content:</span><br/>
    <div class="greybox wiki-content"><h1><a name="LaunchingaJCRRepositoryinsideEquinox-LaunchingaJCRRepositoryinsideEquinox"></a>Launching a JCR Repository inside Equinox</h1>

<p>Today I was contacted with a request to setup the <tt>jcr/jackrabbit-server</tt> bundle in an OSGi framework such that a JCR Repository is being started and can be accessed from within the OSGi framework and over RMI from outside of the framework. It happens to be that the framework of choice has been Equinox. </p>

<p>So, to better support I decided to setup my own Equinox framework and install required bundles.</p>


<h2><a name="LaunchingaJCRRepositoryinsideEquinox-GettingtheEquinoxFramework"></a>Getting the Equinox Framework</h2>

<p>First of all, you need the Equinox OSGi framework. You can grab this from the Equinox download page at <span class="nobr"><a href="http://download.eclipse.org/eclipse/equinox/" title="Visit page outside Confluence" rel="nofollow">http://download.eclipse.org/eclipse/equinox/<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>. I decided to use the latest release stuff, which at the time of this writing is 3.3.2. So I downloaded the framework jar file <span class="nobr"><a href="http://download.eclipse.org/eclipse/equinox/drops/R-3.3.2-200802211800/download.php?dropFile=org.eclipse.osgi_3.3.2.R33x_v20080105.jar" title="Visit page outside Confluence" rel="nofollow">org.eclipse.osgi_3.3.2.R33x_v20080105.jar<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></p>


<p>One this has been downloaded, it can easily be started from the command line. As I required the console prompt, I added the <tt>-console</tt> command line option:</p>

<div class="code"><div class="codeContent">
<pre class="code-java">$ java -jar org.eclipse.osgi_3.3.2.R33x_v20080105.jar -console

osgi&gt; ss

Framework is launched.

id      State       Bundle
0       ACTIVE      org.eclipse.osgi_3.3.2.R33x_v20080105

osgi&gt;</pre>
</div></div>


<p>The console gives you the <tt>osgi&gt;</tt> prompt to which I entered a first <tt>ss</tt> command to get a short status of installed bundles. This lists just the system bundle with ID 0. This console is used by us to interactively install and start additional bundles, until we get a running Jackrabbit Repository.</p>


<p>To get a list of available commands just enter the <tt>help</tt> command. Some commands which we will use later on are :</p>

<ul>
	<li><b>ss</b> &#8211; display a short status list of installed bundles</li>
	<li><b>status</b> &#8211; display a long status list of installed bundles</li>
	<li><b>bundle &lt;id&gt;</b> &#8211; display detailed information on the bundle with the given <tt>&lt;id&gt;</tt>. This list includes registered and used services, import and export packages and some more information.</li>
	<li><b>install &lt;url&gt;</b> &#8211; installs a bundle from the given <tt>&lt;url&gt;</tt>. Note that this must be a real URL, that is to install a file from the local filesystem, the <tt>file:</tt> protocoll must be specified.</li>
	<li><b>start &lt;id&gt;</b> &#8211; starts the bundle with the given <tt>&lt;id&gt;</tt>.</li>
	<li><b>stop &lt;id&gt;</b> &#8211; stops the bundle with the given <tt>&lt;id&gt;</tt>.</li>
	<li><b>uninstall &lt;id&gt;</b> &#8211; uninstalls the bundle with the given <tt>&lt;id&gt;</tt>.</li>
</ul>




<h2><a name="LaunchingaJCRRepositoryinsideEquinox-OSGiCompendium"></a>OSGi Compendium</h2>

<p>First we need to install OSGi Compendium Services bundles:</p>

<ol>
	<li>The Compendium Services API bundle</li>
	<li>A LogService implementation</li>
	<li>A Configuration Admin Service implementation</li>
	<li>A Declarative Services implementation</li>
</ol>



<h3><a name="LaunchingaJCRRepositoryinsideEquinox-TheCompendiumServicesAPIbundle"></a>The Compendium Services API bundle</h3>

<p>We chose to mainly use Equinox implementations, so we get the <span class="nobr"><a href="http://download.eclipse.org/eclipse/equinox/drops/R-3.3.2-200802211800/download.php?dropFile=org.eclipse.osgi.services_3.1.200.v20070605.jar" title="Visit page outside Confluence" rel="nofollow">org.eclipse.osgi.services_3.1.200.v20070605.jar<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> bundle to install the OSGi Compendium Services API:</p>

<div class="code"><div class="codeContent">
<pre class="code-java">osgi&gt; install &lt;url&gt;
Bundle id is 1

osgi&gt; start 1

osgi&gt; ss

Framework is launched.

id      State       Bundle
0       ACTIVE      org.eclipse.osgi_3.3.2.R33x_v20080105
1       ACTIVE      org.eclipse.osgi.services_3.1.200.v20070605

osgi&gt;</pre>
</div></div>


<p>Note that bundles are not automatically started after the installation. Therefore we have to manually start the bundles after the installation. This manual start is only required after the installation. On framework restarts all bundles, which were started when the framework was last shutdown, are automatically restarted.</p>


<h3><a name="LaunchingaJCRRepositoryinsideEquinox-ALogServiceimplementation"></a>A LogService implementation</h3>

<p>We continue with the LogService. Here we could of course also choose to use the Equinox implementation. But as I know, that Jackrabbit uses <span class="nobr"><a href="http://www.slf4j.org/" title="Visit page outside Confluence" rel="nofollow">SLF4J<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> for logging and some other components use log4j and Jakarta Commons Logging, I strongly suggest to use the LogService implementation from the Sling project. This bundle unifies all logging requests from the OSGi LogService and the SLF4J, log4j and Jakarta Commons Logging API into a single log channel. This makes problem traking much easier.</p>

<p>The Sling LogService implementation is available from the Apache Snapshot repository and may be directly installed into the OSGi framework:</p>

<div class="code"><div class="codeContent">
<pre class="code-java">osgi&gt; install &lt;url&gt;
Bundle id is 2

osgi&gt; start 2 
30.04.2008 21:13:24.642 *INFO* [OSGi Console] org.apache.sling.osgi.log.LogServiceFactory LogManager: Logging set up from context
30.04.2008 21:13:24.645 *INFO* [OSGi Console] org.apache.sling.osgi.log Service [org.apache.sling.osgi.log.LogServiceFactory,22] ServiceEvent REGISTERED
30.04.2008 21:13:24.646 *INFO* [OSGi Console] org.apache.sling.osgi.log Service [org.apache.sling.osgi.log.LogReaderServiceFactory,23] ServiceEvent REGISTERED

osgi&gt; 30.04.2008 21:13:24.646 *INFO* [Framework Event Dispatcher] org.apache.sling.osgi.log BundleEvent STARTED


osgi&gt; ss

Framework is launched.

id      State       Bundle
0       ACTIVE      org.eclipse.osgi_3.3.2.R33x_v20080105
1       ACTIVE      org.eclipse.osgi.services_3.1.200.v20070605
2       ACTIVE      org.apache.sling.osgi.log_2.0.0.incubator-SNAPSHOT

osgi&gt;</pre>
</div></div>

<p>We installed the LogService implementation early in the process to be able to get some logging in the future processing. You may have noticed, that LogService already kicked in writing logs to stdout. In the further steps you will notice, that each bundle installation and start will be accompanied with log messages.</p>


<h3><a name="LaunchingaJCRRepositoryinsideEquinox-AConfigurationAdminServiceimplementation"></a>A Configuration Admin Service implementation</h3>

<p>Core configuration to launche the Jackrabbit repository is maintained using the OSGi Configuration Admin Service. For the moment this configuration just encompasses the filesystem location of the repository and the path to the repository configuration file. In the future this may be extended if configuration options for Jackrabbit may change.</p>

<p>For the sake of using Equinox bundles, lets take the Equinox implementation of the Configuration Admin Service available from <span class="nobr"><a href="http://download.eclipse.org/eclipse/equinox/drops/R-3.3.2-200802211800/download.php?dropFile=org.eclipse.equinox.cm_3.2.0.v20070116.jar" title="Visit page outside Confluence" rel="nofollow">org.eclipse.equinox.cm_3.2.0.v20070116.jar<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>.</p>

<div class="code"><div class="codeContent">
<pre class="code-java">osgi&gt; install &lt;url&gt;
Bundle id is 4

osgi&gt; 30.04.2008 21:22:16.042 *INFO* [Framework Event Dispatcher] org.eclipse.equinox.cm BundleEvent INSTALLED
start 4
30.04.2008 21:22:19.921 *INFO* [Framework Event Dispatcher] org.eclipse.equinox.cm BundleEvent RESOLVED
30.04.2008 21:22:19.949 *INFO* [OSGi Console] org.eclipse.equinox.cm Service [24] ServiceEvent REGISTERED

30.04.2008 21:22:19.973 *INFO* [Framework Event Dispatcher] org.eclipse.equinox.cm BundleEvent STARTED
osgi&gt; ss

Framework is launched.

id      State       Bundle
0       ACTIVE      org.eclipse.osgi_3.3.2.R33x_v20080105
1       ACTIVE      org.eclipse.osgi.services_3.1.200.v20070605
2       ACTIVE      org.apache.sling.osgi.log_2.0.0.incubator-SNAPSHOT
4       ACTIVE      org.eclipse.equinox.cm_3.2.0.v20070116

osgi&gt;</pre>
</div></div>


<h3><a name="LaunchingaJCRRepositoryinsideEquinox-ADeclarativeServicesimplementation"></a>A Declarative Services implementation</h3>

<p>The last OSGi Compendium Service implementation we need is Declarative Services. I of course also tried the Equinox implementation of this specification. But unfortunately the Sling Jackrabbit Repository bundle cannot be used with this implementation. This is of course not a good thing and we will try to find out, what is wrong here. This issue is tracked as <span class="nobr"><a href="https://issues.apache.org/jira/browse/SLING-408" title="Visit page outside Confluence" rel="nofollow">SLING-408<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>. So we take the Apache Felix implementation from <span class="nobr"><a href="http://felix.apache.org/site/downloads.cgi" title="Visit page outside Confluence" rel="nofollow">org.apache.felix.scr-1.0.0.jar<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>.</p>

<div class="code"><div class="codeContent">
<pre class="code-java">osgi&gt; install &lt;url&gt;
Bundle id is 5
30.04.2008 22:12:34.988 *INFO* [Framework Event Dispatcher] org.apache.felix.scr BundleEvent INSTALLED

osgi&gt; start 5
30.04.2008 22:12:38.032 *INFO* [Framework Event Dispatcher] org.apache.felix.scr BundleEvent RESOLVED
30.04.2008 22:12:38.033 *INFO* [OSGi Console] org.apache.felix.scr Service [Declarative Services Management Agent,25] ServiceEvent REGISTERED

osgi&gt; 30.04.2008 22:12:38.039 *INFO* [Framework Event Dispatcher] org.apache.felix.scr BundleEvent STARTED
ss

Framework is launched.

id      State       Bundle
0       ACTIVE      org.eclipse.osgi_3.3.2.R33x_v20080105
1       ACTIVE      org.eclipse.osgi.services_3.1.200.v20070605
2       ACTIVE      org.apache.sling.osgi.log_2.0.0.incubator-SNAPSHOT
4       ACTIVE      org.eclipse.equinox.cm_3.2.0.v20070116
5       ACTIVE      org.apache.felix.scr_1.0.0

osgi&gt;</pre>
</div></div>


<h2><a name="LaunchingaJCRRepositoryinsideEquinox-JackrabbitBundles"></a>Jackrabbit Bundles</h2>

<p>The next (and final) big step is to install and start the bundles required to embed and start the Jackrabbit repository. In short, we are going to install the following bundles:</p>

<ol>
	<li><b>Jackrabbit Commons and Jakarta Commons Collections Bundles</b> &#8211; Library bundles by the rest of the Jackrabbit bundles.</li>
	<li><b>Sling JCR API and Base Bundles</b> &#8211; These bundles export the JCR API and the base implementation for session pooling on which the embedded Jackrabbit Repository of Sling is based.</li>
	<li><b>Jackrabbit Server and Text Extractors Bundle</b> &#8211; The actual embedded Jackrabbit repository bundle and a library used for extended indexing and query support.</li>
</ol>



<h3><a name="LaunchingaJCRRepositoryinsideEquinox-CommonsCollectionsandJackrabbitCommons"></a>Commons Collections and Jackrabbit Commons</h3>

<p>We start with the helper libraries Jakarta Commons Collections and Jackrabbit Commons. Fortunately the latest releases of both libraries already come built ready as OSGi bundles. So we just grab the respective libraries from the Maven 2 repository and install them as is:</p>

<div class="code"><div class="codeContent">
<pre class="code-java">osgi&gt; install &lt;url&gt;
Bundle id is 6

osgi&gt; 01.05.2008 20:31:33.553 *INFO* [Framework Event Dispatcher] org.apache.commons.collections BundleEvent INSTALLED
start 6

osgi&gt; 01.05.2008 20:31:38.374 *INFO* [Framework Event Dispatcher] org.apache.commons.collections BundleEvent RESOLVED
01.05.2008 20:31:38.374 *INFO* [Framework Event Dispatcher] org.apache.commons.collections BundleEvent STARTED
install &lt;url&gt;
Bundle id is 7
01.05.2008 20:32:58.959 *INFO* [Framework Event Dispatcher] org.apache.jackrabbit.jackrabbit-jcr-commons BundleEvent INSTALLED

osgi&gt; start 7
org.osgi.framework.BundleException: The bundle could not be resolved. Reason: Missing Constraint: Import-Package: javax.jcr; version=<span class="code-quote">"0.0.0"</span>
        at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:305)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:260)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:252)
        at org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._start(FrameworkCommandProvider.java:260)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter.execute(FrameworkCommandInterpreter.java:150)
        at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(FrameworkConsole.java:300)
        at org.eclipse.osgi.framework.internal.core.FrameworkConsole.console(FrameworkConsole.java:285)
        at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:221)
        at java.lang.<span class="code-object">Thread</span>.run(<span class="code-object">Thread</span>.java:619)

osgi&gt; ss

Framework is launched.

id      State       Bundle
0       ACTIVE      org.eclipse.osgi_3.3.2.R33x_v20080105
1       ACTIVE      org.eclipse.osgi.services_3.1.200.v20070605
2       ACTIVE      org.apache.sling.osgi.log_2.0.0.incubator-SNAPSHOT
4       ACTIVE      org.eclipse.equinox.cm_3.2.0.v20070116
5       ACTIVE      org.apache.felix.scr_1.0.0
6       ACTIVE      org.apache.commons.collections_3.2.1
7       INSTALLED   org.apache.jackrabbit.jackrabbit-jcr-commons_1.4.2

osgi&gt;</pre>
</div></div>

<p>Oops ! Bundle 7, the Jackrabbit Commons library bundle, fails to start. The reason for this is, that this library depends on the Content Repository for Java (JCR) API classes, which have not be installed yet and which are not available from the environment either.</p>

<p>This is not actually a problem because the Sling JCR API bundle exports just these packages. So lets just continue with the next steps.</p>


<h3><a name="LaunchingaJCRRepositoryinsideEquinox-SlingJCRAPIandBaseBundles"></a>Sling JCR API and Base Bundles</h3>

<p>The Sling JCR API and Base Bundles can be installed directly from the Apache Snapshot Repository, which we just do now:</p>

<div class="code"><div class="codeContent">
<pre class="code-java">osgi&gt; install &lt;url&gt;
Bundle id is 8

osgi&gt; 01.05.2008 20:37:21.866 *INFO* [Framework Event Dispatcher] org.apache.sling.jcr.api BundleEvent INSTALLED
start 8
01.05.2008 20:37:28.099 *INFO* [Framework Event Dispatcher] org.apache.sling.jcr.api BundleEvent RESOLVED
01.05.2008 20:37:28.100 *INFO* [Framework Event Dispatcher] org.apache.jackrabbit.jackrabbit-jcr-commons BundleEvent RESOLVED

osgi&gt; 01.05.2008 20:37:28.100 *INFO* [Framework Event Dispatcher] org.apache.sling.jcr.api BundleEvent STARTED
install &lt;url&gt;
Bundle id is 9
01.05.2008 20:38:45.563 *INFO* [Framework Event Dispatcher] org.apache.sling.jcr.base BundleEvent INSTALLED

osgi&gt; start 9
01.05.2008 20:38:51.069 *INFO* [Framework Event Dispatcher] org.apache.sling.jcr.base BundleEvent RESOLVED

01.05.2008 20:38:51.069 *INFO* [Framework Event Dispatcher] org.apache.sling.jcr.base BundleEvent STARTED
osgi&gt; ss

Framework is launched.

id      State       Bundle
0       ACTIVE      org.eclipse.osgi_3.3.2.R33x_v20080105
1       ACTIVE      org.eclipse.osgi.services_3.1.200.v20070605
2       ACTIVE      org.apache.sling.osgi.log_2.0.0.incubator-SNAPSHOT
4       ACTIVE      org.eclipse.equinox.cm_3.2.0.v20070116
5       ACTIVE      org.apache.felix.scr_1.0.0
6       ACTIVE      org.apache.commons.collections_3.2.1
7       RESOLVED    org.apache.jackrabbit.jackrabbit-jcr-commons_1.4.2
8       ACTIVE      org.apache.sling.jcr.api_2.0.0.incubator-SNAPSHOT
9       ACTIVE      org.apache.sling.jcr.base_2.0.0.incubator-SNAPSHOT

osgi&gt;</pre>
</div></div>

<p>Now that we have installed the API and base bundles, we see that bundle 7 is now in the <em>RESOLVED</em> state. That is, the imports could now be completely resolved. In fact, the bundle has been resolved because the JCR Base Bundle (Bundle 9) requires the classes exported by bundle 7. So we can now start bundle 7:</p>

<div class="code"><div class="codeContent">
<pre class="code-java">osgi&gt; start 7

osgi&gt; 01.05.2008 20:39:03.845 *INFO* [Framework Event Dispatcher] org.apache.jackrabbit.jackrabbit-jcr-commons BundleEvent STARTED
ss

Framework is launched.

id      State       Bundle
0       ACTIVE      org.eclipse.osgi_3.3.2.R33x_v20080105
1       ACTIVE      org.eclipse.osgi.services_3.1.200.v20070605
2       ACTIVE      org.apache.sling.osgi.log_2.0.0.incubator-SNAPSHOT
4       ACTIVE      org.eclipse.equinox.cm_3.2.0.v20070116
5       ACTIVE      org.apache.felix.scr_1.0.0
6       ACTIVE      org.apache.commons.collections_3.2.1
7       ACTIVE      org.apache.jackrabbit.jackrabbit-jcr-commons_1.4.2
8       ACTIVE      org.apache.sling.jcr.api_2.0.0.incubator-SNAPSHOT
9       ACTIVE      org.apache.sling.jcr.base_2.0.0.incubator-SNAPSHOT

osgi&gt;</pre>
</div></div>


<h3><a name="LaunchingaJCRRepositoryinsideEquinox-JackrabbitRepositoryBundles"></a>Jackrabbit Repository Bundles</h3>

<p>Finally we install and start the Jackrabbit Repository and Text Extractor Bundles:</p>

<div class="code"><div class="codeContent">
<pre class="code-java">osgi&gt; install &lt;url&gt;
01.05.2008 20:45:57.183 *INFO* [Framework Event Dispatcher] org.apache.sling.jcr.jackrabbit-text-extractors BundleEvent INSTALLED
Bundle id is 10

osgi&gt; install &lt;url&gt;
Bundle id is 11

osgi&gt; 01.05.2008 21:19:05.079 *INFO* [Framework Event Dispatcher] org.apache.sling.jcr.jackrabbit.server BundleEvent INSTALLED
start 10

osgi&gt; 01.05.2008 21:19:27.219 *INFO* [Framework Event Dispatcher] org.apache.sling.jcr.jackrabbit-text-extractors BundleEvent STARTED
start 11
01.05.2008 21:19:30.940 *INFO* [Framework Event Dispatcher] org.apache.sling.jcr.jackrabbit.server BundleEvent RESOLVED
01.05.2008 21:19:31.058 *INFO* [OSGi Console] org.apache.sling.jcr.jackrabbit.server.Activator Creating <span class="code-keyword">default</span> config <span class="code-keyword">for</span> Jackrabbit in jackrabbit
01.05.2008 21:19:31.075 *INFO* [OSGi Console] org.apache.sling.jcr.jackrabbit.server.Activator verifyConfiguration: Created configuration org.apache.sling.jcr.jackrabbit.server.SlingServerRepository-1209669571062-0 <span class="code-keyword">for</span> org.apache.sling.jcr.jackrabbit.server.SlingServerRepository
01.05.2008 21:19:31.096 *INFO* [OSGi Console] org.apache.sling.jcr.jackrabbit.server Service [org.apache.sling.jcr.jackrabbit.server.JndiRegistrationSupport,26] ServiceEvent REGISTERED
01.05.2008 21:19:31.153 *INFO* [SCR Component Actor] org.apache.sling.jcr.jackrabbit.server Using JNDI context {java.naming.provider.url=http:<span class="code-comment">//incubator.apache.org/sling, java.naming.factory.initial=org.apache.jackrabbit.core.jndi.provider.DummyInitialContextFactory} to register repositories
</span>01.05.2008 21:19:31.153 *INFO* [OSGi Console] org.apache.sling.jcr.jackrabbit.server Service [org.apache.sling.jcr.jackrabbit.server.RmiRegistrationSupport,27] ServiceEvent REGISTERED
01.05.2008 21:19:31.155 *INFO* [SCR Component Actor] org.apache.sling.jcr.jackrabbit.server Using RMI Registry port 1099
01.05.2008 21:19:31.156 *INFO* [SCR Component Actor] org.apache.sling.jcr.jackrabbit.server Service [org.apache.sling.jcr.jackrabbit.server.SlingServerRepository,28] ServiceEvent REGISTERED

osgi&gt; 01.05.2008 21:19:31.169 *INFO* [Framework Event Dispatcher] org.apache.sling.jcr.jackrabbit.server BundleEvent STARTED
01.05.2008 21:19:31.283 *INFO* [SCR Component Actor] org.apache.jackrabbit.core.RepositoryImpl Starting repository...
01.05.2008 21:19:31.294 *INFO* [SCR Component Actor] org.apache.jackrabbit.core.fs.local.LocalFileSystem LocalFileSystem initialized at path jackrabbit/repository
01.05.2008 21:19:31.433 *INFO* [SCR Component Actor] org.apache.jackrabbit.core.nodetype.NodeTypeRegistry no custom node type definitions found
01.05.2008 21:19:31.453 *INFO* [SCR Component Actor] org.apache.jackrabbit.core.fs.local.LocalFileSystem LocalFileSystem initialized at path jackrabbit/version
01.05.2008 21:19:32.555 *INFO* [SCR Component Actor] org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager Database: Apache Derby / 10.2.1.6 - (452058)
01.05.2008 21:19:32.555 *INFO* [SCR Component Actor] org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager Driver: Apache Derby Embedded JDBC Driver / 10.2.1.6 - (452058)
01.05.2008 21:19:33.060 *INFO* [SCR Component Actor] org.apache.jackrabbit.core.fs.local.LocalFileSystem LocalFileSystem initialized at path jackrabbit/version/blobs
01.05.2008 21:19:33.105 *INFO* [SCR Component Actor] org.apache.jackrabbit.core.RepositoryImpl initializing workspace '<span class="code-keyword">default</span>'...
01.05.2008 21:19:33.106 *INFO* [SCR Component Actor] org.apache.jackrabbit.core.fs.local.LocalFileSystem LocalFileSystem initialized at path jackrabbit/workspaces/<span class="code-keyword">default</span>
01.05.2008 21:19:33.620 *INFO* [SCR Component Actor] org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager Database: Apache Derby / 10.2.1.6 - (452058)
01.05.2008 21:19:33.620 *INFO* [SCR Component Actor] org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager Driver: Apache Derby Embedded JDBC Driver / 10.2.1.6 - (452058)
01.05.2008 21:19:33.870 *INFO* [SCR Component Actor] org.apache.jackrabbit.core.fs.local.LocalFileSystem LocalFileSystem initialized at path jackrabbit/workspaces/<span class="code-keyword">default</span>/blobs
01.05.2008 21:19:33.914 *INFO* [SCR Component Actor] org.apache.jackrabbit.core.RepositoryImpl workspace '<span class="code-keyword">default</span>' initialized
01.05.2008 21:19:34.043 *INFO* [SCR Component Actor] org.apache.jackrabbit.core.fs.local.LocalFileSystem LocalFileSystem initialized at path jackrabbit/repository/index
01.05.2008 21:19:34.865 *INFO* [SCR Component Actor] org.apache.jackrabbit.core.query.lucene.SearchIndex Index initialized: jackrabbit/repository/index Version: 2
01.05.2008 21:19:34.868 *INFO* [SCR Component Actor] org.apache.jackrabbit.core.fs.local.LocalFileSystem LocalFileSystem initialized at path jackrabbit/workspaces/<span class="code-keyword">default</span>/index
01.05.2008 21:19:34.869 *INFO* [SCR Component Actor] org.apache.jackrabbit.core.query.lucene.SearchIndex Index initialized: jackrabbit/workspaces/<span class="code-keyword">default</span>/index Version: 2
01.05.2008 21:19:34.870 *INFO* [SCR Component Actor] org.apache.jackrabbit.core.RepositoryImpl Repository started
01.05.2008 21:19:35.017 *INFO* [SCR Component Actor] org.apache.sling.jcr.jackrabbit.server Service [org.apache.sling.jcr.jackrabbit.server.SlingServerRepository-1209669571062-0,29] ServiceEvent REGISTERED
01.05.2008 21:19:35.018 *INFO* [SCR Component Actor] org.apache.sling.jcr.jackrabbit.server Repository bound to JNDI as jackrabbit
01.05.2008 21:19:35.164 *INFO* [SCR Component Actor] org.apache.sling.jcr.jackrabbit.server Using <span class="code-keyword">private</span> RMI Registry at 1099
01.05.2008 21:19:35.165 *INFO* [SCR Component Actor] org.apache.sling.jcr.jackrabbit.server Repository bound to <span class="code-comment">//bslm-046.corp.day.com:1099/jackrabbit
</span>ss

Framework is launched.

id      State       Bundle
0       ACTIVE      org.eclipse.osgi_3.3.2.R33x_v20080105
1       ACTIVE      org.eclipse.osgi.services_3.1.200.v20070605
2       ACTIVE      org.apache.sling.osgi.log_2.0.0.incubator-SNAPSHOT
4       ACTIVE      org.eclipse.equinox.cm_3.2.0.v20070116
5       ACTIVE      org.apache.felix.scr_1.0.0
6       ACTIVE      org.apache.commons.collections_3.2.1
7       ACTIVE      org.apache.jackrabbit.jackrabbit-jcr-commons_1.4.2
8       ACTIVE      org.apache.sling.jcr.api_2.0.0.incubator-SNAPSHOT
9       ACTIVE      org.apache.sling.jcr.base_2.0.0.incubator-SNAPSHOT
10      ACTIVE      org.apache.sling.jcr.jackrabbit-text-extractors_1.4.0.incubator-SNAPSHOT
11      ACTIVE      org.apache.sling.jcr.jackrabbit.server_2.0.0.incubator-SNAPSHOT

osgi&gt;</pre>
</div></div>

<p>Wow! After starting the Text Extractors and Jackrabbit Server bundles, the repository is immediately starting and is then available as an OSGi service of type <tt>javax.jcr.Repository</tt> and over RMI using the RMI URL <tt>//localhost:1099/jackrabbit</tt></p>


<p>That's it. Now, you can install more bundles and enjoy the fun of programming the Content Repository for Java API.</p>


<h2><a name="LaunchingaJCRRepositoryinsideEquinox-Links"></a>Links</h2>

<p>This is a complete list of the links to the files we needed during download. Note, that some links are behind a mirroring scripts (mostly the Equinox download links).</p>

<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Description </th>
<th class='confluenceTh'> Link </th>
</tr>
<tr>
<td class='confluenceTd'> Equinox OSGi Framework </td>
<td class='confluenceTd'> <span class="nobr"><a href="http://download.eclipse.org/eclipse/equinox/drops/R-3.3.2-200802211800/download.php?dropFile=org.eclipse.osgi_3.3.2.R33x_v20080105.jar" title="Visit page outside Confluence" rel="nofollow">org.eclipse.osgi_3.3.2.R33x_v20080105.jar<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>  </td>
</tr>
<tr>
<td class='confluenceTd'> OSGi Compendium Services API </td>
<td class='confluenceTd'> <span class="nobr"><a href="http://download.eclipse.org/eclipse/equinox/drops/R-3.3.2-200802211800/download.php?dropFile=org.eclipse.osgi.services_3.1.200.v20070605.jar" title="Visit page outside Confluence" rel="nofollow">org.eclipse.osgi.services_3.1.200.v20070605.jar<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
</tr>
<tr>
<td class='confluenceTd'> Sling OSGi LogService Implementation </td>
<td class='confluenceTd'> <span class="nobr"><a href="http://people.apache.org/repo/m2-snapshot-repository/org/apache/sling/org.apache.sling.osgi.log/2.0.0-incubator-SNAPSHOT/org.apache.sling.osgi.log-2.0.0-incubator-20080430.113337-26.jar" title="Visit page outside Confluence" rel="nofollow">org.apache.sling.osgi.log-2.0.0-incubator-20080430.113337-26.jar<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
</tr>
<tr>
<td class='confluenceTd'> Equinox OSGi Configuration Admin Service Implementation </td>
<td class='confluenceTd'> <span class="nobr"><a href="http://download.eclipse.org/eclipse/equinox/drops/R-3.3.2-200802211800/download.php?dropFile=org.eclipse.equinox.cm_3.2.0.v20070116.jar" title="Visit page outside Confluence" rel="nofollow">org.eclipse.equinox.cm_3.2.0.v20070116.jar<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
</tr>
<tr>
<td class='confluenceTd'> Felix OSGi Declarative Service Implementation </td>
<td class='confluenceTd'> <span class="nobr"><a href="http://felix.apache.org/site/downloads.cgi" title="Visit page outside Confluence" rel="nofollow">org.apache.felix.scr-1.0.0.jar<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
</tr>
<tr>
<td class='confluenceTd'> Jakarta Commons Collections </td>
<td class='confluenceTd'> <span class="nobr"><a href="http://repo1.maven.org/maven2/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar" title="Visit page outside Confluence" rel="nofollow">commons-collections-3.2.1.jar<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
</tr>
<tr>
<td class='confluenceTd'> Jackrabbit Commons </td>
<td class='confluenceTd'> <span class="nobr"><a href="http://repo1.maven.org/maven2/org/apache/jackrabbit/jackrabbit-jcr-commons/1.4.2/jackrabbit-jcr-commons-1.4.2.jar" title="Visit page outside Confluence" rel="nofollow">jackrabbit-jcr-commons-1.4.2.jar<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
</tr>
<tr>
<td class='confluenceTd'> Sling JCR API Bundle </td>
<td class='confluenceTd'> <span class="nobr"><a href="http://people.apache.org/repo/m2-snapshot-repository/org/apache/sling/org.apache.sling.jcr.api/2.0.0-incubator-SNAPSHOT/org.apache.sling.jcr.api-2.0.0-incubator-20080430.113337-29.jar" title="Visit page outside Confluence" rel="nofollow">org.apache.sling.jcr.api-2.0.0-incubator-20080430.113337-29.jar<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
</tr>
<tr>
<td class='confluenceTd'> Sling JCR Base Bundle </td>
<td class='confluenceTd'> <span class="nobr"><a href="http://people.apache.org/repo/m2-snapshot-repository/org/apache/sling/org.apache.sling.jcr.base/2.0.0-incubator-SNAPSHOT/org.apache.sling.jcr.base-2.0.0-incubator-20080501.182241-31.jar" title="Visit page outside Confluence" rel="nofollow">org.apache.sling.jcr.base-2.0.0-incubator-20080501.182241-31.jar<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
</tr>
<tr>
<td class='confluenceTd'> Sling Jackrabbit Text Extractors Bundle </td>
<td class='confluenceTd'> <span class="nobr"><a href="http://people.apache.org/repo/m2-snapshot-repository/org/apache/sling/org.apache.sling.jcr.jackrabbit-text-extractors/1.4.0-0003-incubator-SNAPSHOT/org.apache.sling.jcr.jackrabbit-text-extractors-1.4.0-0003-incubator-20080430.113337-9.jar" title="Visit page outside Confluence" rel="nofollow">org.apache.sling.jcr.jackrabbit-text-extractors-1.4.0-0003-incubator-20080430.113337-9.jar<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
</tr>
<tr>
<td class='confluenceTd'> Sling Jackrabbit Embedded Repository Bundle </td>
<td class='confluenceTd'> <span class="nobr"><a href="http://people.apache.org/repo/m2-snapshot-repository/org/apache/sling/org.apache.sling.jcr.jackrabbit.server/2.0.0-incubator-SNAPSHOT/org.apache.sling.jcr.jackrabbit.server-2.0.0-incubator-20080501.191424-29.jar" title="Visit page outside Confluence" rel="nofollow">org.apache.sling.jcr.jackrabbit.server-2.0.0-incubator-20080501.191424-29.jar<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
</tr>
</tbody></table></div>


</td></tr></table></div>
<p>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tr>
        <td height="12" background="http://cwiki.apache.org/confluence/images/border/border_bottom.gif"><img src="http://cwiki.apache.org/confluence/images/border/spacer.gif" width="1" height="1" border="0"/></td>
    </tr>
</table>

<div class="smalltext">
    Powered by
    <a href="http://www.atlassian.com/software/confluence/default.jsp?clicked=footer" class="smalltext">Atlassian Confluence</a>
    (Version: 2.2.9 Build:#527 Sep 07, 2006)
    -
    <a href="http://jira.atlassian.com/secure/BrowseProject.jspa?id=10470" class="smalltext">Bug/feature request</a><br/>
    <br>
    <a href="http://cwiki.apache.org/confluence/users/viewnotifications.action">Unsubscribe or edit your notifications preferences</a>

</div>

</body>
</html>


Mime
View raw message