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-jms (page edited)
Date Wed, 30 Jan 2008 20:51: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-jms">servicemix-jms</a>
        </span>
    </div>

     <p>
        <a href="http://cwiki.apache.org/confluence/display/SM/servicemix-jms">servicemix-jms</a>
        has been edited by             <a href="http://cwiki.apache.org/confluence/display/~bsnyder">Bruce Snyder</a>
            <span class="smallfont">(Jan 30, 2008)</span>.
     </p>
    
     <p>
                 <a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=39006&originalVersion=13&revisedVersion=14">(View changes)</a>
     </p>

    <span class="label">Content:</span><br/>
    <div class="greybox wiki-content"><h1><a name="servicemix-jms-servicemixjms"></a>servicemix-jms</h1>

<p>ServiceMix ships with a JBI compliant JMS binding component named servicemix-jms.</p>

<p>Here are the main features:</p>
<ul>
	<li>JBI compliant Binding Component</li>
	<li>Usable in a lightweight mode in servicemix.xml configuration files</li>
	<li>SOAP 1.1 and 1.2 support</li>
	<li>MIME attachments</li>
	<li>WS-Addressing support</li>
	<li>WSDL based and XBean based deployments</li>
	<li>Support for all MEPs as consumers or providers</li>
</ul>


<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Newer JMS Endpoints Available</b><br />
<p>There are newer JMS endpoints available. See the <a href="/confluence/display/SM/servicemix-jms+new+endpoints" title="servicemix-jms new endpoints">servicemix&#45;jms new endpoints</a> document for more information. </p></td></tr></table>

<h2><a name="servicemix-jms-Installation"></a>Installation</h2>

<p>Installing the servicemix-jms component can be done in several ways:</p>
<ul>
	<li>drop the installer zip in an hotdeploy directory monitored by ServiceMix</li>
	<li>using <a href="/confluence/display/SM/Ant+Tasks" title="Ant Tasks">ant tasks</a></li>
</ul>


<p>Note that when using ant tasks, the component is not started, you will have to start it manually using ant tasks or a console.</p>

<h2><a name="servicemix-jms-Configuration"></a>Configuration</h2>

<p>Several parameters can be configured using a JMX console.</p>
<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Configuration</b><br />
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Name </th>
<th class='confluenceTh'> Type </th>
<th class='confluenceTh'> Description </th>
<th class='confluenceTh'> Default </th>
</tr>
<tr>
<td class='confluenceTd'> userName </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> UserName used to create a connection </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> password </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> Password used to create a connection </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> jndiInitialContextFactory </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> Default JNDI InitialContext factory </td>
<td class='confluenceTd'> false </td>
</tr>
<tr>
<td class='confluenceTd'> jndiProviderUrl </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> Default JNDI provider url </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> jndiName </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> Default JNDI name to lookup the JMS ConnectionFactory </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
</tbody></table></td></tr></table>
<p>&nbsp;<br/>
&nbsp;</p>

<h2><a name="servicemix-jms-XBeandeployment"></a>XBean deployment</h2>

<p>You can deploy Service Units containing a file named xbean.xml for activating consumer and provider endpoints.</p>

<p>This xml file should respect the given syntax, though this is a spring based xml configuration file from where all beans of class <span class="nobr"><a href="http://servicemix.org/maven/servicemix-jms/apidocs/org/apache/servicemix/jms/JmsEndpoint.html" title="Visit page outside Confluence" rel="nofollow">JmsEndpoint<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> are retrieved.<br/>
See a full example <span class="nobr"><a href="http://svn.apache.org/repos/asf/incubator/servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-jms/src/test/resources/xbean/xbean.xml" title="Visit page outside Confluence" rel="nofollow">here<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>.&nbsp; Note that you have to define the jms namespace with</p>
<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;beans <span class="code-keyword">xmlns:jms</span>=<span class="code-quote">"http://servicemix.apache.org/jms/1.0"</span>&gt;</span>
    ...
<span class="code-tag">&lt;/beans&gt;</span></pre>
</div></div>
<p>Any numbers of endpoints can be specified in the xbean.xml file.</p>

