geronimo-scm mailing list archives

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

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

@media print {

body {
    background-color: #fff;
}

}

.monospaceInput {
    font:12px monospace
}

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

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

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

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

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

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

.focusedComment {
    background: #ffffce;
}

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

.pagebody {
}

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

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

.newpagetitle {
    color: #ccc !important;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.logocell {
    padding: 10px;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.tableview table {
    margin: 0;
}

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

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

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

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

.error {
	background-color: #fcc;
}

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

.errorMessage {
	color: #c00;
}

.success {
	background-color: #dfd;
}

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

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

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

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

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

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

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

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

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

IMG.inline  {}

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

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

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

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

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

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

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

.greybackground {
    background: #f0f0f0
}

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

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

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

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

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

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

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

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

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

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

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

.rowAlternateNoBottomNoColor {
}

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

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

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

}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.toolbar .label {
    display: none;
}

.toolbar .operations {
    display: block;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

.topBar {
    background-color: #003366;
}


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

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

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

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

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

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

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

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

#headerRow {
    padding: 10px;
}

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

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

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

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

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

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

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

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

.heatmap a {
    text-decoration:none;
}

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

.heatmap li {
    display: inline;
}

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

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

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

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

.linkerror { background-color: #fcc;}

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

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

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

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


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

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

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

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

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

.inputSection{
    margin-bottom:20px;
}

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

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

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

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

.topPadding
{
    margin-top: 20px;
}

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

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

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

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

    <div class="pageheader">
        <span class="pagetitle">
            Page Edited :
            <a href="http://cwiki.apache.org/confluence/display/GMOxDOC22">GMOxDOC22</a> :
            <a href="http://cwiki.apache.org/confluence/display/GMOxDOC22/Developing+a+simple+Calculator+Web+Service">Developing a simple Calculator Web Service</a>
        </span>
    </div>

     <p>
        <a href="http://cwiki.apache.org/confluence/display/GMOxDOC22/Developing+a+simple+Calculator+Web+Service">Developing a simple Calculator Web Service</a>
        has been edited by             <a href="http://cwiki.apache.org/confluence/display/~mcconne">Tim McConnell</a>
            <span class="smallfont">(Nov 04, 2008)</span>.
     </p>
    
     <p>
                 <a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=93417&originalVersion=23&revisedVersion=24">(View changes)</a>
     </p>

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

/*]]>*/</style><div class="Scrollbar"><table class='ScrollbarTable'><tr><td class='ScrollbarPrevIcon'><a href="/confluence/display/GMOxDOC22/Developing+a+JAX-WS+POJO+Web+Service"><img border='0' align='middle' src='/confluence/images/icons/back_16.gif' width='16' height='16'></a></td><td width='33%' class='ScrollbarPrevName'><a href="/confluence/display/GMOxDOC22/Developing+a+JAX-WS+POJO+Web+Service">Developing a JAX-WS POJO Web Service</a>&nbsp;</td><td width='33%' class='ScrollbarParent'><sup><a href="/confluence/display/GMOxDOC22/Web+services"><img border='0' align='middle' src='/confluence/images/icons/up_16.gif' width='8' height='8'></a></sup><a href="/confluence/display/GMOxDOC22/Web+services">Web services</a></td><td width='33%' class='ScrollbarNextName'>&nbsp;<a href="/confluence/display/GMOxDOC22/Developing+Clients+for+a+JAX-WS+Web+Service">Developing Clients for a JAX-WS Web Service</a></td><td class='ScrollbarNextIcon'><a href="/confluence/display/GMOxDOC22/Developing+Clients+for+a+JAX-WS+Web+Service"><img border='0' align='middle' src='/confluence/images/icons/forwd_16.gif' width='16' height='16'></a></td></tr></table></div>
<p>This tutorial will walk you through building and developing the jax-ws calculator that ships with the samples package for Geronimo. After completing this tutorial, you should be able to understand how to build simple web services with Apache Geronimo 2.1 using the Eclipse development environment</p>

<p>To run this tutorial, as a minimum you will be required to have installed the following prerequisite software.</p>

<ol>
	<li>Sun JDK 6.0+ (J2SE 1.6)</li>
	<li>Eclipse IDE for Java EE Developers, which is platform specific</li>
	<li>Apache Geronimo Eclipse Plugin 2.1.x</li>
	<li>Apache Geronimo Server 2.1.x
<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>
<p>Geronimo version 2.1.x, Java 1.5 runtime, and Eclipse Ganymede are used is used in this tutorial but other versions can be used instead (e.g., Geronimo version 2.2, Java 1.6, Eclipse Europa)</p></td></tr></table></li>
</ol>


<p>Details on installing eclipse are provided in the <a href="/confluence/display/GMOxDOC22/Development+environment" title="Development environment">Development environment</a> section. This tutorial is organized in the following sections:</p>
<div>
<ul>
  <li><a href='#DevelopingasimpleCalculatorWebService-SettingEclipseforApplicationDevelopment'>Setting Eclipse for Application Development</a></li>
  <li><a href='#DevelopingasimpleCalculatorWebService-CreatingtheWebServicesImplementationcode'>Creating the Web Services Implementation code</a></li>
  <li><a href='#DevelopingasimpleCalculatorWebService-GeneratingtheWSDLfortheWebService'>Generating the WSDL for the Web Service</a></li>
  <li><a href='#DevelopingasimpleCalculatorWebService-DevelopingawebclientforCalculator'>Developing a web client for Calculator</a></li>
  <li><a href='#DevelopingasimpleCalculatorWebService-SettinguptheDeploymentDescriptorandDeploymentPlan'>Setting up the Deployment Descriptor and Deployment Plan</a></li>
  <li><a href='#DevelopingasimpleCalculatorWebService-DeployandRun'>Deploy and Run</a></li>
</ul></div>

<h1><a name="DevelopingasimpleCalculatorWebService-SettingEclipseforApplicationDevelopment"></a>Setting Eclipse for Application Development</h1>
<ol>
	<li>Create a Dynamic Web Project <br clear="all" /> <br clear="all" />
	<ul>
		<li>Select <b>File --&gt; New</b>, select <b>Other...</b><br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/CreateProject.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
		<li>In the popup window select <b>Web --&gt; Dynamic Web Project</b> category and click <b>Next.</b><br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/CreateProject2.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
		<li>Type in <b>jaxws-calculator</b> as the <b>Project name:</b> and select <b>Next</b><br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/CreateProject3.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
		<li>Make sure <b>Generate Deployment Descriptor</b> is selected and click <b>Next.</b><br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/CreateProject5.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
		<li>Modify the <b>Group Id</b> to: <b>org.apache.geronimo.samples.jws</b> and <b>Artifact Id</b> to: <b>Calculator.</b> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/CreateProject6.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" />
<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">Useful Information</b><br />
<p><b>Group ID:</b> A name that identifies the group of a module. The default value is default.<br/>
<b>Artifact ID:</b> A name of the module in a group. The default value is &lt;blank&gt;.<br/>
<b>Version:</b> The version of module. The default value is 1.0<br/>
<b>Type:</b> The type of module, such as system module (car), jar module (jar), web<br/>
archive (war), enterprise archive (ear), and so on. The default value is car<br/>
A module is stored inside a repository as repository/groupId/artifactId/version/artifactIdversion.<br/>
type. This repository structure gives a more standardized and easily maintainable<br/>
structure to Geronimo applications.</p></td></tr></table>
<p><br clear="all" /> <br clear="all" /></p></li>
	</ul>
	</li>
	<li>Axis2 Configuration: <br clear="all" /> <br clear="all" />
	<ul>
		<li>Select <b>Window --&gt; Preferences.</b><br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/CreateProject8.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
		<li>Select <b>Web Services</b> --&gt; <b>Axis2 Preferences</b>. <br clear="all" /> <br clear="all" /></li>
		<li>Under <b>Axis2 Runtime</b> tab, browse to the installation root of the Axis2 runtime installation to be used in Eclipse. Select <b>Ok.</b><br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/axis2-runtime.jpg" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	</ul>
	</li>
	<li>Right-click on the <b>jaxws-calculator</b> project and select <b>Properties</b>, then select <b>Project Facets</b> <br clear="all" /> <br clear="all" />
	<ul>
		<li>On the next screen check the box for <b>Axis2 Web Services</b><br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/CreateProject4.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
		<li>Select <b>Finish</b>. <br clear="all" /> <br clear="all" />
This completes the configuration of Eclipse for application development.</li>
	</ul>
	</li>
</ol>


<h1><a name="DevelopingasimpleCalculatorWebService-CreatingtheWebServicesImplementationcode"></a>Creating the Web Services Implementation code</h1>
<p>To implement the <b>Calculator</b> web service we are going to create a package called: <b>org.apache.geronimo.samples.jws</b>. This package will contain two classes: a <b>Calculator interface</b>, and a <b>CalculatorService</b> which implements the <b>Calculator interface</b>. Let's go step by step with creating the package, interface class and implementation class.</p>
<ol>
	<li>Right-click on <b>Java Resources: src</b> and select <b>New --&gt; Package.</b><br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/createpackage.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Name the package as <b>org.apache.geronimo.samples.jws</b>. Select <b>Finish.</b><br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/createpackage2.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Right-click on the new package and Select <b>New --&gt; Interface</b>.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/createinterface.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Name the interface as <b>Calculator</b>. Select <b>Finish.</b><br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/createinterface2.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Add the following code to the <b>Calculator</b> interface class:
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>Calculator.class</b></div><div class="codeContent">
<pre class="code-java"><span class="code-keyword">package</span> org.apache.geronimo.samples.jws;

<span class="code-keyword">import</span> javax.jws.WebService;
<span class="code-keyword">import</span> javax.jws.WebMethod;
<span class="code-keyword">import</span> javax.jws.WebParam;

@WebService(name=<span class="code-quote">"CalculatorPortType"</span>,
            targetNamespace = <span class="code-quote">"http:<span class="code-comment">//jws.samples.geronimo.apache.org"</span>)
</span><span class="code-keyword">public</span> <span class="code-keyword">interface</span> Calculator {

    @WebMethod
    <span class="code-keyword">public</span> <span class="code-object">int</span> add(@WebParam(name = <span class="code-quote">"value1"</span>) <span class="code-object">int</span> value1,
                   @WebParam(name = <span class="code-quote">"value2"</span>) <span class="code-object">int</span> value2);

}</pre>
</div></div>
<p><br clear="all" /></p></li>
	<li>Right-click on the package <b>org.apache.geronimo.samples.jws</b> and select <b>New --&gt; Class</b>. <br clear="all" /> <br clear="all" /></li>
	<li>Name the class <b>CalculatorService</b> <br clear="all" /> <br clear="all" /></li>
	<li>Accept all the defaults and Select <b>Finish.</b><br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/createClass.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Add the following code to <b>CalculatorService</b> class:
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>CalculatorService.class</b></div><div class="codeContent">
<pre class="code-java"><span class="code-keyword">package</span> org.apache.geronimo.samples.jws;

<span class="code-keyword">import</span> javax.annotation.Resource;
<span class="code-keyword">import</span> javax.jws.WebService;
<span class="code-keyword">import</span> javax.xml.ws.WebServiceContext;

@WebService(serviceName = <span class="code-quote">"Calculator"</span>,
            portName=<span class="code-quote">"CalculatorPort"</span>,
            endpointInterface = <span class="code-quote">"org.apache.geronimo.samples.jws.Calculator"</span>,
            targetNamespace = <span class="code-quote">"http:<span class="code-comment">//jws.samples.geronimo.apache.org"</span>
</span>            )
<span class="code-keyword">public</span> class CalculatorService <span class="code-keyword">implements</span> Calculator {

    @Resource
    <span class="code-keyword">private</span> WebServiceContext context;

    <span class="code-keyword">public</span> <span class="code-object">int</span> add(<span class="code-object">int</span> value1, <span class="code-object">int</span> value2) {
        <span class="code-object">System</span>.out.println(<span class="code-quote">"User Principal: "</span> + context.getUserPrincipal());
        <span class="code-keyword">return</span> value1 + value2;
    }
}</pre>
</div></div></li>
</ol>


<p>Let us try to understand each annotation</p>
<ul>
	<li><b>@WebService</b>- This annotation can be used with a Java class as well as with interface. In our case we used it with both interface as well as the POJO. This annotation declares the POJO as a WebService. @WebService annotation is utilized in generating the WSDL file.
	<ul>
		<li><b>serviceName</b> is same as the WSDL element service</li>
		<li><b>name</b> is same as the WSDL element &lt;portType name&gt;</li>
		<li><b>endpointInterface</b> suggests the user defined name for the Service Endpoint Interface (SEI).</li>
		<li><b>portName</b> is the element portName</li>
		<li><b>targetNamespace</b> is the XML namespace of the WSDL and some of the XML elements generated from the WebService</li>
	</ul>
	</li>
	<li><b>@WebMethod</b>- This annotation is applied to a method to expose it as a WebService method. In case you have multiple methods you can use this annotation to selectively expose methods as WebService method. If you donot use this annotation all the public methods will be exposed as WebService.</li>
	<li><b>@WebParam</b>- This annotation is used along with @WebMethod annotation to define the WebService. It is used to customize parameter used in the message part of the WSDL.</li>
</ul>


<p>This completes the development of the Web Service Implementation code.</p>

<h1><a name="DevelopingasimpleCalculatorWebService-GeneratingtheWSDLfortheWebService"></a>Generating the WSDL for the Web Service</h1>
<p>Geronimo provides a new jaxws-tools.bat which helps in generating the WSDL file from service endpoint interface.</p>

<ul>
	<li>Export the source files to a jar as shown in the following three figures: <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/souirce_export.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/souirce_export2.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/souirce_export1.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Open a command prompt and point it to the <b>bin</b> directory of server installation:<br clear="all" /> <br clear="all" />
	<ol>
		<li>*# Run the command
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>WSDL Generation command</b></div><div class="codeContent">
<pre class="code-java">Administrator@T60J9:/&gt; jaxws-tools.bat -classpath C:/WSDL/source.jar -d C:/WSDL/ -wsdl:soap1.1 org.apache.geronimo.samples.jws.CalculatorService</pre>
</div></div>
<p>In this command <b>-classpath</b> is used to set the <b>source.jar</b> exported from Eclipse in the classpath, <b>-d</b> defines the location where all the generated artifacts will be placed, <b>-wsdl:soap1.1</b> suggests a WSDL generation following soap1.1 protocol, and <b>org.apache.geronimo.samples.jws.CalculatorService</b> is the SEI used to generate the WSDL.</p></li>
		<li>Once the above command is run <b>Calculator_schema1.xsd</b> and <b>Calculator.wsdl</b> will be generated at <b>C:/WSDL/</b>. <br clear="all" /> <br clear="all" /></li>
		<li>Rename <b>Calculator.wsdl</b> as <b>CalculatorService.wsdl</b> and add both the generated files to WEB-INF directory of the project.</li>
	</ol>
	</li>
</ul>


<h1><a name="DevelopingasimpleCalculatorWebService-DevelopingawebclientforCalculator"></a>Developing a web client for Calculator</h1>
<p>This section will take you through the creation of two JSP's: <b>index.jsp</b> and <b>result.jsp</b>. <b>index.jsp</b> will prompt the user to enter two whole number values to add together. After submitting the form, the action will be forwarded to the <b>result.jsp</b>, which will call the <b>Calculator</b> Web Service.</p>
<ol>
	<li>Right-click on the Web Content folder and Select <b>New --&gt; JSP</b>. <br clear="all" /> <br clear="all" /></li>
	<li>Name the JSP as <b>index.jsp</b> and select <b>Finish.</b><br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/webclientjsp.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Add the following code to <b>index.jsp</b>:
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>index.jsp</b></div><div class="codeContent">
<pre class="code-java">&lt;%@ page
<span class="code-keyword">import</span>="java.net.URL,javax.xml.namespace.QName,javax.xml.ws.Service,org
.apache.geronimo.samples.jws.Calculator"%&gt;
&lt;html xmlns=<span class="code-quote">"http:<span class="code-comment">//www.w3.org/1999/xhtml"</span> xml:lang=<span class="code-quote">"en"</span>&gt;
</span>&lt;head&gt;
&lt;title&gt;Calculator&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;form action=<span class="code-quote">"result.jsp"</span>&gt;
Please enter 2 whole numbers to add: &lt;input type=<span class="code-quote">"text"</span>
name=<span class="code-quote">"value1"</span>&gt; + &lt;input type=<span class="code-quote">"text"</span> name=<span class="code-quote">"value2"</span>&gt; &lt;input type=<span class="code-quote">"submit"</span>
value=<span class="code-quote">"="</span>&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
</div></div></li>
	<li>Right-click on the Web Content folder and Select <b>New --&gt; JSP</b>. <br clear="all" /> <br clear="all" /></li>
	<li>Name the JSP as <b>result.jsp</b> and select <b>Finish.</b> <br clear="all" /> <br clear="all" /></li>
	<li>Add the following code to <b>result.jsp</b>:
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>result.jsp</b></div><div class="codeContent">
<pre class="code-java">&lt;%@ page
<span class="code-keyword">import</span>="java.net.URL,javax.xml.namespace.QName,javax.xml.ws.Service,org
.apache.geronimo.samples.jws.Calculator"%&gt;
&lt;html xmlns=<span class="code-quote">"http:<span class="code-comment">//www.w3.org/1999/xhtml"</span> xml:lang=<span class="code-quote">"en"</span>&gt;
</span>&lt;head&gt;
&lt;title&gt;Calculator Result&lt;/title&gt;
&lt;/head&gt;
&lt;%
<span class="code-object">int</span> value1 = 0;
<span class="code-object">int</span> value2 = 0;
<span class="code-object">int</span> sum = 0;
<span class="code-keyword">try</span> {
<span class="code-object">System</span>.out.println( request.getParameter( <span class="code-quote">"value1"</span> ) + <span class="code-quote">" "</span> +
request.getParameter( <span class="code-quote">"value2"</span> ) );
value1 = <span class="code-object">Integer</span>.parseInt( request.getParameter( <span class="code-quote">"value1"</span> ) );
value2 = <span class="code-object">Integer</span>.parseInt( request.getParameter( <span class="code-quote">"value2"</span> ) );
URL url = <span class="code-keyword">new</span> URL("http:<span class="code-comment">//localhost:8080/jaxws-calculator-
</span>1.0/calculator?wsdl");
QName qname = <span class="code-keyword">new</span>
QName(<span class="code-quote">"http:<span class="code-comment">//jws.samples.geronimo.apache.org"</span>, <span class="code-quote">"Calculator"</span>);
</span>Service service = Service.create(url, qname);
Calculator calc =
(Calculator)service.getPort(Calculator.class);
sum = calc.add(value1, value2);
} <span class="code-keyword">catch</span> ( Exception e ) {
e.printStackTrace();
}
%&gt;
&lt;body&gt;
The result is: &lt;%=value1%&gt;+&lt;%=value2%&gt;=&lt;%=sum%&gt;
&lt;br&gt;
&lt;a href=<span class="code-quote">"index.jsp"</span>&gt;Back&lt;/a&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
</div></div>
<p>This finishes the development of Web client.</p></li>
</ol>


<h1><a name="DevelopingasimpleCalculatorWebService-SettinguptheDeploymentDescriptorandDeploymentPlan"></a>Setting up the Deployment Descriptor and Deployment Plan</h1>
<ol>
	<li>Double-click <b>WEB-INF/web.xml</b> and add the following code:
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>web.xml</b></div><div class="codeContent">
<pre class="code-java">&lt;?xml version=<span class="code-quote">"1.0"</span> encoding=<span class="code-quote">"UTF-8"</span>?&gt;
&lt;web-app xmlns:calc=<span class="code-quote">"urn:geronimo-samples-jws"</span>
xmlns=<span class="code-quote">"http:<span class="code-comment">//java.sun.com/xml/ns/javaee"</span>
</span>version=<span class="code-quote">"2.5"</span>&gt;
&lt;servlet&gt;
&lt;display-name&gt;CalculatorService&lt;/display-name&gt;
&lt;servlet-name&gt;CalculatorService&lt;/servlet-name&gt;
&lt;servlet-class&gt;
org.apache.geronimo.samples.jws.CalculatorService
&lt;/servlet-class&gt;
&lt;/servlet&gt;
&lt;servlet-mapping&gt;
&lt;servlet-name&gt;CalculatorService&lt;/servlet-name&gt;
&lt;url-pattern&gt;/calculator&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
&lt;service-ref&gt;
            &lt;service-ref-name&gt;services/Calculator&lt;/service-ref-name&gt;
            &lt;service-<span class="code-keyword">interface</span>&gt;javax.xml.ws.Service&lt;/service-<span class="code-keyword">interface</span>&gt;
            &lt;wsdl-file&gt;WEB-INF/CalculatorService.wsdl&lt;/wsdl-file&gt;
        &lt;/service-ref&gt;
&lt;/web-app&gt;</pre>
</div></div></li>
	<li>Similarly double-click <b>geronimo-web.xml</b> and add the following code:
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>geronimo-web.xml</b></div><div class="codeContent">
<pre class="code-java">&lt;?xml version=<span class="code-quote">"1.0"</span> encoding=<span class="code-quote">"UTF-8"</span>?&gt;
&lt;web:web-app xmlns:dep=<span class="code-quote">"http:<span class="code-comment">//geronimo.apache.org/xml/ns/deployment-1.2"</span> 
</span>             xmlns:conn=<span class="code-quote">"http:<span class="code-comment">//geronimo.apache.org/xml/ns/j2ee/connector-1.2"</span> 
</span>             xmlns:name=<span class="code-quote">"http:<span class="code-comment">//geronimo.apache.org/xml/ns/naming-1.2"</span> 
</span>             xmlns:ejb=<span class="code-quote">"http:<span class="code-comment">//openejb.apache.org/xml/ns/openejb-jar-2.2"</span> 
</span>             xmlns:pkgen=<span class="code-quote">"http:<span class="code-comment">//openejb.apache.org/xml/ns/pkgen-2.1"</span> 
</span>             xmlns:app=<span class="code-quote">"http:<span class="code-comment">//geronimo.apache.org/xml/ns/j2ee/application-2.0"</span> 
</span>             xmlns:sec=<span class="code-quote">"http:<span class="code-comment">//geronimo.apache.org/xml/ns/security-2.0"</span> 
</span>             xmlns:web=<span class="code-quote">"http:<span class="code-comment">//geronimo.apache.org/xml/ns/j2ee/web-2.0.1"</span> 
</span>             xmlns:pers=<span class="code-quote">"http:<span class="code-comment">//java.sun.com/xml/ns/persistence"</span> 
</span>             xmlns:client=<span class="code-quote">"http:<span class="code-comment">//geronimo.apache.org/xml/ns/j2ee/application-client-2.0"</span>&gt;
</span>
    &lt;dep:environment&gt;
        &lt;dep:moduleId&gt;
            &lt;dep:groupId&gt;org.apache.geronimo.samples.jws&lt;/dep:groupId&gt;
            &lt;dep:artifactId&gt;Calculator&lt;/dep:artifactId&gt;
            &lt;dep:version&gt;1.0&lt;/dep:version&gt;
            &lt;dep:type&gt;car&lt;/dep:type&gt;
        &lt;/dep:moduleId&gt;
        &lt;dep:dependencies&gt;
        &lt;/dep:dependencies&gt;
    &lt;/dep:environment&gt;

    &lt;context-root&gt;/jaxws-calculator-1.0&lt;/context-root&gt;

    &lt;service-ref&gt;
        &lt;service-ref-name&gt;services/Calculator&lt;/service-ref-name&gt;
        &lt;port&gt;
            &lt;port-name&gt;CalculatorPort&lt;/port-name&gt;
            &lt;protocol&gt;http&lt;/protocol&gt;
            &lt;host&gt;localhost&lt;/host&gt;
            &lt;port&gt;8080&lt;/port&gt;
            &lt;uri&gt;/jaxws-calculator/calculator&lt;/uri&gt;
        &lt;/port&gt;
    &lt;/service-ref&gt;
&lt;/web:web-app&gt;</pre>
</div></div></li>
</ol>


<h1><a name="DevelopingasimpleCalculatorWebService-DeployandRun"></a>Deploy and Run</h1>
<ol>
	<li>Right-click on <b>jaxws-calculator</b> project. Select <b>Run As --&gt; Run On Server</b>.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/Run.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>On the next window select Apache Geronimo V2.1 and Select <b>Finish.</b><br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/Run2.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Once the application is deployed on the server launch a browser and run the following URL <span class="nobr"><a href="http://localhost:8080/jaxws-calculator-1.0/index.jsp" title="Visit page outside Confluence" rel="nofollow">http://localhost:8080/jaxws-calculator-1.0/index.jsp<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/Run3.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Give the values as <b>5</b> and <b>7</b> and then select the <b>=</b> button:<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/Run4.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>The result is <b>12</b> as shown in the figure:<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93417/Run5.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /></li>
</ol>
</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