servicemix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache ServiceMix: servicemix-wsn2005 (page edited)
Date Mon, 20 Oct 2008 06:57: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/SM">SM</a> :
            <a href="http://cwiki.apache.org/confluence/display/SM/servicemix-wsn2005">servicemix-wsn2005</a>
        </span>
    </div>

     <p>
        <a href="http://cwiki.apache.org/confluence/display/SM/servicemix-wsn2005">servicemix-wsn2005</a>
        has been edited by             <a href="http://cwiki.apache.org/confluence/display/~gnodet">Guillaume Nodet</a>
            <span class="smallfont">(Oct 19, 2008)</span>.
     </p>
    
     <p>
                 <a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=38966&originalVersion=16&revisedVersion=17">(View changes)</a>
     </p>

    <span class="label">Content:</span><br/>
    <div class="greybox wiki-content"><style type='text/css'>/*<![CDATA[*/
table.ScrollbarTable  {border: none;padding: 3px;width: 100%;padding: 3px;margin: 0px;background-color: #f0f0f0}
table.ScrollbarTable td.ScrollbarPrevIcon {text-align: center;width: 16px;border: none;}
table.ScrollbarTable td.ScrollbarPrevName {text-align: left;border: none;}
table.ScrollbarTable td.ScrollbarParent {text-align: center;border: none;}
table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 16px;border: none;}

/*]]>*/</style><div class="Scrollbar"><table class='ScrollbarTable'><tr><td class='ScrollbarPrevIcon'><a href="/confluence/display/SM/servicemix-validation"><img border='0' align='middle' src='/confluence/images/icons/back_16.gif' width='16' height='16'></a></td><td width='33%' class='ScrollbarPrevName'><a href="/confluence/display/SM/servicemix-validation">servicemix-validation</a>&nbsp;</td><td width='33%' class='ScrollbarParent'><sup><a href="/confluence/display/SM/JBI+Components"><img border='0' align='middle' src='/confluence/images/icons/up_16.gif' width='8' height='8'></a></sup><a href="/confluence/display/SM/JBI+Components">JBI Components</a></td><td width='33%' class='ScrollbarNextName'>&nbsp;<a href="/confluence/display/SM/servicemix-xmpp">servicemix-xmpp</a></td><td class='ScrollbarNextIcon'><a href="/confluence/display/SM/servicemix-xmpp"><img border='0' align='middle' src='/confluence/images/icons/forwd_16.gif' width='16' height='16'></a></td></tr></table></div>
<p><a name="servicemix-wsn2005-top"></a></p>

<h1><a name="servicemix-wsn2005-Theservicemixwsn2005JBIComponent"></a>The servicemix-wsn2005 JBI Component </h1>

<p>The <tt>servicemix-wsn2005</tt> is a standard JBI Service Engine which implements the <span class="nobr"><a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsn" title="Visit page outside Confluence" rel="nofollow">WS-Notification<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> specification from Oasis.</p>

<h2><a name="servicemix-wsn2005-Overview"></a>Overview</h2>

<p>While this article does not intend to be a review of the WS-Notification specification, here is a few terms you need to fully understand:</p>
<ul>
	<li><b>Subscriber</b></li>
	<li><b>Publisher</b></li>
	<li><b>Subscription</b></li>
	<li><b>Publishing request</b></li>
	<li><b>Broker</b></li>
	<li><b>PullPoint</b></li>
</ul>


<p>The current implementation has several limitations:</p>
<ul>
	<li>subscriptions are not persistent: message will be lost if the subscriber can not be reached</li>
	<li>subscriptions can not be clustered: if you register the same subscriber in a cluster, each node will receive all notifications</li>
	<li>publishing can not be restricted to registered publishers: everyone can publish through an anonymous publisher</li>
</ul>


