cxf-commits mailing list archives

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

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

@media print {

body {
    background-color: #fff;
}

}

.monospaceInput {
    font:12px monospace
}

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

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

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

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

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

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

.focusedComment {
    background: #ffffce;
}

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

.pagebody {
}

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

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

.newpagetitle {
    color: #ccc !important;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.logocell {
    padding: 10px;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.tableview table {
    margin: 0;
}

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

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

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

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

.error {
	background-color: #fcc;
}

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

.errorMessage {
	color: #c00;
}

.success {
	background-color: #dfd;
}

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

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

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

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

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

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

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

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

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

IMG.inline  {}

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

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

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

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

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

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

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

.greybackground {
    background: #f0f0f0
}

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

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

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

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

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

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

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

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

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

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

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

.rowAlternateNoBottomNoColor {
}

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

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

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

}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.toolbar .label {
    display: none;
}

.toolbar .operations {
    display: block;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

.topBar {
    background-color: #003366;
}


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

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

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

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

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

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

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

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

#headerRow {
    padding: 10px;
}

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

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

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

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

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

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

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

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

.heatmap a {
    text-decoration:none;
}

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

.heatmap li {
    display: inline;
}

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

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

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

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

.linkerror { background-color: #fcc;}

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

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

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

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


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

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

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

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

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

.inputSection{
    margin-bottom:20px;
}

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

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

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

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

.topPadding
{
    margin-top: 20px;
}

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

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

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

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

    <div class="pageheader">
        <span class="pagetitle">
            Page Edited :
            <a href="http://cwiki.apache.org/confluence/display/CXF20DOC">CXF20DOC</a> :
            <a href="http://cwiki.apache.org/confluence/display/CXF20DOC/XFire+Migration+Guide">XFire Migration Guide</a>
        </span>
    </div>

     <p>
        <a href="http://cwiki.apache.org/confluence/display/CXF20DOC/XFire+Migration+Guide">XFire Migration Guide</a>
        has been edited by             <a href="http://cwiki.apache.org/confluence/display/~jurn">Jurn Ho</a>
            <span class="smallfont">(Sep 29, 2007)</span>.
     </p>
    
     <p>
                 <a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=27568&originalVersion=17&revisedVersion=18">(View changes)</a>
     </p>

    <span class="label">Content:</span><br/>
    <div class="greybox wiki-content"><style type='text/css'>/*<![CDATA[*/
div.rbtoc1191060267113 {margin-left: 1.5em;padding: 0px;}
div.rbtoc1191060267113 ul {list-style: disc;margin-left: 0px;padding-left: 20px;}
div.rbtoc1191060267113 li {margin-left: 0px;padding-left: 0px;}

/*]]>*/</style><div class='rbtoc1191060267113'>
<ul>
  <li><a href='#XFireMigrationGuide-CompletedFunctionalityandCXFanalogues'>Completed Functionality and CXF analogues</a></li>
  <li><a href='#XFireMigrationGuide-ShouldIMigrateYet%3F'>Should I Migrate Yet?</a>
<ul>
  <li><a href='#XFireMigrationGuide-Whoshouldnotmigrate'>Who should not migrate</a></li>
</ul></li>
  <li><a href='#XFireMigrationGuide-ServiceFactories'>Service Factories</a>
<ul>
  <li><a href='#XFireMigrationGuide-ExampleObjectServiceFactoryMigration'>Example ObjectServiceFactory Migration</a></li>
  <li><a href='#XFireMigrationGuide-ExampleAnnotationServiceFactoryMigration'>Example AnnotationServiceFactory Migration</a></li>
  <li><a href='#XFireMigrationGuide-ExampleJAXWSServiceFactoryMigration'>Example JAXWSServiceFactory Migration</a></li>
</ul></li>
  <li><a href='#XFireMigrationGuide-HTTPandServletSetup'>HTTP and Servlet Setup</a></li>
  <li><a href='#XFireMigrationGuide-services.xml'>services.xml</a></li>
</ul></div>

<h1><a name="XFireMigrationGuide-CompletedFunctionalityandCXFanalogues"></a>Completed Functionality and CXF analogues</h1>

<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> XFire Feature </th>
<th class='confluenceTh'> CXF Analogue </th>
</tr>
<tr>
<td class='confluenceTd'> Aegis Binding </td>
<td class='confluenceTd'> <a href="/confluence/display/CXF20DOC/Aegis+Databinding" title="Aegis Databinding">Ported</a>. </td>
</tr>
<tr>
<td class='confluenceTd'> Configurable Servlet </td>
<td class='confluenceTd'> See the <a href="/confluence/display/CXF20DOC/Servlet+Transport" title="Servlet Transport">Servlet Transport</a> page. </td>
</tr>
<tr>
<td class='confluenceTd'> Eclipse Plugin <br clear="all" /> </td>
<td class='confluenceTd'> Eclipse tooling supported via the SOA Tools project. </td>
</tr>
<tr>
<td class='confluenceTd'> HTTP Transport </td>
<td class='confluenceTd'> <a href="/confluence/display/CXF20DOC/HTTP+Transport" title="HTTP Transport">Ported</a>. </td>
</tr>
<tr>
<td class='confluenceTd'> JMS Transport </td>
<td class='confluenceTd'> <a href="/confluence/display/CXF20DOC/JMS+Transport" title="JMS Transport">Ported</a>. </td>
</tr>
<tr>
<td class='confluenceTd'> JAX-WS/JSR-181 Annotation Support </td>
<td class='confluenceTd'> Ported and CXF passes the JAX-WS/JWS TCKs. </td>
</tr>
<tr>
<td class='confluenceTd'> JAXB </td>
<td class='confluenceTd'> Ported. </td>
</tr>
<tr>
<td class='confluenceTd'> MTOM <br clear="all" /> </td>
<td class='confluenceTd'> <a href="/confluence/display/CXF20DOC/MTOM+Attachments" title="MTOM Attachments">Ported</a> &#45; Supports fully streaming attachments now. </td>
</tr>
<tr>
<td class='confluenceTd'> services.xml </td>
<td class='confluenceTd'> Spring 2 XML will be supported for easy configuration. See the <a href="/confluence/display/CXF20DOC/Configuration" title="Configuration">Configuration</a> section. </td>
</tr>
<tr>
<td class='confluenceTd'> Spring: XFireClientFactoryBean </td>
<td class='confluenceTd'> See the ClientProxyFactoryBean and JaxWsProxyFactoryBean. </td>
</tr>
<tr>
<td class='confluenceTd'> Spring: XFireExporter </td>
<td class='confluenceTd'> Not ported as the &#42;ServerFactoryBeans already enable this functionality. See below. </td>
</tr>
<tr>
<td class='confluenceTd'> Spring: ServiceBean </td>
<td class='confluenceTd'> Completed. See ServerFactoryBean and JaxWsServerFactoryBean. </td>
</tr>
<tr>
<td class='confluenceTd'> WS-Addressing <br clear="all" /> </td>
<td class='confluenceTd'> CXF has much better <a href="/confluence/display/CXF20DOC/WS-Addressing" title="WS-Addressing">WS&#45;Addressing</a> support and its easier to use as well. <br clear="all" /> </td>
</tr>
<tr>
<td class='confluenceTd'> WS-Security </td>
<td class='confluenceTd'> <a href="/confluence/display/CXF20DOC/WS-Security" title="WS-Security">Ported</a>. </td>
</tr>
<tr>
<td class='confluenceTd'> XMLBeans </td>
<td class='confluenceTd'> Not ported. Will be supported in CXF 2.1 </td>
</tr>
</tbody></table>
<p>For more details on how to migrate:</p>
<ul>
	<li>Are you using the ObjectServiceFactory, AnnotationServiceFactory, or JAXWSServiceFactory? <a href="#XFireMigrationGuide-ServiceFactories" title="Service Factories on XFire Migration Guide">Go-&gt;</a></li>
	<li>Are you using services.xml? <a href="#XFireMigrationGuide-services.xml" title="services.xml on XFire Migration Guide">Go-&gt;</a></li>
	<li>Are you using the XFireServlet? <a href="#XFireMigrationGuide-HTTPandServletSetup" title="HTTP and Servlet Setup on XFire Migration Guide">Go-&gt;</a></li>
	<li>Are you using the Spring ServiceBean? <a href="#XFireMigrationGuide-ServiceBean" title="ServiceBean on XFire Migration Guide">Go-&gt;</a></li>
	<li>Are you using the Spring XFireExporter? <a href="#XFireMigrationGuide-XFireExporter" title="XFireExporter on XFire Migration Guide">Go-&gt;</a></li>
</ul>


<h1><a name="XFireMigrationGuide-ShouldIMigrateYet%3F"></a>Should I Migrate Yet?</h1>

<p>XFire users should consider migrating to CXF. Anyone looking to start a new web services project should seriously consider CXF. The main barrier is liable to be documentation at this moment. We will be adding LOTS more documentation though over the next couple weeks as we move toward the 2.0 final release.</p>

<p>CXF includes many new features for XFire users:</p>
<ul>
	<li>Improved WSDL support</li>
	<li>Improved JAX-WS support</li>
	<li>Improved JMS transport</li>
	<li>Maven plugins</li>
	<li>Spring 2.0 syntax support</li>
	<li>Improved WS-&#42; support</li>
	<li>Cleaned up APIs for building services</li>
	<li>Easier to use extension points</li>
	<li>RESTful services support</li>
	<li>Support for a "bare" XML binding, which doesn't include a SOAP envelope</li>
</ul>


<h2><a name="XFireMigrationGuide-Whoshouldnotmigrate"></a>Who should not migrate</h2>

<p>There a couple small areas where we haven't replicated all of the XFire functionality yet. Namely the JiBX and XMLBeans databindings. These will be ported for CXF 2.1. The only other reason not to migrate to CXF that we see is a requirement for Java 1.4. Although, we would encourage users to take a look at using CXF on Java 1.4 via <span class="nobr"><a href="http://retrotranslator.sourceforge.net/" title="Visit page outside Confluence" rel="nofollow">Retrotranslator<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> (but be sure to read <span class="nobr"><a href="http://www.nabble.com/Java-1.4-tf4094750.html" title="Visit page outside Confluence" rel="nofollow">this thread<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> first).</p>

<h1><a name="XFireMigrationGuide-ServiceFactories"></a>Service Factories</h1>

<p>XFire included serveral service factories for building services. CXF also includes service factories, but the concept has been improved somewhat to make them easier to use. CXF now includes the concept of ServerFactoryBeans which produce Servers, ClientFactoryBeans which produce Clients, and ClientProxyFactoryBeans which produce Client proxies.</p>

<p>CXF now includes the following classes:</p>
<ul>
	<li>ServerFactoryBean - This creates a server endpoint from a class</li>
	<li>ClientProxyFactoryBean - this creates a client proxy from a class</li>
	<li>JaxWsServerFactoryBean - This creates a JAX-WS server endpoint from a class or WSDL</li>
	<li>JaxWsProxyFactoryBean - this creates a JAX-WS client proxy from a class</li>
</ul>


<p>Its important to keep in mind a few differences in how CXF works compared to XFire:</p>
<ul>
	<li>CXF uses a bean factory approach. This means that there is one (Server/ClientProxy)FactoryBean per endpoint. In XFire these beans could be reused.</li>
	<li>CXF requires that you specify the endpoint address, unless it finds it in your WSDL. If you're using HTTP this has some nice benefits.
	<ul>
		<li>If you haven't set up the Servlet transport, it will automatically start an embedded Jetty instance for you. In XFire this required you to use the XFireHttpServer class, resulting in additional work.</li>
		<li>This allows you to map services to different URLs easier. In XFire the way URLs were mapped to Services was much more static.</li>
	</ul>
	</li>
	<li>When you specify an endpoint address for your service, it's important to remember that when you're using the sServlet you don't need to specify the host name. Lets say you set up the CXFServlet to listen on "http://localhost/services". If you specify your endpoint address as "/myservice" then all requests that come to "http://localhost/services/myservice" will go to your service.</li>
	<li>JAXB is now the <b>default</b> databinding. Any time you want to use Aegis, you must explicitly say so.</li>
</ul>


<h2><a name="XFireMigrationGuide-ExampleObjectServiceFactoryMigration"></a>Example ObjectServiceFactory Migration</h2>

<table class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><tbody><tr>
<td class="confluenceTd"  valign="top" width="50%">
<p>Here is an example of using the ObjectServiceFactory in XFire:</p>
<div class="code"><div class="codeContent">
<pre class="code-java">ObjectServiceFactory osf = <span class="code-keyword">new</span> ObjectServiceFactory();
Service service = osf.create(MyServiceInterface.class);
service.setInvoker(<span class="code-keyword">new</span> BeanInvoker(<span class="code-keyword">new</span> MyServiceImpl());</pre>
</div></div></td>
<td class="confluenceTd"  valign="top">
<p>This would be the CXF equivalent:</p>
<div class="code"><div class="codeContent">
<pre class="code-java">ServerFactoryBean sf = <span class="code-keyword">new</span> ServerFactoryBean();
sf.getServiceFactory().setDataBinding(<span class="code-keyword">new</span> AegisDatabinding();
sf.setServiceBean(<span class="code-keyword">new</span> MyServiceImpl());
sf.setServiceClass(MyServiceInterface.class);
sf.setAddress(<span class="code-quote">"http:<span class="code-comment">//localhost:8080/myservice"</span>);
</span>sf.create();</pre>
</div></div></td></tr></tbody></table>

<h2><a name="XFireMigrationGuide-ExampleAnnotationServiceFactoryMigration"></a>Example AnnotationServiceFactory Migration</h2>

<table class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><tbody><tr>
<td class="confluenceTd"  valign="top" width="50%">
<p>Here is an example of using the AnnotationServiceFactory in XFire:</p>
<div class="code"><div class="codeContent">
<pre class="code-java">AnnotationServiceFactory osf = <span class="code-keyword">new</span> AnnotationServiceFactory();
Service service = osf.create(MyServiceInterface.class);
service.setInvoker(<span class="code-keyword">new</span> BeanInvoker(<span class="code-keyword">new</span> MyServiceImpl());</pre>
</div></div></td>
<td class="confluenceTd"  valign="top">
<p>This would be the CXF equivalent:</p>
<div class="code"><div class="codeContent">
<pre class="code-java">JaxWsServerFactoryBean sf = <span class="code-keyword">new</span> JaxWsServerFactoryBean ();
sf.getServiceFactory().setDataBinding(<span class="code-keyword">new</span> AegisDatabinding());
sf.setServiceClass(MyServiceImpl.class);
sf.setAddress(<span class="code-quote">"http:<span class="code-comment">//localhost:8080/myservice"</span>);
</span>sf.create();</pre>
</div></div></td></tr></tbody></table>

<h2><a name="XFireMigrationGuide-ExampleJAXWSServiceFactoryMigration"></a>Example JAXWSServiceFactory Migration</h2>

<table class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><tbody><tr>
<td class="confluenceTd"  valign="top" width="50%">
<p>Here is an example of using the JAXWSServiceFactory in XFire:</p>
<div class="code"><div class="codeContent">
<pre class="code-java">JAXWSServiceFactory sf = <span class="code-keyword">new</span> JAXWSServiceFactory();
Service service = sf.create(MyServiceImpl.class);
service.setInvoker(<span class="code-keyword">new</span> BeanInvoker(<span class="code-keyword">new</span> MyServiceImpl());</pre>
</div></div></td>
<td class="confluenceTd"  valign="top">
<p>This would be the CXF equivalent:</p>
<div class="code"><div class="codeContent">
<pre class="code-java">JaxWsServerFactoryBean sf = <span class="code-keyword">new</span> JaxWsServerFactoryBean();
sf.setServiceClass(MyServiceImpl.class);
sf.setAddress(<span class="code-quote">"http:<span class="code-comment">//localhost:8080/myservice"</span>);
</span>sf.create();</pre>
</div></div></td></tr></tbody></table>

<h1><a name="XFireMigrationGuide-HTTPandServletSetup"></a>HTTP and Servlet Setup</h1>

<p>CXF supports a much wider range of options for deploying your service over HTTP. XFire created a static mapping between the HTTP URL and the service name - i.e. a service named "HelloService" was accessible at <span class="nobr"><a href="http://localhost/services/HelloService" title="Visit page outside Confluence" rel="nofollow">http://localhost/services/HelloService<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>. CXF on the other hand allows you to control the URL which your service is published on. This address is provided to CXF either through the setAddress() call on the ServerFactoryBeans or via your XML configuration.</p>

<p>Another improvement over XFire is that CXF will now transparently detect whether the CXFServlet is being used. If it is, your service will be available on that location. If it is not, CXF will automatically start an embedded Jetty instance (provided the cxf-rt-transports-http-jetty module is on your classpath). No more calls to XFireHttpServer are needed&#33;</p>

<p>To set up the CXF servlet, please read the how-to on the <a href="/confluence/display/CXF20DOC/Servlet+Transport" title="Servlet Transport">Servlet Transport</a> page.</p>

<p>To use the embedded Jetty instance, no extra work is needed. Simply follow the above ServiceFactory examples.</p>

<h1><a name="XFireMigrationGuide-services.xml"></a>services.xml</h1>

<p>XFire included support for deploying your services via a services.xml file. In CXF this file is named cxf.xml and will be loaded by the <a href="#XFireMigrationGuide-HTTPandServletSetup" title="HTTP and Servlet Setup on XFire Migration Guide">CXFServlet</a></p>
<table class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><tbody><tr>
<td class="confluenceTd"  valign="top" width="50%">
<p>XFire services.xml example:</p>
<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;beans xmlns=<span class="code-quote">"http://xfire.codehaus.org/config/1.0"</span>&gt;</span>

<span class="code-tag">&lt;service <span class="code-keyword">xmlns:t</span>=<span class="code-quote">"urn:my:namespace"</span>&gt;</span>
	<span class="code-tag">&lt;name&gt;</span>testservice<span class="code-tag">&lt;/name&gt;</span>
	<span class="code-tag">&lt;serviceClass&gt;</span>org.example.TestService
	<span class="code-tag">&lt;/serviceClass&gt;</span>
	<span class="code-tag">&lt;implementationClass&gt;</span>org.codehaus.xfire.spring.TestServiceImpl<span class="code-tag">&lt;/implementationClass&gt;</span>
	<span class="code-tag">&lt;namespace&gt;</span>urn:my:namespace<span class="code-tag">&lt;/namespace&gt;</span>
	<span class="code-tag">&lt;serviceFactory&gt;</span>org.codehaus.xfire.jaxws.JAXWSServiceFactory<span class="code-tag">&lt;/serviceFactory&gt;</span>

	<span class="code-tag">&lt;properties&gt;</span>
		<span class="code-tag">&lt;property key=<span class="code-quote">"myKey"</span>&gt;</span>value<span class="code-tag">&lt;/property&gt;</span>
        <span class="code-tag">&lt;/properties&gt;</span>

	<span class="code-tag">&lt;inHandlers&gt;</span>
		<span class="code-tag">&lt;handler handlerClass=<span class="code-quote">"org.codehaus.xfire.spring.TestHandler"</span>/&gt;</span>
	<span class="code-tag">&lt;/inHandlers&gt;</span>
<span class="code-tag">&lt;/service&gt;</span>

<span class="code-tag">&lt;/beans&gt;</span></pre>
</div></div></td>
<td class="confluenceTd"  valign="top">
<p>CXF example:</p>
<div class="code"><div class="codeContent">
<pre class="code-xml">&lt;beans xmlns=<span class="code-quote">"http://www.springframework.org/schema/beans"</span>
      <span class="code-keyword">xmlns:xsi</span>=<span class="code-quote">"http://www.w3.org/2001/XMLSchema-instance"</span>
      <span class="code-keyword">xmlns:jaxws</span>=<span class="code-quote">"http://cxf.apache.org/jaxws"</span>
      xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd"&gt;
 <span class="code-tag">&lt;import resource=<span class="code-quote">"classpath:META-INF/cxf/cxf.xml"</span> /&gt;</span>
 <span class="code-tag">&lt;import resource=<span class="code-quote">"classpath:META-INF/cxf/cxf-extension-soap.xml"</span>/&gt;</span>
 <span class="code-tag">&lt;import resource=<span class="code-quote">"classpath:META-INF/cxf/cxf-servlet.xml"</span> /&gt;</span>

  &lt;jaxws:endpoint address=<span class="code-quote">"http://localhost/testService"</span>
    serviceName=<span class="code-quote">"t:testService"</span>
    <span class="code-keyword">xmlns:t</span>=<span class="code-quote">"urn:my:namespace"</span>&gt;
    <span class="code-tag">&lt;jaxws:implementor&gt;</span>
      <span class="code-tag">&lt;bean class=<span class="code-quote">"org.example.TestServiceImpl"</span>/&gt;</span>
    <span class="code-tag">&lt;/jaxws:implementor&gt;</span>
    <span class="code-tag">&lt;jaxws:properties&gt;</span>
      <span class="code-tag">&lt;entry key=<span class="code-quote">"foo"</span> value=<span class="code-quote">"bar"</span>/&gt;</span>
    <span class="code-tag">&lt;/jaxws:properties&gt;</span>
    <span class="code-tag">&lt;jaxws:inInterceptors&gt;</span>
      <span class="code-tag">&lt;bean class=<span class="code-quote">"org.example.ExampleInterceptor"</span>/&gt;</span>
    <span class="code-tag">&lt;/jaxws:inInterceptors&gt;</span>
  <span class="code-tag">&lt;/jaxws:endpoint&gt;</span>

<span class="code-tag">&lt;/beans&gt;</span></pre>
</div></div></td></tr></tbody></table>
<p>There are a few important things to note here on the differences:</p>
<ul>
	<li>Many of these attributes are optional, such as the service name</li>
	<li>You don't need to specify a serviceClass if you are using JAX-WS as your service should be annotated with the @WebService.endpointInterface attribute.</li>
	<li>The equivalent of XFire Handlers is <a href="/confluence/display/CXF20DOC/Interceptors" title="Interceptors">Interceptors</a> inside CXF. They feature a much improved API&#33;</li>
</ul>


<p>The above sample is for JAX-WS/JSR181 services. For those developing services without annotations, here's an example for the <a href="/confluence/display/CXF20DOC/Simple+Frontend" title="Simple Frontend">Simple Frontend</a>"</p>
<div class="code"><div class="codeContent">
<pre class="code-xml">&lt;beans xmlns=<span class="code-quote">"http://www.springframework.org/schema/beans"</span>
      <span class="code-keyword">xmlns:xsi</span>=<span class="code-quote">"http://www.w3.org/2001/XMLSchema-instance"</span>
      <span class="code-keyword">xmlns:simple</span>=<span class="code-quote">"http://cxf.apache.org/simple"</span>
      xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/simple
http://cxf.apache.org/schemas/simple.xsd"&gt;

  &lt;simple:server address=<span class="code-quote">"http://localhost/testService"</span>
    serviceClass=<span class="code-quote">"org.example.TestService"</span>&gt;
    <span class="code-tag">&lt;simple:serviceBean&gt;</span>
      <span class="code-tag">&lt;bean class=<span class="code-quote">"org.example.TestServiceImpl"</span>/&gt;</span>
    <span class="code-tag">&lt;/simple:serviceBean&gt;</span>
    <span class="code-tag">&lt;simple:properties&gt;</span>
      <span class="code-tag">&lt;entry key=<span class="code-quote">"foo"</span> value=<span class="code-quote">"bar"</span>/&gt;</span>
    <span class="code-tag">&lt;/jaxws:properties&gt;</span>
    <span class="code-tag">&lt;simple:inInterceptors&gt;</span>
      <span class="code-tag">&lt;bean class=<span class="code-quote">"org.example.ExampleInterceptor"</span>/&gt;</span>
    <span class="code-tag">&lt;/simple:inInterceptors&gt;</span>
  <span class="code-tag">&lt;/simple:server&gt;</span>

<span class="code-tag">&lt;/beans&gt;</span></pre>
</div></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