<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>
<p>ServiceMix &gt;= 3.2 ships with new endpoints.  We encourage all users to use those.  They are described at <a href="/confluence/display/SM/servicemix-jms+new+endpoints" title="servicemix-jms new endpoints">servicemix&#45;jms new endpoints</a>.</p></td></tr></table>

<h3><a name="servicemix-jms-Consumerendpoint"></a>Consumer endpoint</h3>

<p>A consumer endpoint is a server-side http endpoint that will consumer plain JMS, or JMS+SOAP requests and send them into the NMR to a given JBI endpoint, which is called the proxied endpoint.</p>

<p>Following is an example of an jms consumer endpoint.</p>
<div class="code"><div class="codeContent">
<pre class="code-xml">&lt;jms:endpoint service=<span class="code-quote">"test:MyConsumerService"</span>
              endpoint=<span class="code-quote">"jms"</span>
              targetService=<span class="code-quote">"test:MyConsumerService"</span>
              targetEndpoint=<span class="code-quote">"myConsumer"</span>
              role=<span class="code-quote">"consumer"</span> 
              destinationStyle=<span class="code-quote">"queue"</span>
              jmsProviderDestinationName=<span class="code-quote">"queue/A"</span>
              jndiConnectionFactoryName=<span class="code-quote">"ConnectionFactory"</span>
              defaultMep=<span class="code-quote">"http://www.w3.org/2004/08/wsdl/in-out"</span>
              defaultOperation=<span class="code-quote">"test:Echo"</span> /&gt;</pre>