<p>You will also find some informations on the examples that ship with the distribution <a href="/confluence/display/SM/WS-Notification+HTTP+Binding" title="WS-Notification HTTP Binding">here</a> and <a href="/confluence/display/SM/WS-Notification+Clustered" title="WS-Notification Clustered">here</a>.  Make sure to check this <a href="/confluence/display/SM/example+scenario" title="example scenario">example scenario</a> too.</p>

<h2><a name="servicemix-wsn2005-UsageScenario"></a>Usage Scenario</h2>

<p>The WS-Notification SE can be used to provide publish/subscribe routing in the JBI bus. There are several usage:</p>
<ul>
	<li><a href="#servicemix-wsn2005-ConfigurationusingJBIpackaging" title="Configuration using JBI packaging on servicemix-wsn2005">configuration using JBI packaging</a></li>
	<li><a href="#servicemix-wsn2005-DynamicconfigurationinsidetheJBIbus" title="Dynamic configuration inside the JBI bus on servicemix-wsn2005">dynamic configuration inside the JBI bus</a></li>
	<li><a href="#servicemix-wsn2005-OutsidetheJBIbus" title="Outside the JBI bus on servicemix-wsn2005">outside the JBI bus</a></li>
	<li><a href="#servicemix-wsn2005-EmbeddingWSNotification" title="Embedding WS-Notification on servicemix-wsn2005">embedding WS-Notification SE</a></li>
</ul>


<h3><a name="servicemix-wsn2005-ConfigurationusingJBIpackaging"></a>Configuration using JBI packaging</h3>

<p>The <tt>servicemix-wsn2005</tt> accepts deployment of Service Units.<br/>
The SU must contain one or more files with an xml extension, each one containing a single WS-Notification request.  The currently supported set of requests include:</p>
<ul>
	<li><a href="#servicemix-wsn2005-Subscribe" title="Subscribe on servicemix-wsn2005">Subscribe</a></li>
	<li><a href="#servicemix-wsn2005-CreatePullPoint" title="CreatePullPoint on servicemix-wsn2005">CreatePullPoint</a></li>
</ul>


<p>The requests will be started in this very order, so that you can create a PullPoint and create a Subscription for it inside the same service unit.</p>

<h3><a name="servicemix-wsn2005-DynamicconfigurationinsidetheJBIbus"></a>Dynamic configuration inside the JBI bus</h3>

<p>In addition to the deployment of service units, you can also create pull points or subscriptions dynamically from inside the JBI bus by using a simple API.</p>

<p>To create a subscription for a given JBI endpoint, you can use the following code:</p>
<div class="code"><div class="codeContent">
<pre class="code-java">QName service = ...;
<span class="code-object">String</span> endpoint = ...;
<span class="code-object">String</span> topic = ...;
NotificationBroker wsnBroker = <span class="code-keyword">new</span> NotificationBroker(getContext());
EndpointReferenceType consumer = <span class="code-keyword">new</span> EndpointReferenceType();
consumer.setAddress(<span class="code-keyword">new</span> AttributedURIType());
consumer.getAddress().setValue(service.getNamespaceURI() + <span class="code-quote">"/"</span> + service.getLocalPart() + <span class="code-quote">"/"</span> + endpoint);
wsnBroker.subscribe(consumer, topic);</pre>
</div></div>

<p>To publish a message on a given topic:</p>
<div class="code"><div class="codeContent">
<pre class="code-java"><span class="code-object">String</span> topic = ...;
NotificationBroker wsnBroker = <span class="code-keyword">new</span> NotificationBroker(getContext());
wsnBroker.notify(topic, message);</pre>
</div></div>
<p>where <tt>message</tt> is a DOM element.</p>

<p>You can also create pull points and subscriptions for them:</p>
<div class="code"><div class="codeContent">
<pre class="code-java">CreatePullPoint wsnCreatePullPoint = <span class="code-keyword">new</span> CreatePullPoint(getContext());
PullPoint pullPoint = wsnCreatePullPoint.createPullPoint();
NotificationBroker wsnBroker = <span class="code-keyword">new</span> NotificationBroker(getContext());
wsnBroker.subscribe(pullPoint.getEndpoint(), topic);</pre>
</div></div>

