You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2016/04/28 17:03:12 UTC

svn commit: r1741445 [31/42] - in /karaf/site/production/manual/latest: ./ commands/ developer-guide/ images/ user-guide/

Added: karaf/site/production/manual/latest/provisioning.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/latest/provisioning.html?rev=1741445&view=auto
==============================================================================
--- karaf/site/production/manual/latest/provisioning.html (added)
+++ karaf/site/production/manual/latest/provisioning.html Thu Apr 28 15:03:08 2016
@@ -0,0 +1,1473 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.2">
+<title>Provisioning</title>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400">
+<style>
+/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
+/* Remove the comments around the @import statement below when using this as a custom stylesheet */
+/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400";*/
+article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
+audio,canvas,video{display:inline-block}
+audio:not([controls]){display:none;height:0}
+[hidden],template{display:none}
+script{display:none!important}
+html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
+body{margin:0}
+a{background:transparent}
+a:focus{outline:thin dotted}
+a:active,a:hover{outline:0}
+h1{font-size:2em;margin:.67em 0}
+abbr[title]{border-bottom:1px dotted}
+b,strong{font-weight:bold}
+dfn{font-style:italic}
+hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
+mark{background:#ff0;color:#000}
+code,kbd,pre,samp{font-family:monospace;font-size:1em}
+pre{white-space:pre-wrap}
+q{quotes:"\201C" "\201D" "\2018" "\2019"}
+small{font-size:80%}
+sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
+sup{top:-.5em}
+sub{bottom:-.25em}
+img{border:0}
+svg:not(:root){overflow:hidden}
+figure{margin:0}
+fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
+legend{border:0;padding:0}
+button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
+button,input{line-height:normal}
+button,select{text-transform:none}
+button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
+button[disabled],html input[disabled]{cursor:default}
+input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
+input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}
+input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}
+button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
+textarea{overflow:auto;vertical-align:top}
+table{border-collapse:collapse;border-spacing:0}
+*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
+html,body{font-size:100%}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto}
+a:hover{cursor:pointer}
+img,object,embed{max-width:100%;height:auto}
+object,embed{height:100%}
+img{-ms-interpolation-mode:bicubic}
+#map_canvas img,#map_canvas embed,#map_canvas object,.map_canvas img,.map_canvas embed,.map_canvas object{max-width:none!important}
+.left{float:left!important}
+.right{float:right!important}
+.text-left{text-align:left!important}
+.text-right{text-align:right!important}
+.text-center{text-align:center!important}
+.text-justify{text-align:justify!important}
+.hide{display:none}
+.antialiased,body{-webkit-font-smoothing:antialiased}
+img{display:inline-block;vertical-align:middle}
+textarea{height:auto;min-height:50px}
+select{width:100%}
+p.lead,.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{font-size:1.21875em;line-height:1.6}
+.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
+a{color:#2156a5;text-decoration:underline;line-height:inherit}
+a:hover,a:focus{color:#1d4b8f}
+a img{border:none}
+p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
+p aside{font-size:.875em;line-height:1.35;font-style:italic}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
+h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
+h1{font-size:2.125em}
+h2{font-size:1.6875em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
+h4,h5{font-size:1.125em}
+h6{font-size:1em}
+hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
+em,i{font-style:italic;line-height:inherit}
+strong,b{font-weight:bold;line-height:inherit}
+small{font-size:60%;line-height:inherit}
+code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
+ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
+ul,ol,ul.no-bullet,ol.no-bullet{margin-left:1.5em}
+ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
+ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
+ul.square{list-style-type:square}
+ul.circle{list-style-type:circle}
+ul.disc{list-style-type:disc}
+ul.no-bullet{list-style:none}
+ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
+dl dt{margin-bottom:.3125em;font-weight:bold}
+dl dd{margin-bottom:1.25em}
+abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
+abbr{text-transform:none}
+blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
+blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
+blockquote cite:before{content:"\2014 \0020"}
+blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
+blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
+@media only screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
+h1{font-size:2.75em}
+h2{font-size:2.3125em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
+h4{font-size:1.4375em}}table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
+table thead,table tfoot{background:#f7f8f7;font-weight:bold}
+table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
+table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
+table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
+h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.clearfix:before,.clearfix:after,.float-group:before,.float-group:after{content:" ";display:table}
+.clearfix:after,.float-group:after{clear:both}
+*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
+pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
+.keyseq{color:rgba(51,51,51,.8)}
+kbd{display:inline-block;color:rgba(0,0,0,.8);font-size:.75em;line-height:1.4;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:-.15em .15em 0 .15em;padding:.2em .6em .2em .5em;vertical-align:middle;white-space:nowrap}
+.keyseq kbd:first-child{margin-left:0}
+.keyseq kbd:last-child{margin-right:0}
+.menuseq,.menu{color:rgba(0,0,0,.8)}
+b.button:before,b.button:after{position:relative;top:-1px;font-weight:400}
+b.button:before{content:"[";padding:0 3px 0 2px}
+b.button:after{content:"]";padding:0 2px 0 3px}
+p a>code:hover{color:rgba(0,0,0,.9)}
+#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
+#header:before,#header:after,#content:before,#content:after,#footnotes:before,#footnotes:after,#footer:before,#footer:after{content:" ";display:table}
+#header:after,#content:after,#footnotes:after,#footer:after{clear:both}
+#content{margin-top:1.25em}
+#content:before{content:none}
+#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
+#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8}
+#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #ddddd8;padding-bottom:8px}
+#header .details{border-bottom:1px solid #ddddd8;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
+#header .details span:first-child{margin-left:-.125em}
+#header .details span.email a{color:rgba(0,0,0,.85)}
+#header .details br{display:none}
+#header .details br+span:before{content:"\00a0\2013\00a0"}
+#header .details br+span.author:before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
+#header .details br+span#revremark:before{content:"\00a0|\00a0"}
+#header #revnumber{text-transform:capitalize}
+#header #revnumber:after{content:"\00a0"}
+#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #ddddd8;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
+#toc{border-bottom:1px solid #efefed;padding-bottom:.5em}
+#toc>ul{margin-left:.125em}
+#toc ul.sectlevel0>li>a{font-style:italic}
+#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
+#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
+#toc a{text-decoration:none}
+#toc a:active{text-decoration:underline}
+#toctitle{color:#7a2518;font-size:1.2em}
+@media only screen and (min-width:768px){#toctitle{font-size:1.375em}
+body.toc2{padding-left:15em;padding-right:0}
+#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
+#toc.toc2 #toctitle{margin-top:0;font-size:1.2em}
+#toc.toc2>ul{font-size:.9em;margin-bottom:0}
+#toc.toc2 ul ul{margin-left:0;padding-left:1em}
+#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
+body.toc2.toc-right{padding-left:0;padding-right:15em}
+body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}}@media only screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
+#toc.toc2{width:20em}
+#toc.toc2 #toctitle{font-size:1.375em}
+#toc.toc2>ul{font-size:.95em}
+#toc.toc2 ul ul{padding-left:1.25em}
+body.toc2.toc-right{padding-left:0;padding-right:20em}}#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
+#content #toc>:first-child{margin-top:0}
+#content #toc>:last-child{margin-bottom:0}
+#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em}
+#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
+.sect1{padding-bottom:.625em}
+@media only screen and (min-width:768px){.sect1{padding-bottom:1.25em}}.sect1+.sect1{border-top:1px solid #efefed}
+#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
+#content h1>a.anchor:before,h2>a.anchor:before,h3>a.anchor:before,#toctitle>a.anchor:before,.sidebarblock>.content>.title>a.anchor:before,h4>a.anchor:before,h5>a.anchor:before,h6>a.anchor:before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
+#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
+#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
+#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
+.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
+.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
+table.tableblock>caption.title{white-space:nowrap;overflow:visible;max-width:0}
+.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{color:rgba(0,0,0,.85)}
+table.tableblock #preamble>.sectionbody>.paragraph:first-of-type p{font-size:inherit}
+.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
+.admonitionblock>table td.icon{text-align:center;width:80px}
+.admonitionblock>table td.icon img{max-width:none}
+.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)}
+.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
+.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
+.exampleblock>.content>:first-child{margin-top:0}
+.exampleblock>.content>:last-child{margin-bottom:0}
+.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
+.sidebarblock>:first-child{margin-top:0}
+.sidebarblock>:last-child{margin-bottom:0}
+.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
+.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
+.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8}
+.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1}
+.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:.8125em}
+.literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal}
+@media only screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}}@media only screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}}.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)}
+.listingblock pre.highlightjs{padding:0}
+.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
+.listingblock pre.prettyprint{border-width:0}
+.listingblock>.content{position:relative}
+.listingblock code[data-lang]:before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999}
+.listingblock:hover code[data-lang]:before{display:block}
+.listingblock.terminal pre .command:before{content:attr(data-prompt);padding-right:.5em;color:#999}
+.listingblock.terminal pre .command:not([data-prompt]):before{content:"$"}
+table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none}
+table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0}
+table.pyhltable td.code{padding-left:.75em;padding-right:0}
+pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8}
+pre.pygments .lineno{display:inline-block;margin-right:.25em}
+table.pyhltable .linenodiv{background:none!important;padding-right:0!important}
+.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
+.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
+.quoteblock blockquote,.quoteblock blockquote p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
+.quoteblock blockquote{margin:0;padding:0;border:0}
+.quoteblock blockquote:before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
+.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
+.quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right}
+.quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)}
+.quoteblock .quoteblock blockquote{padding:0 0 0 .75em}
+.quoteblock .quoteblock blockquote:before{display:none}
+.verseblock{margin:0 1em 1.25em 1em}
+.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
+.verseblock pre strong{font-weight:400}
+.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
+.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
+.quoteblock .attribution br,.verseblock .attribution br{display:none}
+.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.05em;color:rgba(0,0,0,.6)}
+.quoteblock.abstract{margin:0 0 1.25em 0;display:block}
+.quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{text-align:left;word-spacing:0}
+.quoteblock.abstract blockquote:before,.quoteblock.abstract blockquote p:first-of-type:before{display:none}
+table.tableblock{max-width:100%;border-collapse:separate}
+table.tableblock td>.paragraph:last-child p>p:last-child,table.tableblock th>p:last-child,table.tableblock td>p:last-child{margin-bottom:0}
+table.spread{width:100%}
+table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
+table.grid-all th.tableblock,table.grid-all td.tableblock{border-width:0 1px 1px 0}
+table.grid-all tfoot>tr>th.tableblock,table.grid-all tfoot>tr>td.tableblock{border-width:1px 1px 0 0}
+table.grid-cols th.tableblock,table.grid-cols td.tableblock{border-width:0 1px 0 0}
+table.grid-all *>tr>.tableblock:last-child,table.grid-cols *>tr>.tableblock:last-child{border-right-width:0}
+table.grid-rows th.tableblock,table.grid-rows td.tableblock{border-width:0 0 1px 0}
+table.grid-all tbody>tr:last-child>th.tableblock,table.grid-all tbody>tr:last-child>td.tableblock,table.grid-all thead:last-child>tr>th.tableblock,table.grid-rows tbody>tr:last-child>th.tableblock,table.grid-rows tbody>tr:last-child>td.tableblock,table.grid-rows thead:last-child>tr>th.tableblock{border-bottom-width:0}
+table.grid-rows tfoot>tr>th.tableblock,table.grid-rows tfoot>tr>td.tableblock{border-width:1px 0 0 0}
+table.frame-all{border-width:1px}
+table.frame-sides{border-width:0 1px}
+table.frame-topbot{border-width:1px 0}
+th.halign-left,td.halign-left{text-align:left}
+th.halign-right,td.halign-right{text-align:right}
+th.halign-center,td.halign-center{text-align:center}
+th.valign-top,td.valign-top{vertical-align:top}
+th.valign-bottom,td.valign-bottom{vertical-align:bottom}
+th.valign-middle,td.valign-middle{vertical-align:middle}
+table thead th,table tfoot th{font-weight:bold}
+tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
+tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
+p.tableblock>code:only-child{background:none;padding:0}
+p.tableblock{font-size:1em}
+td>div.verse{white-space:pre}
+ol{margin-left:1.75em}
+ul li ol{margin-left:1.5em}
+dl dd{margin-left:1.125em}
+dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
+ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
+ul.unstyled,ol.unnumbered,ul.checklist,ul.none{list-style-type:none}
+ul.unstyled,ol.unnumbered,ul.checklist{margin-left:.625em}
+ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1em;font-size:.85em}
+ul.checklist li>p:first-child>input[type="checkbox"]:first-child{width:1em;position:relative;top:1px}
+ul.inline{margin:0 auto .625em auto;margin-left:-1.375em;margin-right:0;padding:0;list-style:none;overflow:hidden}
+ul.inline>li{list-style:none;float:left;margin-left:1.375em;display:block}
+ul.inline>li>*{display:block}
+.unstyled dl dt{font-weight:400;font-style:normal}
+ol.arabic{list-style-type:decimal}
+ol.decimal{list-style-type:decimal-leading-zero}
+ol.loweralpha{list-style-type:lower-alpha}
+ol.upperalpha{list-style-type:upper-alpha}
+ol.lowerroman{list-style-type:lower-roman}
+ol.upperroman{list-style-type:upper-roman}
+ol.lowergreek{list-style-type:lower-greek}
+.hdlist>table,.colist>table{border:0;background:none}
+.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
+td.hdlist1{padding-right:.75em;font-weight:bold}
+td.hdlist1,td.hdlist2{vertical-align:top}
+.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
+.colist>table tr>td:first-of-type{padding:0 .75em;line-height:1}
+.colist>table tr>td:last-of-type{padding:.25em 0}
+.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
+.imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0}
+.imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em}
+.imageblock>.title{margin-bottom:0}
+.imageblock.thumb,.imageblock.th{border-width:6px}
+.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
+.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
+.image.left{margin-right:.625em}
+.image.right{margin-left:.625em}
+a.image{text-decoration:none}
+span.footnote,span.footnoteref{vertical-align:super;font-size:.875em}
+span.footnote a,span.footnoteref a{text-decoration:none}
+span.footnote a:active,span.footnoteref a:active{text-decoration:underline}
+#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
+#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em 0;border-width:1px 0 0 0}
+#footnotes .footnote{padding:0 .375em;line-height:1.3;font-size:.875em;margin-left:1.2em;text-indent:-1.2em;margin-bottom:.2em}
+#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none}
+#footnotes .footnote:last-of-type{margin-bottom:0}
+#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
+.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
+.gist .file-data>table td.line-data{width:99%}
+div.unbreakable{page-break-inside:avoid}
+.big{font-size:larger}
+.small{font-size:smaller}
+.underline{text-decoration:underline}
+.overline{text-decoration:overline}
+.line-through{text-decoration:line-through}
+.aqua{color:#00bfbf}
+.aqua-background{background-color:#00fafa}
+.black{color:#000}
+.black-background{background-color:#000}
+.blue{color:#0000bf}
+.blue-background{background-color:#0000fa}
+.fuchsia{color:#bf00bf}
+.fuchsia-background{background-color:#fa00fa}
+.gray{color:#606060}
+.gray-background{background-color:#7d7d7d}
+.green{color:#006000}
+.green-background{background-color:#007d00}
+.lime{color:#00bf00}
+.lime-background{background-color:#00fa00}
+.maroon{color:#600000}
+.maroon-background{background-color:#7d0000}
+.navy{color:#000060}
+.navy-background{background-color:#00007d}
+.olive{color:#606000}
+.olive-background{background-color:#7d7d00}
+.purple{color:#600060}
+.purple-background{background-color:#7d007d}
+.red{color:#bf0000}
+.red-background{background-color:#fa0000}
+.silver{color:#909090}
+.silver-background{background-color:#bcbcbc}
+.teal{color:#006060}
+.teal-background{background-color:#007d7d}
+.white{color:#bfbfbf}
+.white-background{background-color:#fafafa}
+.yellow{color:#bfbf00}
+.yellow-background{background-color:#fafa00}
+span.icon>.fa{cursor:default}
+.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
+.admonitionblock td.icon .icon-note:before{content:"\f05a";color:#19407c}
+.admonitionblock td.icon .icon-tip:before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
+.admonitionblock td.icon .icon-warning:before{content:"\f071";color:#bf6900}
+.admonitionblock td.icon .icon-caution:before{content:"\f06d";color:#bf3400}
+.admonitionblock td.icon .icon-important:before{content:"\f06a";color:#bf0000}
+.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value] *{color:#fff!important}
+.conum[data-value]+b{display:none}
+.conum[data-value]:after{content:attr(data-value)}
+pre .conum[data-value]{position:relative;top:-.125em}
+b.conum *{color:inherit!important}
+.conum:not([data-value]):empty{display:none}
+h1,h2{letter-spacing:-.01em}
+dt,th.tableblock,td.content{text-rendering:optimizeLegibility}
+p,td.content{letter-spacing:-.01em}
+p strong,td.content strong{letter-spacing:-.005em}
+p,blockquote,dt,td.content{font-size:1.0625rem}
+p{margin-bottom:1.25rem}
+.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
+.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
+.print-only{display:none!important}
+@media print{@page{margin:1.25cm .75cm}
+*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
+a{color:inherit!important;text-decoration:underline!important}
+a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
+a[href^="http:"]:not(.bare):after,a[href^="https:"]:not(.bare):after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
+abbr[title]:after{content:" (" attr(title) ")"}
+pre,blockquote,tr,img{page-break-inside:avoid}
+thead{display:table-header-group}
+img{max-width:100%!important}
+p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
+h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#toc,.sidebarblock,.exampleblock>.content{background:none!important}
+#toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important}
+.sect1{padding-bottom:0!important}
+.sect1+.sect1{border:0!important}
+#header>h1:first-child{margin-top:1.25rem}
+body.book #header{text-align:center}
+body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em 0}
+body.book #header .details{border:0!important;display:block;padding:0!important}
+body.book #header .details span:first-child{margin-left:0!important}
+body.book #header .details br{display:block}
+body.book #header .details br+span:before{content:none!important}
+body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
+body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
+.listingblock code[data-lang]:before{display:block}
+#footer{background:none!important;padding:0 .9375em}
+#footer-text{color:rgba(0,0,0,.6)!important;font-size:.9em}
+.hide-on-print{display:none!important}
+.print-only{display:block!important}
+.hide-for-print{display:none!important}
+.show-for-print{display:inherit!important}}
+</style>
+<style>
+/* Stylesheet for CodeRay to match GitHub theme | MIT License | http://foundation.zurb.com */
+/*pre.CodeRay {background-color:#f7f7f8;}*/
+.CodeRay .line-numbers{border-right:1px solid #d8d8d8;padding:0 0.5em 0 .25em}
+.CodeRay span.line-numbers{display:inline-block;margin-right:.5em;color:rgba(0,0,0,.3)}
+.CodeRay .line-numbers strong{font-weight: normal}
+table.CodeRay{border-collapse:separate;border-spacing:0;margin-bottom:0;border:0;background:none}
+table.CodeRay td{vertical-align: top}
+table.CodeRay td.line-numbers{text-align:right}
+table.CodeRay td.line-numbers>pre{padding:0;color:rgba(0,0,0,.3)}
+table.CodeRay td.code{padding:0 0 0 .5em}
+table.CodeRay td.code>pre{padding:0}
+.CodeRay .debug{color:#fff !important;background:#000080 !important}
+.CodeRay .annotation{color:#007}
+.CodeRay .attribute-name{color:#000080}
+.CodeRay .attribute-value{color:#700}
+.CodeRay .binary{color:#509}
+.CodeRay .comment{color:#998;font-style:italic}
+.CodeRay .char{color:#04d}
+.CodeRay .char .content{color:#04d}
+.CodeRay .char .delimiter{color:#039}
+.CodeRay .class{color:#458;font-weight:bold}
+.CodeRay .complex{color:#a08}
+.CodeRay .constant,.CodeRay .predefined-constant{color:#008080}
+.CodeRay .color{color:#099}
+.CodeRay .class-variable{color:#369}
+.CodeRay .decorator{color:#b0b}
+.CodeRay .definition{color:#099}
+.CodeRay .delimiter{color:#000}
+.CodeRay .doc{color:#970}
+.CodeRay .doctype{color:#34b}
+.CodeRay .doc-string{color:#d42}
+.CodeRay .escape{color:#666}
+.CodeRay .entity{color:#800}
+.CodeRay .error{color:#808}
+.CodeRay .exception{color:inherit}
+.CodeRay .filename{color:#099}
+.CodeRay .function{color:#900;font-weight:bold}
+.CodeRay .global-variable{color:#008080}
+.CodeRay .hex{color:#058}
+.CodeRay .integer,.CodeRay .float{color:#099}
+.CodeRay .include{color:#555}
+.CodeRay .inline{color:#00}
+.CodeRay .inline .inline{background:#ccc}
+.CodeRay .inline .inline .inline{background:#bbb}
+.CodeRay .inline .inline-delimiter{color:#d14}
+.CodeRay .inline-delimiter{color:#d14}
+.CodeRay .important{color:#555;font-weight:bold}
+.CodeRay .interpreted{color:#b2b}
+.CodeRay .instance-variable{color:#008080}
+.CodeRay .label{color:#970}
+.CodeRay .local-variable{color:#963}
+.CodeRay .octal{color:#40e}
+.CodeRay .predefined{color:#369}
+.CodeRay .preprocessor{color:#579}
+.CodeRay .pseudo-class{color:#555}
+.CodeRay .directive{font-weight:bold}
+.CodeRay .type{font-weight:bold}
+.CodeRay .predefined-type{color:inherit}
+.CodeRay .reserved,.CodeRay .keyword {color:#000;font-weight:bold}
+.CodeRay .key{color:#808}
+.CodeRay .key .delimiter{color:#606}
+.CodeRay .key .char{color:#80f}
+.CodeRay .value{color:#088}
+.CodeRay .regexp .delimiter{color:#808}
+.CodeRay .regexp .content{color:#808}
+.CodeRay .regexp .modifier{color:#808}
+.CodeRay .regexp .char{color:#d14}
+.CodeRay .regexp .function{color:#404;font-weight:bold}
+.CodeRay .string{color:#d20}
+.CodeRay .string .string .string{background:#ffd0d0}
+.CodeRay .string .content{color:#d14}
+.CodeRay .string .char{color:#d14}
+.CodeRay .string .delimiter{color:#d14}
+.CodeRay .shell{color:#d14}
+.CodeRay .shell .delimiter{color:#d14}
+.CodeRay .symbol{color:#990073}
+.CodeRay .symbol .content{color:#a60}
+.CodeRay .symbol .delimiter{color:#630}
+.CodeRay .tag{color:#008080}
+.CodeRay .tag-special{color:#d70}
+.CodeRay .variable{color:#036}
+.CodeRay .insert{background:#afa}
+.CodeRay .delete{background:#faa}
+.CodeRay .change{color:#aaf;background:#007}
+.CodeRay .head{color:#f8f;background:#505}
+.CodeRay .insert .insert{color:#080}
+.CodeRay .delete .delete{color:#800}
+.CodeRay .change .change{color:#66f}
+.CodeRay .head .head{color:#f4f}
+</style>
+</head>
+<body class="article">
+<div id="header">
+<div id="toc" class="toc">
+<div id="toctitle">Table of Contents</div>
+<ul class="sectlevel2">
+<li><a href="#_provisioning">Provisioning</a></li>
+</ul>
+</div>
+</div>
+<div id="content">
+<div class="sect2">
+<h3 id="_provisioning">Provisioning</h3>
+<div class="paragraph">
+<p>Apache Karaf supports the provisioning of applications and modules using the concept of Karaf Features.</p>
+</div>
+<div class="sect3">
+<h4 id="_application">Application</h4>
+<div class="paragraph">
+<p>By provisioning application, it means install all modules, configuration, and transitive applications.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_osgi">OSGi</h4>
+<div class="paragraph">
+<p>It natively supports the deployment of OSGi applications.</p>
+</div>
+<div class="paragraph">
+<p>An OSGi application is a set of OSGi bundles. An OSGi bundles is a regular jar file, with additional metadata in the jar MANIFEST.</p>
+</div>
+<div class="paragraph">
+<p>In OSGi, a bundle can depend to other bundles. So, it means that to deploy an OSGi application, most of the time, you have
+to firstly deploy a lot of other bundles required by the application.</p>
+</div>
+<div class="paragraph">
+<p>So, you have to find these bundles first, install the bundles. Again, these "dependency" bundles may require other bundles
+to satisfy their own dependencies.</p>
+</div>
+<div class="paragraph">
+<p>More over, typically, an application requires configuration (see the [Configuration section|configuration] of the user guide).
+So, before being able to start your application, in addition of the dependency bundles, you have to create or deploy the
+configuration.</p>
+</div>
+<div class="paragraph">
+<p>As we can see, the provisioning of an application can be very long and fastidious.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_feature_and_resolver">Feature and resolver</h4>
+<div class="paragraph">
+<p>Apache Karaf provides a simple and flexible way to provision applications.</p>
+</div>
+<div class="paragraph">
+<p>In Apache Karaf, the application provisioning is an Apache Karaf "feature".</p>
+</div>
+<div class="paragraph">
+<p>A feature describes an application as:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>a name</p>
+</li>
+<li>
+<p>a version</p>
+</li>
+<li>
+<p>a optional description (eventually with a long description)</p>
+</li>
+<li>
+<p>a set of bundles</p>
+</li>
+<li>
+<p>optionally a set configurations or configuration files</p>
+</li>
+<li>
+<p>optionally a set of dependency features</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>When you install a feature, Apache Karaf installs all resources described in the feature. It means that it will
+automatically resolves and installs all bundles, configurations, and dependency features described in the feature.</p>
+</div>
+<div class="paragraph">
+<p>The feature resolver checks the service requirements, and install the bundles providing the services matching the requirements.
+The default mode enables this behavior only for "new style" features repositories (basically, the features repositories XML with
+schema equal or greater to 1.3.0). It doesn&#8217;t apply for "old style" features repositories (coming from Karaf 2 or 3).</p>
+</div>
+<div class="paragraph">
+<p>You can change the service requirements enforcement mode in <code>etc/org.apache.karaf.features.cfg</code> file, using the <code>serviceRequirements</code> property.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>serviceRequirements=default</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The possible values are:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>disable: service requirements are completely ignored, for both "old style" and "new style" features repositories</p>
+</li>
+<li>
+<p>default: service requirements are ignored for "old style" features repositories, and enabled for "new style" features repositories.</p>
+</li>
+<li>
+<p>enforce: service requirements are always verified, for "old style" and "new style" features repositories.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Additionally, a feature can also define requirements. In that case, Karaf can automatically additional bundles or features
+providing the capabilities to satisfy the requirements.</p>
+</div>
+<div class="paragraph">
+<p>A feature has a complete lifecycle: install, start, stop, update, uninstall.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_features_repositories">Features repositories</h4>
+<div class="paragraph">
+<p>The features are described in a features XML descriptor. This XML file contains the description of a set of features.</p>
+</div>
+<div class="paragraph">
+<p>A features XML descriptor is named a "features repository". Before being able to install a feature, you have to register
+the features repository that provides the feature (using <code>feature:repo-add</code> command or FeatureMBean as described later).</p>
+</div>
+<div class="paragraph">
+<p>For instance, the following XML file (or "features repository") describes the <code>feature1</code> and <code>feature2</code> features:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>&lt;features xmlns="http://karaf.apache.org/xmlns/features/v1.3.0"&gt;
+  &lt;feature name="feature1" version="1.0.0"&gt;
+    &lt;bundle&gt;...&lt;/bundle&gt;
+    &lt;bundle&gt;...&lt;/bundle&gt;
+  &lt;/feature&gt;
+  &lt;feature name="feature2" version="1.1.0"&gt;
+    &lt;feature&gt;feature1&lt;/feature&gt;
+    &lt;bundle&gt;...&lt;/bundle&gt;
+  &lt;/feature&gt;
+&lt;/features&gt;</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>We can note that the features XML has a schema. Take a look on [Features XML Schema section|provisioning-schema] of the user guide
+for details.
+The <code>feature1</code> feature is available in version <code>1.0.0</code>, and contains two bundles. The <code>&lt;bundle/&gt;</code> element contains a URL
+to the bundle artifact (see [Artifacts repositories and URLs section|urls] for details). If you install the <code>feature1</code> feature
+(using <code>feature:install</code> or the FeatureMBean as described later), Apache Karaf will automatically installs the two bundles
+described.
+The <code>feature2</code> feature is available in version <code>1.1.0</code>, and contains a reference to the <code>feature1</code> feature and a bundle.
+The <code>&lt;feature/&gt;</code> element contains the name of a feature. A specific feature version can be defined using the <code>version</code>
+attribute to the <code>&lt;feature/&gt;</code> element (<code>&lt;feature version="1.0.0"&gt;feature1&lt;/feature&gt;</code>). If the <code>version</code> attribute is
+not specified, Apache Karaf will install the latest version available. If you install the <code>feature2</code> feature (using <code>feature:install</code>
+or the FeatureMBean as described later), Apache Karaf will automatically installs <code>feature1</code> (if it&#8217;s not already installed)
+and the bundle.</p>
+</div>
+<div class="paragraph">
+<p>A feature repository is registered using the URL to the features XML file.</p>
+</div>
+<div class="paragraph">
+<p>The features state is stored in the Apache Karaf cache (in the <code>KARAF_DATA</code> folder). You can restart Apache Karaf, the
+previously installed features remain installed and available after restart.
+If you do a clean restart or you delete the Apache Karaf cache (delete the <code>KARAF_DATA</code> folder), all previously features
+repositories registered and features installed will be lost: you will have to register the features repositories and install
+features by hand again.
+To prevent this behaviour, you can specify features as boot features.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_boot_features">Boot features</h4>
+<div class="paragraph">
+<p>You can describe some features as boot features. A boot feature will be automatically install by Apache Karaf, even if it has
+not been previously installed using <code>feature:install</code> or FeatureMBean.</p>
+</div>
+<div class="paragraph">
+<p>Apache Karaf features configuration is located in the <code>etc/org.apache.karaf.features.cfg</code> configuration file.</p>
+</div>
+<div class="paragraph">
+<p>This configuration file contains the two properties to use to define boot features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>featuresRepositories</code> contains a list (coma separated) of features repositories (features XML) URLs.</p>
+</li>
+<li>
+<p><code>featuresBoot</code> contains a list (come separated) of features to install at boot.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_features_upgrade">Features upgrade</h4>
+<div class="paragraph">
+<p>You can update a release by installing the same feature (with the same SNAPSHOT version or a different version).</p>
+</div>
+<div class="paragraph">
+<p>Thanks to the features lifecycle, you can control the status of the feature (started, stopped, etc).</p>
+</div>
+<div class="paragraph">
+<p>You can also use a simulation to see what the update will do.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_feature_bundles">Feature bundles</h4>
+<div class="sect4">
+<h5 id="_start_level">Start Level</h5>
+<div class="paragraph">
+<p>By default, the bundles deployed by a feature will have a start-level equals to the value defined in the <code>etc/config.properties</code>
+configuration file, in the <code>karaf.startlevel.bundle</code> property.</p>
+</div>
+<div class="paragraph">
+<p>This value can be "overrided" by the <code>start-level</code> attribute of the <code>&lt;bundle/&gt;</code> element, in the features XML.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>  &lt;feature name="my-project" version="1.0.0"&gt;
+    &lt;bundle start-level="80"&gt;mvn:com.mycompany.myproject/myproject-dao&lt;/bundle&gt;
+    &lt;bundle start-level="85"&gt;mvn:com.mycompany.myproject/myproject-service&lt;/bundle&gt;
+  &lt;/feature&gt;</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The start-level attribute insure that the <code>myproject-dao</code> bundle is started before the bundles that use it.</p>
+</div>
+<div class="paragraph">
+<p>Instead of using start-level, a better solution is to simply let the OSGi framework know what your dependencies are by
+defining the packages or services you need. It is more robust than setting start levels.</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_simulate_start_and_stop">Simulate, Start and stop</h5>
+<div class="paragraph">
+<p>You can simulate the installation of a feature using the <code>-t</code> option to <code>feature:install</code> command.</p>
+</div>
+<div class="paragraph">
+<p>You can install a bundle without starting it. By default, the bundles in a feature are automatically started.</p>
+</div>
+<div class="paragraph">
+<p>A feature can specify that a bundle should not be started automatically (the bundle stays in resolved state).
+To do so, a feature can specify the <code>start</code> attribute to false in the <code>&lt;bundle/&gt;</code> element:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>  &lt;feature name="my-project" version="1.0.0"&gt;
+    &lt;bundle start-level="80" start="false"&gt;mvn:com.mycompany.myproject/myproject-dao&lt;/bundle&gt;
+    &lt;bundle start-level="85" start="false"&gt;mvn:com.mycompany.myproject/myproject-service&lt;/bundle&gt;
+  &lt;/feature&gt;</pre>
+</div>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_dependency">Dependency</h5>
+<div class="paragraph">
+<p>A bundle can be flagged as being a dependency, using the <code>dependency</code> attribute set to true on the <code>&lt;bundle/&gt;</code> element.</p>
+</div>
+<div class="paragraph">
+<p>This information can be used by resolvers to compute the full list of bundles to be installed.</p>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_dependent_features">Dependent features</h4>
+<div class="paragraph">
+<p>A feature can depend to a set of other features:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>  &lt;feature name="my-project" version="1.0.0"&gt;
+    &lt;feature&gt;other&lt;/feature&gt;
+    &lt;bundle start-level="80" start="false"&gt;mvn:com.mycompany.myproject/myproject-dao&lt;/bundle&gt;
+    &lt;bundle start-level="85" start="false"&gt;mvn:com.mycompany.myproject/myproject-service&lt;/bundle&gt;
+  &lt;/feature&gt;</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>When the <code>my-project</code> feature will be installed, the <code>other</code> feature will be automatically installed as well.</p>
+</div>
+<div class="paragraph">
+<p>It&#8217;s possible to define a version range for a dependent feature:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>&lt;feature name="spring-dm"&gt;
+  &lt;feature version="[2.5.6,4)"&gt;spring&lt;/feature&gt;
+  ...
+&lt;/feature&gt;</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The feature with the highest version available in the range will be installed.</p>
+</div>
+<div class="paragraph">
+<p>If a single version is specified, this version will be chosen.</p>
+</div>
+<div class="paragraph">
+<p>If nothing is specified, the highest available will be installed.</p>
+</div>
+<div class="sect4">
+<h5 id="_feature_prerequisites">Feature prerequisites</h5>
+<div class="paragraph">
+<p>Prerequisite feature is special kind of dependency. If you will add <code>prerequisite</code> attribute to dependant feature tag then it will force installation and also activation of bundles in dependant feature before installation of actual feature. This may be handy in case if bundles enlisted in given feature are not using pre installed URL such <code>wrap</code> or <code>war</code>.</p>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_feature_configurations">Feature configurations</h4>
+<div class="paragraph">
+<p>The <code>&lt;config/&gt;</code> element in a feature XML allows a feature to create and/or populate a configuration (identified by a configuration PID).</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>&lt;config name="com.foo.bar"&gt;
+  myProperty = myValue
+&lt;/config&gt;</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The <code>name</code> attribute of the <code>&lt;config/&gt;</code> element corresponds to the configuration PID (see the [Configuration section|configuration] for details).</p>
+</div>
+<div class="paragraph">
+<p>The installation of the feature will have the same effect as dropping a file named <code>com.foo.bar.cfg</code> in the <code>etc</code> folder.</p>
+</div>
+<div class="paragraph">
+<p>The content of the <code>&lt;config/&gt;</code> element is a set of properties, following the key=value standard.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_feature_configuration_files">Feature configuration files</h4>
+<div class="paragraph">
+<p>Instead of using the <code>&lt;config/&gt;</code> element, a feature can specify <code>&lt;configfile/&gt;</code> elements.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>&lt;configfile finalname="/etc/myfile.cfg" override="false"&gt;URL&lt;/configfile&gt;</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Instead of directly manipulating the Apache Karaf configuration layer (as when using the <code>&lt;config/&gt;</code> element), the
+<code>&lt;configfile/&gt;</code> element takes directly a file specified by a URL, and copy the file in the location specified by the
+<code>finalname</code> attribute.</p>
+</div>
+<div class="paragraph">
+<p>If not specified, the location is relative from the <code>KARAF_BASE</code> variable. It&#8217;s also possible to use variable like
+${karaf.home}, ${karaf.base}, ${karaf.etc}, or even system properties.</p>
+</div>
+<div class="paragraph">
+<p>For instance:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>&lt;configfile finalname="${karaf.etc}/myfile.cfg" override="false"&gt;URL&lt;/configfile&gt;</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If the file is already present at the desired location it is kept and the deployment of the configuration file is skipped,
+as a already existing file might contain customization. This behaviour can be overriden by <code>override</code> set to true.</p>
+</div>
+<div class="paragraph">
+<p>The file URL is any URL supported by Apache Karaf (see the [Artifacts repositories and URLs|urls] of the user guide for details).</p>
+</div>
+<div class="sect4">
+<h5 id="_requirements">Requirements</h5>
+<div class="paragraph">
+<p>A feature can also specify expected requirements. The feature resolver will try to satisfy the requirements. For that, it checks
+the features and bundles capabilities and will automatically install the bundles to satisfy the requirements.</p>
+</div>
+<div class="paragraph">
+<p>For instance, a feature can contain:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>&lt;requirement&gt;osgi.ee;filter:=&amp;quot;(&amp;amp;(osgi.ee=JavaSE)(!(version&amp;gt;=1.8)))&amp;quot;&lt;/requirement&gt;</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The requirement specifies that the feature will work by only if the JDK version is not 1.8 (so basically 1.7).</p>
+</div>
+<div class="paragraph">
+<p>The features resolver is also able to refresh the bundles when an optional dependency is satisfy, rewiring the optional import.</p>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_commands">Commands</h4>
+<div class="sect4">
+<h5 id="__code_feature_repo_list_code"><code>feature:repo-list</code></h5>
+<div class="paragraph">
+<p>The <code>feature:repo-list</code> command lists all registered features repository:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:repo-list
+Repository               | URL
+--------------------------------------------------------------------------------------
+org.ops4j.pax.cdi-0.12.0 | mvn:org.ops4j.pax.cdi/pax-cdi-features/0.12.0/xml/features
+org.ops4j.pax.web-4.1.4  | mvn:org.ops4j.pax.web/pax-web-features/4.1.4/xml/features
+standard-4.0.0           | mvn:org.apache.karaf.features/standard/4.0.0/xml/features
+enterprise-4.0.0         | mvn:org.apache.karaf.features/enterprise/4.0.0/xml/features
+spring-4.0.0             | mvn:org.apache.karaf.features/spring/4.0.0/xml/features</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Each repository has a name and the URL to the features XML.</p>
+</div>
+<div class="paragraph">
+<p>Apache Karaf parses the features XML when you register the features repository URL (using <code>feature:repo-add</code> command
+or the FeatureMBean as described later). If you want to force Apache Karaf to reload the features repository URL (and
+so update the features definition), you can use the <code>-r</code> option:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:repo-list -r
+Reloading all repositories from their urls
+
+Repository               | URL
+--------------------------------------------------------------------------------------
+org.ops4j.pax.cdi-0.12.0 | mvn:org.ops4j.pax.cdi/pax-cdi-features/0.12.0/xml/features
+org.ops4j.pax.web-4.1.4  | mvn:org.ops4j.pax.web/pax-web-features/4.1.4/xml/features
+standard-4.0.0           | mvn:org.apache.karaf.features/standard/4.0.0/xml/features
+enterprise-4.0.0         | mvn:org.apache.karaf.features/enterprise/4.0.0/xml/features
+spring-4.0.0             | mvn:org.apache.karaf.features/spring/4.0.0/xml/features</pre>
+</div>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__code_feature_repo_add_code"><code>feature:repo-add</code></h5>
+<div class="paragraph">
+<p>To register a features repository (and so having new features available in Apache Karaf), you have to use the
+<code>feature:repo-add</code> command.</p>
+</div>
+<div class="paragraph">
+<p>The <code>feature:repo-add</code> command requires the <code>name/url</code> argument. This argument accepts:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>a feature repository URL. It&#8217;s an URL directly to the features XML file. Any URL described in the [Artifacts repositories and URLs section|urls]
+of the user guide is supported.</p>
+</li>
+<li>
+<p>a feature repository name defined in the <code>etc/org.apache.karaf.features.repos.cfg</code> configuration file.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The <code>etc/org.apache.karaf.features.repos.cfg</code> defines a list of "pre-installed/available" features repositories:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>################################################################################
+#
+#    Licensed to the Apache Software Foundation (ASF) under one or more
+#    contributor license agreements.  See the NOTICE file distributed with
+#    this work for additional information regarding copyright ownership.
+#    The ASF licenses this file to You under the Apache License, Version 2.0
+#    (the "License"); you may not use this file except in compliance with
+#    the License.  You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS,
+#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#    See the License for the specific language governing permissions and
+#    limitations under the License.
+#
+################################################################################
+
+#
+# This file describes the features repository URL
+# It could be directly installed using feature:repo-add command
+#
+enterprise=mvn:org.apache.karaf.features/enterprise/LATEST/xml/features
+spring=mvn:org.apache.karaf.features/spring/LATEST/xml/features
+cellar=mvn:org.apache.karaf.cellar/apache-karaf-cellar/LATEST/xml/features
+cave=mvn:org.apache.karaf.cave/apache-karaf-cave/LATEST/xml/features
+camel=mvn:org.apache.camel.karaf/apache-camel/LATEST/xml/features
+camel-extras=mvn:org.apache-extras.camel-extra.karaf/camel-extra/LATEST/xml/features
+cxf=mvn:org.apache.cxf.karaf/apache-cxf/LATEST/xml/features
+cxf-dosgi=mvn:org.apache.cxf.dosgi/cxf-dosgi/LATEST/xml/features
+cxf-xkms=mvn:org.apache.cxf.services.xkms/cxf-services-xkms-features/LATEST/xml
+activemq=mvn:org.apache.activemq/activemq-karaf/LATEST/xml/features
+jclouds=mvn:org.apache.jclouds.karaf/jclouds-karaf/LATEST/xml/features
+openejb=mvn:org.apache.openejb/openejb-feature/LATEST/xml/features
+wicket=mvn:org.ops4j.pax.wicket/features/LATEST/xml/features
+hawtio=mvn:io.hawt/hawtio-karaf/LATEST/xml/features
+pax-cdi=mvn:org.ops4j.pax.cdi/pax-cdi-features/LATEST/xml/features
+pax-jdbc=mvn:org.ops4j.pax.jdbc/pax-jdbc-features/LATEST/xml/features
+pax-jpa=mvn:org.ops4j.pax.jpa/pax-jpa-features/LATEST/xml/features
+pax-web=mvn:org.ops4j.pax.web/pax-web-features/LATEST/xml/features
+pax-wicket=mvn:org.ops4j.pax.wicket/pax-wicket-features/LATEST/xml/features
+ecf=http://download.eclipse.org/rt/ecf/latest/site.p2/karaf-features.xml
+decanter=mvn:org.apache.karaf.decanter/apache-karaf-decanter/LATEST/xml/features</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You can directly provide a features repository name to the <code>feature:repo-add</code> command. For install, to install Apache Karaf Cellar, you can do:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:repo-add cellar
+Adding feature url mvn:org.apache.karaf.cellar/apache-karaf-cellar/LATEST/xml/features</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>When you don&#8217;t provide the optional <code>version</code> argument, Apache Karaf installs the latest version of the features repository available.
+You can specify a target version with the <code>version</code> argument:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:repo-add cellar 4.0.0.RC1
+Adding feature url mvn:org.apache.karaf.cellar/apache-karaf-cellar/4.0.0.RC1/xml/features</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Instead of providing a features repository name defined in the <code>etc/org.apache.karaf.features.repos.cfg</code> configuration file,
+you can directly provide the features repository URL to the <code>feature:repo-add</code> command:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:repo-add mvn:org.apache.karaf.cellar/apache-karaf-cellar/4.0.0.RC1/xml/features
+Adding feature url mvn:org.apache.karaf.cellar/apache-karaf-cellar/4.0.0.RC1/xml/features</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>By default, the <code>feature:repo-add</code> command just registers the features repository, it doesn&#8217;t install any feature.
+If you specify the <code>-i</code> option, the <code>feature:repo-add</code> command registers the features repository and installs all
+features described in this features repository:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:repo-add -i cellar</pre>
+</div>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__code_feature_repo_refresh_code"><code>feature:repo-refresh</code></h5>
+<div class="paragraph">
+<p>Apache Karaf parses the features repository XML when you register it (using <code>feature:repo-add</code> command or the FeatureMBean).
+If the features repository XML changes, you have to indicate to Apache Karaf to refresh the features repository to load the changes.</p>
+</div>
+<div class="paragraph">
+<p>The <code>feature:repo-refresh</code> command refreshes the features repository.</p>
+</div>
+<div class="paragraph">
+<p>Without argument, the command refreshes all features repository:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:repo-refresh
+Refreshing feature url mvn:org.ops4j.pax.cdi/pax-cdi-features/0.12.0/xml/features
+Refreshing feature url mvn:org.ops4j.pax.web/pax-web-features/4.1.4/xml/features
+Refreshing feature url mvn:org.apache.karaf.features/standard/4.0.0/xml/features
+Refreshing feature url mvn:org.apache.karaf.features/enterprise/4.0.0/xml/features
+Refreshing feature url mvn:org.apache.karaf.features/spring/4.0.0/xml/features</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Instead of refreshing all features repositories, you can specify the features repository to refresh, by providing the URL
+or the features repository name (and optionally version):</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:repo-refresh mvn:org.apache.karaf.features/standard/4.0.0/xml/features
+Refreshing feature url mvn:org.apache.karaf.features/standard/4.0.0/xml/features</pre>
+</div>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:repo-refresh cellar
+Refreshing feature url mvn:org.apache.karaf.cellar/apache-karaf-cellar/LATEST/xml/features</pre>
+</div>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__code_feature_repo_remove_code"><code>feature:repo-remove</code></h5>
+<div class="paragraph">
+<p>The <code>feature:repo-remove</code> command removes a features repository from the registered ones.</p>
+</div>
+<div class="paragraph">
+<p>The <code>feature:repo-remove</code> command requires a argument:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>the features repository name (as displayed in the repository column of the <code>feature:repo-list</code> command output)</p>
+</li>
+<li>
+<p>the features repository URL (as displayed in the URL column of the <code>feature:repo-list</code> command output)</p>
+</li>
+</ul>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:repo-remove karaf-cellar-4.0.0.RC1</pre>
+</div>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:repo-remove mvn:org.apache.karaf.cellar/apache-karaf-cellar/LATEST/xml/features</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>By default, the <code>feature:repo-remove</code> command just removes the features repository from the registered ones: it doesn&#8217;t
+uninstall the features provided by the features repository.</p>
+</div>
+<div class="paragraph">
+<p>If you use <code>-u</code> option, the <code>feature:repo-remove</code> command uninstalls all features described by the features repository:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:repo-remove -u karaf-cellar-4.0.0.RC1</pre>
+</div>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__code_feature_list_code"><code>feature:list</code></h5>
+<div class="paragraph">
+<p>The <code>feature:list</code> command lists all available features (provided by the different registered features repositories):</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>Name                          | Version                          | Required | State       | Repository               | Description
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+pax-cdi                       | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Provide CDI support
+pax-cdi-1.1                   | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Provide CDI 1.1 support
+pax-cdi-1.2                   | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Provide CDI 1.2 support
+pax-cdi-weld                  | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Weld CDI support
+pax-cdi-1.1-weld              | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Weld CDI 1.1 support
+pax-cdi-1.2-weld              | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Weld CDI 1.2 support
+pax-cdi-openwebbeans          | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | OpenWebBeans CDI support
+pax-cdi-web                   | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Web CDI support
+pax-cdi-1.1-web               | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Web CDI 1.1 support
+...</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If you want to order the features by alphabetical name, you can use the <code>-o</code> option:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:list -o
+Name                          | Version                          | Required | State       | Repository               | Description
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+deltaspike-core               | 1.2.1                            |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Apache Deltaspike core support
+deltaspike-data               | 1.2.1                            |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Apache Deltaspike data support
+deltaspike-jpa                | 1.2.1                            |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Apache Deltaspike jpa support
+deltaspike-partial-bean       | 1.2.1                            |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Apache Deltaspike partial bean support
+pax-cdi                       | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Provide CDI support
+pax-cdi-1.1                   | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Provide CDI 1.1 support
+pax-cdi-1.1-web               | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Web CDI 1.1 support
+pax-cdi-1.1-web-weld          | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Weld Web CDI 1.1 support
+pax-cdi-1.1-weld              | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Weld CDI 1.1 support
+pax-cdi-1.2                   | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Provide CDI 1.2 support
+...</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>By default, the <code>feature:list</code> command displays all features, whatever their current state (installed or not installed).</p>
+</div>
+<div class="paragraph">
+<p>Using the <code>-i</code> option displays only installed features:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:list -i
+Name            | Version | Required | State   | Repository     | Description
+-------------------------------------------------------------------------------------------------------------------
+aries-proxy     | 4.0.0   |          | Started | standard-4.0.0 | Aries Proxy
+aries-blueprint | 4.0.0   | x        | Started | standard-4.0.0 | Aries Blueprint
+feature         | 4.0.0   | x        | Started | standard-4.0.0 | Features Support
+shell           | 4.0.0   | x        | Started | standard-4.0.0 | Karaf Shell
+shell-compat    | 4.0.0   | x        | Started | standard-4.0.0 | Karaf Shell Compatibility
+deployer        | 4.0.0   | x        | Started | standard-4.0.0 | Karaf Deployer
+bundle          | 4.0.0   | x        | Started | standard-4.0.0 | Provide Bundle support
+config          | 4.0.0   | x        | Started | standard-4.0.0 | Provide OSGi ConfigAdmin support
+diagnostic      | 4.0.0   | x        | Started | standard-4.0.0 | Provide Diagnostic support
+instance        | 4.0.0   | x        | Started | standard-4.0.0 | Provide Instance support
+jaas            | 4.0.0   | x        | Started | standard-4.0.0 | Provide JAAS support
+log             | 4.0.0   | x        | Started | standard-4.0.0 | Provide Log support
+package         | 4.0.0   | x        | Started | standard-4.0.0 | Package commands and mbeans
+service         | 4.0.0   | x        | Started | standard-4.0.0 | Provide Service support
+system          | 4.0.0   | x        | Started | standard-4.0.0 | Provide System support
+kar             | 4.0.0   | x        | Started | standard-4.0.0 | Provide KAR (KARaf archive) support
+ssh             | 4.0.0   | x        | Started | standard-4.0.0 | Provide a SSHd server on Karaf
+management      | 4.0.0   | x        | Started | standard-4.0.0 | Provide a JMX MBeanServer and a set of MBeans in
+wrap            | 0.0.0   | x        | Started | standard-4.0.0 | Wrap URL handler</pre>
+</div>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__code_feature_install_code"><code>feature:install</code></h5>
+<div class="paragraph">
+<p>The <code>feature:install</code> command installs a feature.</p>
+</div>
+<div class="paragraph">
+<p>It requires the <code>feature</code> argument. The <code>feature</code> argument is the name of the feature, or the name/version of the feature.
+If only the name of the feature is provided (not the version), the latest version available will be installed.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:install eventadmin</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>We can simulate an installation using <code>-t</code> or <code>--simulate</code> option: it just displays what it would do, but it doesn&#8217;t do it:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:install -t -v eventadmin
+Adding features: eventadmin/[4.0.0,4.0.0]
+No deployment change.
+  Managing bundle:
+    org.apache.felix.metatype / 1.0.12</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You can specify a feature version to install:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:install eventadmin/4.0.0</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>By default, the <code>feature:install</code> command is not verbose. If you want to have some details about actions performed by the <code>feature:install</code>
+command, you can use the <code>-v</code> option:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:install -v eventadmin
+Adding features: eventadmin/[4.0.0,4.0.0]
+No deployment change.
+Done.</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If a feature contains a bundle which is already installed, by default, Apache Karaf will refresh this bundle.
+Sometime, this refresh can cause issue to other running applications. If you want to disable the auto-refresh of installed
+bundles, you can use the <code>-r</code> option:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:install -v -r eventadmin
+Adding features: eventadmin/[4.0.0,4.0.0]
+No deployment change.
+Done.</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You can decide to not start the bundles installed by a feature using the <code>-s</code> or <code>--no-auto-start</code> option:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:install -s eventadmin</pre>
+</div>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__code_feature_start_code"><code>feature:start</code></h5>
+<div class="paragraph">
+<p>By default, when you install a feature, it&#8217;s automatically installed. However, you can specify the <code>-s</code> option to the <code>feature:install</code> command.</p>
+</div>
+<div class="paragraph">
+<p>As soon as you install a feature (started or not), all packages provided by the bundles defined in the feature will be available, and can be used for
+the wiring in other bundles.</p>
+</div>
+<div class="paragraph">
+<p>When starting a feature, all bundles are started, and so, the feature also exposes the services.</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__code_feature_stop_code"><code>feature:stop</code></h5>
+<div class="paragraph">
+<p>You can also stop a feature: it means that all services provided by the feature will be stop and removed from the service registry. However, the packages
+are still available for the wiring (the bundles are in resolved state).</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__code_feature_uninstall_code"><code>feature:uninstall</code></h5>
+<div class="paragraph">
+<p>The <code>feature:uninstall</code> command uninstalls a feature. As the <code>feature:install</code> command, the <code>feature:uninstall</code> command
+requires the <code>feature</code> argument. The <code>feature</code> argument is the name of the feature, or the name/version of the feature.
+If only the name of the feature is provided (not the version), the latest version available will be installed.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()&gt; feature:uninstall eventadmin</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The features resolver is involved during feature uninstallation: transitive features installed by the uninstalled feature can be uninstalled
+themselves if not used by other feature.</p>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_deployer">Deployer</h4>
+<div class="paragraph">
+<p>You can "hot deploy" a features XML by dropping the file directly in the <code>deploy</code> folder.</p>
+</div>
+<div class="paragraph">
+<p>Apache Karaf provides a features deployer.</p>
+</div>
+<div class="paragraph">
+<p>When you drop a features XML in the deploy folder, the features deployer does:
+* register the features XML as a features repository
+* the features with <code>install</code> attribute set to "auto" will be automatically installed by the features deployer.</p>
+</div>
+<div class="paragraph">
+<p>For instance, dropping the following XML in the deploy folder will automatically install feature1 and feature2, whereas
+feature3 won&#8217;t be installed:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;features name="my-features" xmlns="http://karaf.apache.org/xmlns/features/v1.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.3.0 http://karaf.apache.org/xmlns/features/v1.3.0"&gt;
+
+    &lt;feature name="feature1" version="1.0" install="auto"&gt;
+        ...
+    &lt;/feature&gt;
+
+    &lt;feature name="feature2" version="1.0" install="auto"&gt;
+        ...
+    &lt;/feature&gt;
+
+    &lt;feature name="feature3" version="1.0"&gt;
+        ...
+    &lt;/feature&gt;
+
+&lt;/features&gt;</pre>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_jmx_featurembean">JMX FeatureMBean</h4>
+<div class="paragraph">
+<p>On the JMX layer, you have a MBean dedicated to the management of the features and features repositories: the FeatureMBean.</p>
+</div>
+<div class="paragraph">
+<p>The FeatureMBean object name is: <code>org.apache.karaf:type=feature,name=*</code>.</p>
+</div>
+<div class="sect4">
+<h5 id="_attributes">Attributes</h5>
+<div class="paragraph">
+<p>The FeatureMBean provides two attributes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>Features</code> is a tabular data set of all features available.</p>
+</li>
+<li>
+<p><code>Repositories</code> is a tabular data set of all registered features repositories.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The <code>Repositories</code> attribute provides the following information:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>Name</code> is the name of the features repository.</p>
+</li>
+<li>
+<p><code>Uri</code> is the URI to the features XML for this repository.</p>
+</li>
+<li>
+<p><code>Features</code> is a tabular data set of all features (name and version) provided by this features repository.</p>
+</li>
+<li>
+<p><code>Repositories</code> is a tabular data set of features repositories "imported" in this features repository.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The <code>Features</code> attribute provides the following information:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>Name</code> is the name of the feature.</p>
+</li>
+<li>
+<p><code>Version</code> is the version of the feature.</p>
+</li>
+<li>
+<p><code>Installed</code> is a boolean. If true, it means that the feature is currently installed.</p>
+</li>
+<li>
+<p><code>Bundles</code> is a tabular data set of all bundles (bundles URL) described in the feature.</p>
+</li>
+<li>
+<p><code>Configurations</code> is a tabular data set of all configurations described in the feature.</p>
+</li>
+<li>
+<p><code>Configuration Files</code> is a tabular data set of all configuration files described in the feature.</p>
+</li>
+<li>
+<p><code>Dependencies</code> is a tabular data set of all dependent features described in the feature.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_operations">Operations</h5>
+<div class="ulist">
+<ul>
+<li>
+<p><code>addRepository(url)</code> adds the features repository with the <code>url</code>. The <code>url</code> can be a <code>name</code> as in the <code>feature:repo-add</code> command.</p>
+</li>
+<li>
+<p><code>addRepository(url, install)</code> adds the features repository with the <code>url</code> and automatically installs all bundles if <code>install</code> is true. The <code>url</code> can be a <code>name</code> like in the <code>feature:repo-add</code> command.</p>
+</li>
+<li>
+<p><code>removeRepository(url)</code> removes the features repository with the <code>url</code>. The <code>url</code> can be a <code>name</code> as in the <code>feature:repo-remove</code> command.</p>
+</li>
+<li>
+<p><code>installFeature(name)</code> installs the feature with the <code>name</code>.</p>
+</li>
+<li>
+<p><code>installFeature(name, version)</code> installs the feature with the <code>name</code> and <code>version</code>.</p>
+</li>
+<li>
+<p><code>installFeature(name, noClean, noRefresh)</code> installs the feature with the <code>name</code> without cleaning the bundles in case of failure, and without refreshing already installed bundles.</p>
+</li>
+<li>
+<p><code>installFeature(name, version, noClean, noRefresh) ` installs the feature with the `name</code> and <code>version</code> without cleaning the bundles in case of failure, and without refreshing already installed bundles.</p>
+</li>
+<li>
+<p><code>uninstallFeature(name)</code> uninstalls the feature with the <code>name</code>.</p>
+</li>
+<li>
+<p><code>uninstallFeature(name, version)</code> uninstalls the feature with the <code>name</code> and <code>version</code>.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_notifications">Notifications</h5>
+<div class="paragraph">
+<p>The FeatureMBean sends two kind of notifications (on which you can subscribe and react):</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>When a feature repository changes (added or removed).</p>
+</li>
+<li>
+<p>When a feature changes (installed or uninstalled).</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Last updated 2016-04-28 09:56:45 CEST
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file