</div></div>
<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Consumer endpoint attributes</b><br />
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Name </th>
<th class='confluenceTh'> Type </th>
<th class='confluenceTh'> Description </th>
<th class='confluenceTh'> Required </th>
</tr>
<tr>
<td class='confluenceTd'> service </td>
<td class='confluenceTd'> QName </td>
<td class='confluenceTd'> the service name of the proxied endpoint </td>
<td class='confluenceTd'> yes </td>
</tr>
<tr>
<td class='confluenceTd'> endpoint </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> the endpoint name of the proxied endpoint </td>
<td class='confluenceTd'> yes </td>
</tr>
<tr>
<td class='confluenceTd'> interfaceName </td>
<td class='confluenceTd'> QName </td>
<td class='confluenceTd'> the interface name of the proxied endpoint </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> targetService </td>
<td class='confluenceTd'> QName </td>
<td class='confluenceTd'> the service name of the target endpoint </td>
<td class='confluenceTd'> no (defaults to the service attribute) </td>
</tr>
<tr>
<td class='confluenceTd'> targetEndpoint </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> the endpoint name of the target endpoint </td>
<td class='confluenceTd'> no (defaults to the endpoint attribute) </td>
</tr>
<tr>
<td class='confluenceTd'> targetInterfaceName </td>
<td class='confluenceTd'> QName </td>
<td class='confluenceTd'> the interface name of the target endpoint </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> role </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> must be 'consumer' </td>
<td class='confluenceTd'> yes </td>
</tr>
<tr>
<td class='confluenceTd'> defaultMEP </td>
<td class='confluenceTd'> URI </td>
<td class='confluenceTd'> the default MEP uri to use </td>
<td class='confluenceTd'> no </td>
</tr>
<tr>
<td class='confluenceTd'> defaultOperation </td>
<td class='confluenceTd'> QName </td>
<td class='confluenceTd'> the default operation name to set on the JBI exchange. if not set, it defaults to the QName of the root xml element </td>
<td class='confluenceTd'> no </td>
</tr>
<tr>
<td class='confluenceTd'> soap </td>
<td class='confluenceTd'> boolean </td>
<td class='confluenceTd'> if set, the component will parse the soap requests and send the content into the NMR </td>
<td class='confluenceTd'> no (defaults to false) </td>
</tr>
<tr>
<td class='confluenceTd'> soapVersion </td>
<td class='confluenceTd'> string </td>
<td class='confluenceTd'> can be set to '1.1' to force the use of SOAP 1.1 messages </td>
<td class='confluenceTd'> no </td>
</tr>
<tr>
<td class='confluenceTd'> wsdlResource </td>
<td class='confluenceTd'> <span class="nobr"><a href="http://springframework.org/docs/api/org/springframework/core/io/Resource.html" title="Visit page outside Confluence" rel="nofollow">Spring resource<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> if set, the wsdl will be retrieved from the given Spring resource </td>
<td class='confluenceTd'> no </td>
</tr>
<tr>
<td class='confluenceTd'> initialContextFactory </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> the JNDI context factory class name </td>
<td class='confluenceTd'> no </td>
</tr>
<tr>
<td class='confluenceTd'> jndiProviderURL </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> the JNDI provide url </td>
<td class='confluenceTd'> no </td>
</tr>
<tr>
<td class='confluenceTd'> connectionFactory </td>
<td class='confluenceTd'> javax.jms.ConnectionFactory </td>
<td class='confluenceTd'> the connectionFactory to use.  This optional property can be used instead of using JNDI configuration </td>
<td class='confluenceTd'> no </td>
</tr>
<tr>
<td class='confluenceTd'> jndiConnectionFactoryName </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> the JNDI name of the JMS ConnectionFactory to lookup </td>
<td class='confluenceTd'> yes (unless a default one is provided on the jms component configuration) </td>
</tr>
<tr>
<td class='confluenceTd'> destination </td>
<td class='confluenceTd'> javax.jms.Destination </td>
<td class='confluenceTd'> the Destination to use. This optional property can be use instead of jndiDestinationName or jmsProviderDestinationName </td>
<td class='confluenceTd'> no (one of destination, jndiDestinationName or jmsProviderDestinationName) </td>
</tr>
<tr>
<td class='confluenceTd'> jndiDestinationName </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> the JNDI name of the destination to look up </td>
<td class='confluenceTd'> yes (unless destination or jmsProviderDestinationName is set) </td>
</tr>
<tr>
<td class='confluenceTd'> jmsProviderDestinationName </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> if used, the target JMS destination will be created by the JMS provider by calling Session.createQueue or Session.createTopic </td>
<td class='confluenceTd'> no (one of destination, jndiDestinationName or jmsProviderDestinationName) </td>
</tr>
<tr>
<td class='confluenceTd'> destinationStyle </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> used to select the destination type used with the jmsProviderDestinationName </td>
<td class='confluenceTd'> no (unless jmsProviderDestinationName is used) </td>
</tr>
<tr>
<td class='confluenceTd'> useMsgIdInResponse </td>
<td class='confluenceTd'> boolean </td>
<td class='confluenceTd'> true indicates that the JMS correlation id will be set to the id of the JMS request message; false indicates that an artificial correlation id will be used instead </td>
<td class='confluenceTd'> no (in this case the default behaviour is to use the message exchange id as the correlation id) </td>
</tr>
</tbody></table></td></tr></table>
<p>The <b>targetService</b>, <b>targetEndpoint</b> and <b>targetInterfaceName</b> attributes can be used to specify the routing method to use (routing by interface, service or endpoint) and is also useful to allow several proxy endpoints to be created for the same JBI endpoint.  For example to create an JMS only endpoint and an JMS+SOAP endpoint, both jms endpoints will have the same targetEndpoint and targetService, but they must have different endpoint names.</p>

<h3><a name="servicemix-jms-Providerendpoint"></a>Provider endpoint</h3>

<p>A provider endpoint is a client-side jbi endpoint which can receive requests from the NMR and send them to a given url where the service is provided.</p>

<p>Here is an example of an jms provider endpoint:</p>
<div class="code"><div class="codeContent">
<pre class="code-xml">&lt;jms:endpoint service=<span class="code-quote">"test:MyProviderService"</span>
              endpoint=<span class="code-quote">"myProvider"</span>
              role=<span class="code-quote">"provider"</span> 
              destinationStyle=<span class="code-quote">"queue"</span>
              jmsProviderDestinationName=<span class="code-quote">"queue/A"</span>
              jndiConnectionFactoryName=<span class="code-quote">"ConnectionFactory"</span>
              wsdlResource=<span class="code-quote">"classpath:provider.wsdl"</span> /&gt;</pre>