<p>Later, you can pull notifications from this pull point:</p>
<div class="code"><div class="codeContent">
<pre class="code-java">List&lt;NotificationMessageHolderType&gt; msgs = pullPoint.getMessages(0);</pre>
</div></div>

<h3><a name="servicemix-wsn2005-OutsidetheJBIbus"></a>Outside the JBI bus</h3>

<p>If you want to use WS-Notification ouside the JBI world, you will need to be able to receive incoming requests or send notifications to the external services.  This must be done through by using Binding Components, either using HTTP or JMS.</p>

<p>To expose the NotificationBroker and CreatePullPoint services using HTTP/SOAP, you can deploy the following configuration file to <a href="/confluence/display/SM/servicemix-http" title="servicemix-http"><tt>servicemix-http</tt></a>:</p>
<div class="code"><div class="codeContent">
<pre class="code-xml">&lt;beans <span class="code-keyword">xmlns:http</span>=<span class="code-quote">"http://servicemix.apache.org/http/1.0"</span>
       <span class="code-keyword">xmlns:wsn</span>=<span class="code-quote">"http://servicemix.org/wsnotification"</span>&gt;

  &lt;http:endpoint service=<span class="code-quote">"wsn:NotificationBroker"</span>
                 endpoint=<span class="code-quote">"http-binding"</span>
                 targetService=<span class="code-quote">"wsn:NotificationBroker"</span>
                 targetEndpoint=<span class="code-quote">"Broker"</span>
                 role=<span class="code-quote">"consumer"</span>
                 locationURI=<span class="code-quote">"http://localhost:8192/Broker/"</span>
                 defaultMep=<span class="code-quote">"http://www.w3.org/2004/08/wsdl/in-out"</span> 
                 soap=<span class="code-quote">"true"</span>/&gt;	               

  &lt;http:endpoint service=<span class="code-quote">"wsn:CreatePullPoint"</span>
                 endpoint=<span class="code-quote">"http-binding2"</span>
                 targetService=<span class="code-quote">"wsn:CreatePullPoint"</span>
                 targetEndpoint=<span class="code-quote">"Broker"</span>
                 role=<span class="code-quote">"consumer"</span>
                 locationURI=<span class="code-quote">"http://localhost:8192/CreatePullPoint/"</span>
                 defaultMep=<span class="code-quote">"http://www.w3.org/2004/08/wsdl/in-out"</span>
                 soap=<span class="code-quote">"true"</span>/&gt;

<span class="code-tag">&lt;/beans&gt;</span></pre>
</div></div>

<h3><a name="servicemix-wsn2005-EmbeddingWSNotification"></a>Embedding WS-Notification</h3>

<p>If you use a single static configuration file for ServiceMix, you can easily leverage this component to create subscription, pull-points and publish messages.</p>

<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-keyword">xmlns:sm</span>=<span class="code-quote">"http://servicemix.apache.org/config/1.0"</span>
  <span class="code-keyword">xmlns:wsn</span>=<span class="code-quote">"http://servicemix.apache.org/wsn/1.0"</span> 
  <span class="code-keyword">xmlns:test</span>=<span class="code-quote">"http://servicemix.org/test"</span>

<span class="code-tag">&lt;sm:activationSpec id=<span class="code-quote">"receiver"</span> service=<span class="code-quote">"test:service"</span> endpoint=<span class="code-quote">"endpoint"</span>&gt;</span>
  <span class="code-tag">&lt;sm:component&gt;</span>
    <span class="code-tag">&lt;bean class=<span class="code-quote">"org.apache.servicemix.tck.ReceiverComponent"</span> /&gt;</span>
  <span class="code-tag">&lt;/sm:component&gt;</span>
<span class="code-tag">&lt;/sm:activationSpec&gt;</span>

<span class="code-tag">&lt;sm:activationSpec&gt;</span>
  <span class="code-tag">&lt;sm:component&gt;</span>
    <span class="code-tag">&lt;wsn:component&gt;</span>
      <span class="code-tag">&lt;wsn:requests&gt;</span>
        <span class="code-tag">&lt;wsn:subscribe consumer=<span class="code-quote">"http://servicemix.org/test/service/endpoint"</span> topic=<span class="code-quote">"myTopic"</span> /&gt;</span>
      <span class="code-tag">&lt;/wsn:requests&gt;</span>
    <span class="code-tag">&lt;/wsn:component&gt;</span>
  <span class="code-tag">&lt;/sm:component&gt;</span>
<span class="code-tag">&lt;/sm:activationSpec&gt;</span>

<span class="code-tag">&lt;sm:activationSpec service=<span class="code-quote">"test:publisher"</span> endpoint=<span class="code-quote">"endpoint"</span>&gt;</span>
  <span class="code-tag">&lt;sm:component&gt;</span>
    <span class="code-tag">&lt;wsn:publisher topic=<span class="code-quote">"myTopic"</span> /&gt;</span>
  <span class="code-tag">&lt;/sm:component&gt;</span>
<span class="code-tag">&lt;/sm:activationSpec&gt;</span></pre>
</div></div>

<p>The above code snippet creates a publisher proxy, a subscription and a subscriber.</p>

<p>The publisher proxy is a simple component that wraps incoming JBI exchanges into WS-Notification <a href="#servicemix-wsn2005-Notify" title="Notify on servicemix-wsn2005"><tt>notify</tt></a> requests and send them to a notification broker on the given topic.  This could also be written in plain spring style:</p>
<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;sm:activationSpec service=<span class="code-quote">"test:publisher"</span> endpoint=<span class="code-quote">"endpoint"</span>&gt;</span>
  <span class="code-tag">&lt;sm:component&gt;</span>
    <span class="code-tag">&lt;bean class=<span class="code-quote">"org.apache.servicemix.wsn.spring.PublisherComponent"</span>&gt;</span>
      <span class="code-tag">&lt;property name=<span class="code-quote">"topic"</span> value=<span class="code-quote">"myTopic"</span> /&gt;</span>
    <span class="code-tag">&lt;/bean&gt;</span>
  <span class="code-tag">&lt;/sm:component&gt;</span>
<span class="code-tag">&lt;/sm:activationSpec&gt;</span></pre>
</div></div>

<p>When the component is started, it registers itself as a publisher to the WS-Notification broker.  To do so, it activates a JBI endpoint named <tt>subscription</tt> so it can handle demand based publishing. When this component receives an InOnly exchange, let's say <tt>&lt;hello&gt;world&lt;/hello&gt;</tt>, it will wrap it in a request as shown <a href="#servicemix-wsn2005-Notify" title="Notify on servicemix-wsn2005">here</a> and send the request as an InOnly exchange to the NotifiationBroker.  Note that, as this component activates two JBI endpoints, you need to explicitely target the endpoint specified in the activationSpec when sending a message.</p>

<p>The subscription is created inside a <tt>servicemix-wsn2005</tt> component.  You must fill the <tt>consumer</tt> and <tt>topic</tt> properties, where the <tt>consumer</tt> is the URI-encoded target JBI endpoint, which will be resolved to the first component activated. You could also use the plain spring syntax:</p>
<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;sm:activationSpec&gt;</span>
  <span class="code-tag">&lt;sm:component&gt;</span>
    <span class="code-tag">&lt;bean class=<span class="code-quote">"org.apache.servicemix.wsn.spring.WSNSpringComponent"</span>&gt;</span>
      <span class="code-tag">&lt;property name=<span class="code-quote">"requests"</span>&gt;</span>
        <span class="code-tag">&lt;list&gt;</span>
          <span class="code-tag">&lt;bean class=<span class="code-quote">"org.apache.servicemix.wsn.spring.SubscribeFactoryBean"</span>&gt;</span>
            <span class="code-tag">&lt;property name=<span class="code-quote">"consumer"</span> value=<span class="code-quote">"http://servicemix.org/test/service/endpoint"</span> /&gt;</span>
            <span class="code-tag">&lt;property name=<span class="code-quote">"topic"</span> value=<span class="code-quote">"myTopic"</span> /&gt;</span>
          <span class="code-tag">&lt;/bean&gt;</span>
        <span class="code-tag">&lt;/list&gt;</span>
      <span class="code-tag">&lt;/property&gt;</span>
    <span class="code-tag">&lt;/bean&gt;</span>
  <span class="code-tag">&lt;/sm:component&gt;</span>