</div></div>
<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Provider endpoint attributes</b><br />
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Name </th>
<th class='confluenceTh'> Type </th>
<th class='confluenceTh'> Description </th>
<th class='confluenceTh'> Required </th>
</tr>
<tr>
<td class='confluenceTd'> service </td>
<td class='confluenceTd'> QName </td>
<td class='confluenceTd'> the service name of the exposed jbi endpoint </td>
<td class='confluenceTd'> yes </td>
</tr>
<tr>
<td class='confluenceTd'> endpoint </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> the endpoint name of the exposed jbi endpoint </td>
<td class='confluenceTd'> yes </td>
</tr>
<tr>
<td class='confluenceTd'> interfaceName </td>
<td class='confluenceTd'> QName </td>
<td class='confluenceTd'> the interface name of the exposed jbi endpoint </td>
<td class='confluenceTd'> no </td>
</tr>
<tr>
<td class='confluenceTd'> role </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> must be 'provider' </td>
<td class='confluenceTd'> yes </td>
</tr>
<tr>
<td class='confluenceTd'> locationURI </td>
<td class='confluenceTd'> URI </td>
<td class='confluenceTd'> the http url of the target service </td>
<td class='confluenceTd'> yes </td>
</tr>
<tr>
<td class='confluenceTd'> soap </td>
<td class='confluenceTd'> boolean </td>
<td class='confluenceTd'> if set, the component will parse the soap requests and send the content into the NMR </td>
<td class='confluenceTd'> no (defaults to false) </td>
</tr>
<tr>
<td class='confluenceTd'> wsdlResource </td>
<td class='confluenceTd'> <span class="nobr"><a href="http://springframework.org/docs/api/org/springframework/core/io/Resource.html" title="Visit page outside Confluence" rel="nofollow">Spring resource<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> if set, the wsdl will be retrieved from the given Spring resource </td>
<td class='confluenceTd'> no </td>
</tr>
<tr>
<td class='confluenceTd'> initialContextFactory </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> the JNDI context factory class name </td>
<td class='confluenceTd'> no </td>
</tr>
<tr>
<td class='confluenceTd'> jndiProviderURL </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> the JNDI provide url </td>
<td class='confluenceTd'> no </td>
</tr>
<tr>
<td class='confluenceTd'> connectionFactory </td>
<td class='confluenceTd'> javax.jms.ConnectionFactory </td>
<td class='confluenceTd'> the connectionFactory to use.  This optional property can be used instead of using JNDI configuration </td>
<td class='confluenceTd'> no </td>
</tr>
<tr>
<td class='confluenceTd'> jndiConnectionFactoryName </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> the JNDI name of the JMS ConnectionFactory to lookup </td>
<td class='confluenceTd'> yes (unless a default one is provided on the jms component configuration) </td>
</tr>
<tr>
<td class='confluenceTd'> destination </td>
<td class='confluenceTd'> javax.jms.Destination </td>
<td class='confluenceTd'> the Destination to use. This optional property can be use instead of jndiDestinationName or jmsProviderDestinationName </td>
<td class='confluenceTd'> no (one of destination, jndiDestinationName or jmsProviderDestinationName) </td>
</tr>
<tr>
<td class='confluenceTd'> jndiDestinationName </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> the JNDI name of the destination to look up </td>
<td class='confluenceTd'> yes (unless destination or jmsProviderDestinationName is set) </td>
</tr>
<tr>
<td class='confluenceTd'> jmsProviderDestinationName </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> if used, the target JMS destination will be created by the JMS provider by calling Session.createQueue or Session.createTopic </td>
<td class='confluenceTd'> no (one of destination, jndiDestinationName or jmsProviderDestinationName) </td>
</tr>
<tr>
<td class='confluenceTd'> destinationStyle </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> used to select the destination type used with the jmsProviderDestinationName </td>
<td class='confluenceTd'> no (unless jmsProviderDestinationName is used) </td>
</tr>
<tr>
<td class='confluenceTd'> needJavaIdentifiers </td>
<td class='confluenceTd'> boolean </td>
<td class='confluenceTd'> (defaults to false) indicates that the jms provider does not support extented syntax for JMS properties and only support valid java identifiers.  In such a case, all non conformant properties will not be set on the JMS message. </td>
</tr>
</tbody></table></td></tr></table>