<span class="code-tag">&lt;/sm:activationSpec&gt;</span></pre>
</div></div>

<h2><a name="servicemix-wsn2005-WSNotificationmessages"></a>WS-Notification messages</h2>

<p>The following xml snippets are just examples of WS-Notification requests.  You should refer to the <span class="nobr"><a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsn" title="Visit page outside Confluence" rel="nofollow">specification<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> for more informations.</p>

<h3><a name="servicemix-wsn2005-Subscribe"></a>Subscribe</h3>

<div class="code"><div class="codeContent">
<pre class="code-xml">&lt;wsnt:Subscribe
  <span class="code-keyword">xmlns:wsnt</span>=<span class="code-quote">"http://docs.oasis-open.org/wsn/b-2"</span>
  <span class="code-keyword">xmlns:wsa</span>=<span class="code-quote">"http://www.w3.org/2005/08/addressing"</span>&gt;
  <span class="code-tag">&lt;wsnt:ConsumerReference&gt;</span>
    <span class="code-tag">&lt;wsa:Address&gt;</span>
      endpoint:http://www.consumer.org/service/endpoint
    <span class="code-tag">&lt;/wsa:Address&gt;</span>
  <span class="code-tag">&lt;/wsnt:ConsumerReference&gt;</span>
  <span class="code-tag">&lt;wsnt:Filter&gt;</span>
    <span class="code-tag"><span class="code-comment">&lt;!-- Optional Topic Express Filter --&gt;</span></span>
    <span class="code-tag">&lt;wsnt:TopicExpression Dialect=<span class="code-quote">"http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple"</span>&gt;</span>
       myTopic
    <span class="code-tag">&lt;/wsnt:TopicExpression&gt;</span>
    <span class="code-tag"><span class="code-comment">&lt;!-- Optional Message Content Filter --&gt;</span></span>
    <span class="code-tag">&lt;wsnt:MessageContent Dialect=<span class="code-quote">"http://www.w3.org/TR/1999/REC-xpath-19991116"</span>&gt;</span>
      //hello/@id=123
    <span class="code-tag">&lt;wsnt:MessageContent&gt;</span>
  <span class="code-tag">&lt;/wsnt:Filter&gt;</span>
<span class="code-tag">&lt;/wsnt:Subscribe&gt;</span></pre>
</div></div>

<p>This request will create a subscription on the <em>myTopic</em> topic and will send messages to the JBI endpoint identified by its <a href="/confluence/display/SM/URIs" title="URIs">URI</a>.  In this case, the <em>endpoint:</em> protocol is used to identify an endpoint on the JBI bus.</p>

<h3><a name="servicemix-wsn2005-CreatePullPoint"></a>CreatePullPoint</h3>

<div class="code"><div class="codeContent">
<pre class="code-xml">&lt;wsnt:CreatePullPoint 
  <span class="code-keyword">xmlns:wsnt</span>=<span class="code-quote">"http://docs.oasis-open.org/wsn/b-2"</span>
  <span class="code-keyword">xmlns:sm</span>=<span class="code-quote">"http://servicemix.apache.org/wsn2005/1.0"</span>&gt;
  <span class="code-tag">&lt;sm:address&gt;</span> 
    http://www.consumer.org/service/endpoint
  <span class="code-tag">&lt;/sm:address&gt;</span>
  <span class="code-tag">&lt;sm:name&gt;</span>myPullPoint<span class="code-tag">&lt;/sm:name&gt;</span>