<h3><a name="servicemix-jms-Processors"></a>Processors</h3>

<p>Several types of processors are defined to configure the behavior of servicemix-jms endpoints.  These are:</p>
<ul>
	<li>multiplexing (default) is optimized for ActiveMQ</li>
	<li>standard which is best suited for other JMS providers</li>
	<li>jca can be used for transacted deliveries</li>
</ul>


<p>The processor used on a given endpoint can be configured using the <tt>processorName</tt> attribute on the endpoint.</p>

<p>JCA enabled endpoints need specific configuration.  A full example is available <span class="nobr"><a href="http://svn.apache.org/viewvc/incubator/servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-jms/src/test/resources/org/apache/servicemix/jms/spring-jca.xml?revision=HEAD" title="Visit page outside Confluence" rel="nofollow">here<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></p>

<h3><a name="servicemix-jms-ConfiguringtheConnectionFactoryandDestination"></a>Configuring the ConnectionFactory and Destination</h3>


<h4><a name="servicemix-jms-JNDIconfiguration"></a>JNDI configuration</h4>

<p>When the ConnectionFactory or the Destination is lookup in JNDI, the JNDI context will be created in the following order:</p>
<ul>
	<li>using the <b>initialContextFactory</b> and <b>jndiProviderURL</b></li>
	<li>using the <b>initialContextFactory</b> and <b>jndiProviderURL</b> configured on the component configuration</li>
	<li>using the default context provided by the JBI container</li>
</ul>


<h4><a name="servicemix-jms-ConnectionFactory"></a>ConnectionFactory</h4>

<p>The JMS ConnectionFactory is retrieved using the properties defined on the endpoint in the following order:</p>
<ul>
	<li>using <b>connectionFactory</b></li>
	<li>using <b>jndiConnectionFactoryName</b> to lookup the ConnectionFactory in JNDI</li>
	<li>using the <b>connectionFactory</b> configured on the component configuration</li>
	<li>using the <b>jndiConnectionFactoryName</b> configured on the component configuration to lookup the ConnectionFactory in JNDI</li>
</ul>


<h4><a name="servicemix-jms-Destination"></a>Destination</h4>

<p>The JMS Destination is retrieved in the following order:</p>
<ul>
	<li>using <b>destination</b></li>
	<li>using <b>jndiDestinationName</b></li>
	<li>using <b>jmsProviderDestinationName</b> and <b>destinationStyle</b></li>
</ul>


<h4><a name="servicemix-jms-Examples"></a>Examples</h4>

<p>Using JNDI</p>
<div class="code"><div class="codeContent">
<pre class="code-xml">&lt;jms:endpoint ...
    jndiConnectionFactoryName=<span class="code-quote">"java:comp/env/jms/ConnectionFactory"</span>
    jndiDestinationName=<span class="code-quote">"java:comp/env/jms/MyQueue"</span> /&gt;</pre>
</div></div>
<p>If you use ActiveMQ, you can use the following definition:</p>
<div class="code"><div class="codeContent">
<pre class="code-xml">&lt;jms:endpoint ...
    connectionFactory=<span class="code-quote">"#connectionFactory"</span>
    destinationStyle=<span class="code-quote">"queue"</span>
    jmsProviderDestinationName=<span class="code-quote">"MyQueue"</span> /&gt;

<span class="code-tag">&lt;bean id=<span class="code-quote">"connectionFactory"</span> class=<span class="code-quote">"org.apache.activemq.ActiveMQConnectionFactory"</span>&gt;</span>
    <span class="code-tag">&lt;property name=<span class="code-quote">"brokerURL"</span> value=<span class="code-quote">"tcp://localhost:61216"</span> /&gt;</span>
<span class="code-tag">&lt;/bean&gt;</span></pre>
</div></div>

<h2><a name="servicemix-jms-WSDLDeployment"></a>WSDL Deployment</h2>

<p>In addition to xbean based deployment, the component accepts WSDL-based deployment.<br/>
The service unit may contain any number of WSDL files, each one being parsed and activating the specified endpoints.<br/>
To retrieve the necessary informations from the wsdl, the component can recognize a jms extension to provide JNDI informations and a jbi extension which specifies the role of the component and the default MEP to use for JBI exchanges.</p>

<p>Here is an example of a WSDL:</p>
<div class="code"><div class="codeContent">
<pre class="code-xml">&lt;definitions name='Echo' 
             targetNamespace='http://jms.servicemix.org/Test' 
             <span class="code-keyword">xmlns:tns</span>='http://jms.servicemix.org/Test' 
             <span class="code-keyword">xmlns:jms</span>='http://servicemix.org/wsdl/jms/' 
             xmlns='http://schemas.xmlsoap.org/wsdl/'
             <span class="code-keyword">xmlns:jbi</span>='http://servicemix.org/wsdl/jbi/'&gt;

    <span class="code-tag">&lt;portType name='EchoInterface'&gt;</span>
    <span class="code-tag">&lt;/portType&gt;</span>

    <span class="code-tag">&lt;binding name='EchoJmsBinding' type='tns:EchoInterface'&gt;</span>
        <span class="code-tag">&lt;jms:binding /&gt;</span>
    <span class="code-tag">&lt;/binding&gt;</span>

    <span class="code-tag">&lt;service name='Echo'&gt;</span>
        <span class="code-tag">&lt;port name='EchoEndpoint' binding='tns:EchoJmsBinding'&gt;</span>
            &lt;jms:address destinationStyle=<span class="code-quote">"queue"</span>
                         jmsProviderDestinationName=<span class="code-quote">"queue/A"</span>
                         jndiConnectionFactoryName=<span class="code-quote">"ConnectionFactory"</span>/&gt;
            &lt;jbi:endpoint role=<span class="code-quote">"consumer"</span>
                          defaultOperation=<span class="code-quote">"tns:Echo"</span>/&gt;
        <span class="code-tag">&lt;/port&gt;</span>
    <span class="code-tag">&lt;/service&gt;</span>
<span class="code-tag">&lt;/definitions&gt;</span></pre>
</div></div>

<h2><a name="servicemix-jms-Lightweightmode"></a>Lightweight mode</h2>

<p>The servicemix-jms component can also be configured in a spring/xbean configuration file, for use in an embedded ServiceMix.<br/>
Here is an example of such a configuration:</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;jms:component&gt;</span>
      <span class="code-tag">&lt;jms:endpoints&gt;</span>
        &lt;jms:endpoint service=<span class="code-quote">"test:MyConsumerService"</span>
                      endpoint=<span class="code-quote">"myConsumer"</span>
                      role=<span class="code-quote">"consumer"</span> 
                      defaultMep=<span class="code-quote">"http://www.w3.org/2004/08/wsdl/in-out"</span>
                      destinationStyle=<span class="code-quote">"queue"</span>
                      jmsProviderDestinationName=<span class="code-quote">"queue/A"</span>
                      jndiConnectionFactoryName=<span class="code-quote">"jms/ConnectionFactory"</span> /&gt;

        &lt;jms:endpoint service=<span class="code-quote">"test:MyProviderService"</span>
                      endpoint=<span class="code-quote">"myProvider"</span>
                      role=<span class="code-quote">"provider"</span> 
                      destinationStyle=<span class="code-quote">"queue"</span>
                      jmsProviderDestinationName=<span class="code-quote">"queue/A"</span>
                      connectionFactory=<span class="code-quote">"#connectionFactory"</span> /&gt;
      <span class="code-tag">&lt;/jms:endpoints&gt;</span>
    <span class="code-tag">&lt;/jms:component&gt;</span>
  <span class="code-tag">&lt;/sm:component&gt;</span>