<span class="code-tag">&lt;/wsnt:CreatePullPoint&gt;</span></pre>
</div></div>

<p>Note that the <tt>&lt;sm:address/&gt;</tt> element is a ServiceMix extension that creates a PullPoint on a specific JBI endpoint ([namespace][sep][service][sep][endpoint], see <a href="/confluence/display/SM/URIs" title="URIs">URIs</a>).  This is very useful when you want to create a subscription for this endpoint at deployment time (see the previous paragraph).</p>

<p>The <tt>&lt;sm:name/&gt;</tt> element is a second ServiceMix extension that can be used to specify the name of the PullPoint. Such a name is used as JMS queue name, so it may be useful to specify it if you want to address a specific queue.  If none is set, a queue name will be automatically generated (note that some JMS providers may require some administration tasks to be performed to create a JMS destination).</p>

<h3><a name="servicemix-wsn2005-Notify"></a>Notify</h3>

<p>The Notify request is sent by a publisher to the NotificationBroker. This request contains a list of NotificationMessage, each one containing:</p>
<ul>
	<li>a subscription reference (not used)</li>
	<li>a topic (mandatory)</li>
	<li>a producer reference (which may contain the address of the producer that created the message)</li>
	<li>the message</li>
</ul>


<p>Below is an example of a such a request.</p>

<div class="code"><div class="codeContent">
<pre class="code-xml">&lt;wsnt:Notify 
  <span class="code-keyword">xmlns:wsnt</span>=<span class="code-quote">"http://docs.oasis-open.org/wsn/b-2"</span>&gt;
  <span class="code-tag">&lt;wsnt:NotificationMessage&gt;</span>
    <span class="code-tag">&lt;wsnt:Topic&gt;</span>myTopic<span class="code-tag">&lt;/wsnt:Topic&gt;</span>
    <span class="code-tag">&lt;wsnt:Message&gt;</span>
      <span class="code-tag">&lt;hello&gt;</span>world<span class="code-tag">&lt;/hello&gt;</span>
    <span class="code-tag">&lt;/wsnt:Message&gt;</span>
  <span class="code-tag">&lt;/wsnt:NotificationMessage&gt;</span>
<span class="code-tag">&lt;/wsnt:Notify&gt;</span></pre>
</div></div>

<style type='text/css'>/*<![CDATA[*/
table.ScrollbarTable  {border: none;padding: 3px;width: 100%;padding: 3px;margin: 0px;background-color: #f0f0f0}
table.ScrollbarTable td.ScrollbarPrevIcon {text-align: center;width: 16px;border: none;}
table.ScrollbarTable td.ScrollbarPrevName {text-align: left;border: none;}
table.ScrollbarTable td.ScrollbarParent {text-align: center;border: none;}
table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 16px;border: none;}

/*]]>*/</style><div class="Scrollbar"><table class='ScrollbarTable'><tr><td class='ScrollbarPrevIcon'><a href="/confluence/display/SM/servicemix-validation"><img border='0' align='middle' src='/confluence/images/icons/back_16.gif' width='16' height='16'></a></td><td width='33%' class='ScrollbarPrevName'><a href="/confluence/display/SM/servicemix-validation">servicemix-validation</a>&nbsp;</td><td width='33%' class='ScrollbarParent'><sup><a href="/confluence/display/SM/JBI+Components"><img border='0' align='middle' src='/confluence/images/icons/up_16.gif' width='8' height='8'></a></sup><a href="/confluence/display/SM/JBI+Components">JBI Components</a></td><td width='33%' class='ScrollbarNextName'>&nbsp;<a href="/confluence/display/SM/servicemix-xmpp">servicemix-xmpp</a></td><td class='ScrollbarNextIcon'><a href="/confluence/display/SM/servicemix-xmpp"><img border='0' align='middle' src='/confluence/images/icons/forwd_16.gif' width='16' height='16'></a></td></tr></table></div><
 /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