<span class="code-tag">&lt;/sm:activationSpec&gt;</span></pre>
</div></div>
<table cellpadding='5' width='85%' cellspacing='8px' class='warningMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Classpath issues when embedding servicemix-jms component</b><br />
<p>When using the servicemix.xml configuration file to create jms endpoints, you must include the servicemix-jms-xxx.jar in your classpath.<br/>
You will find this file inside the component installer (./components/servicemix-jms-xxx.zip).<br/>
Failing this, an IllegalArgumentException will be thrown with the following message:<br/>
 Component name: xxxxxx is bound to an object which is not a JBI component, it is of type: javax.xml.namespace.QName</p></td></tr></table>

<h2><a name="servicemix-jms-AccessingWSDLs"></a>Accessing WSDLs</h2>

<p>WSDLs for consumer endpoints are retrieved using the following method:</p>
<ul>
	<li>for a WSDL based deployed endpoint, the WSL will be used as is</li>
	<li>for an XBean based deployed endpoint, the WSDL will be retrieved from the wsdlResource attribute</li>
	<li>if this information is not provided, the component will try to generate a WSDL by retrieving the target endpoint WSDL and adding the relevant informations to it.</li>
</ul>


<p>WSDLs are accessible on the MBean for the Endpoint using a JMX console.</p>

<h2><a name="servicemix-jms-WSAddressing"></a>WS-Addressing</h2>

<p>When used on a SOAP consumer endpoint, servicemix-jms handles the WS-Adressing Action and To headers.</p>

<h3><a name="servicemix-jms-wsa%3AAction"></a>wsa:Action</h3>

<p>The wsa:Action header can be used to specify the target interface name and operation to use for the JBI exchange.</p>

<p>The header uses the following syntax:</p>
<div class="code"><div class="codeContent">
<pre class="code-java">[target namespace][delimiter][<span class="code-keyword">interface</span> name][delimiter][operation name]</pre>
</div></div>
<p>where:</p>
<ul>
	<li>[delimiter] is ":" when the [target namespace] is a URN, otherwise "/".</li>
	<li>[target namespace] is the namespace of the interface.</li>
	<li>[interface name] is the name of the interface.</li>
	<li>[operation name] is the name of the operation.</li>
</ul>


<p>For example, the following header</p>
<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;wsa:Action&gt;</span>http://example.com/stockquote/StockQuoteInterface/GetLastTradePrice<span class="code-tag">&lt;/wsa:Action&gt;</span></pre>
</div></div>
<p>will be used to address the JBI exchange with the following properties:</p>
<ul>
	<li>interface name: {http://example.com/stockquote\}StockQuoteInterface</li>
	<li>operation name: {http://example.com/stockquote\}GetLastTradePrice</li>
</ul>


<h3><a name="servicemix-jms-wsa%3ATo"></a>wsa:To</h3>

<p>The wsa:To header specifies the target JBI service name and endpoint name.</p>

<p>The header uses the following syntax:</p>
<div class="code"><div class="codeContent">
<pre class="code-java">[target namespace][delimiter][service name][delimiter][endpoint name]</pre>
</div></div>
<p>where:</p>
<ul>
	<li>[delimiter] is ":" when the [target namespace] is a URN, otherwise "/".</li>
	<li>[target namespace] is the namespace of the interface.</li>
	<li>[service name] is the name of the service.</li>
	<li>[endpoint name] is the name of the endpoint.</li>
</ul>


<p>For example, the following header</p>
<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;wsa:To&gt;</span>urn:example:stockquote:StockQuoteService:JBIEndpoint<span class="code-tag">&lt;/wsa:To&gt;</span></pre>
</div></div>
<p>will be used to address the JBI exchange with the following properties:</p>
<ul>
	<li>service name: {urn:example:stockquote}StockQuoteService</li>
	<li>endpoint name: JBIEndpoint</li>
</ul>
</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