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: 5-minute Tutorial on Enterprise Application Development with Eclipse and Geronimo (page edited)
Date Thu, 23 Oct 2008 17:20: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/5-minute+Tutorial+on+Enterprise+Application+Development+with+Eclipse+and+Geronimo">5-minute Tutorial on Enterprise Application Development with Eclipse and Geronimo</a>
        </span>
    </div>

     <p>
        <a href="http://cwiki.apache.org/confluence/display/GMOxDOC22/5-minute+Tutorial+on+Enterprise+Application+Development+with+Eclipse+and+Geronimo">5-minute Tutorial on Enterprise Application Development with Eclipse and Geronimo</a>
        has been edited by             <a href="http://cwiki.apache.org/confluence/display/~mcconne">Tim McConnell</a>
            <span class="smallfont">(Oct 23, 2008)</span>.
     </p>
    
     <p>
                 <a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=93322&originalVersion=24&revisedVersion=25">(View changes)</a>
     </p>

    <span class="label">Content:</span><br/>
    <div class="greybox wiki-content"><p>This tutorial walks you through configuring, developing and deploying an enterprise application with Eclipse and Geronimo. To run this tutorial, as a minimum you will be required to have installed the following prerequisite software.</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='#5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-CreateEnterpriseApplicationProject'>Create Enterprise Application Project</a></li>
  <li><a href='#5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-CreateEJBproject'>Create EJB project</a></li>
  <li><a href='#5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-CreateDynamicWebProject'>Create Dynamic Web Project</a></li>
  <li><a href='#5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-CreateStatelessSessionEJB'>Create Stateless Session EJB</a>
<ul>
  <li><a href='#5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-Createremotebusinessinterface'>Create remote business interface</a></li>
  <li><a href='#5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-Createbeanclass'>Create bean class</a></li>
</ul></li>
  <li><a href='#5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-Webapplicationdevelopment'>Web application development</a>
<ul>
  <li><a href='#5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-Createwelcomepageindex.jsp'>Create welcome page - index.jsp</a></li>
  <li><a href='#5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-CreateservletMyServlet'>Create servlet - MyServlet</a></li>
</ul></li>
  <li><a href='#5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-Runit%21'>Run it!</a></li>
</ul></div>

<h1><a name="5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-CreateEnterpriseApplicationProject"></a>Create Enterprise Application Project</h1>

<p>Start from creating an enterprise application project from the eclipse workspace.</p>

<ol>
	<li>Select <b>File --&gt; New</b>, select <b>Project...</b> and in the popup window select <b>Enterprise Application Project</b>. <br clear="all" /> <br clear="all" /></li>
	<li>In the EAR Application Project wizard type in <b>SampleEAR</b> as the <b>Project name:</b> and select <b>Apache Geronimo v2.1</b> in <b>Target Runtime</b>. Leave the rest as it is.
<br clear="all" /> <br clear="all" /> <img src="/confluence/download/attachments/93322/ganymede_ear_prj.jpg" align="absmiddle" border="0" /> <br clear="all" /> <br clear="all" /></li>
	<li>Click <b>Next</b>. <br clear="all" /> <br clear="all" /></li>
	<li>In the <b>J2EE Modules to Add to the EAR</b> window select the <b>Generate Deployment Descriptor</b> checkbox and click <b>Next</b>.
<br clear="all" /> <br clear="all" /> <img src="/confluence/download/attachments/93322/ear_prj_2.jpg" align="absmiddle" border="0" /> <br clear="all" /> <br clear="all" /></li>
	<li>In the <b>Geronimo Deployment Plan</b> window enter the values as specified below. To find out more about what these values mean check the <a href="/confluence/display/GMOxDOC22/Deployment+plans" title="Deployment plans">Deployment plans</a> section.
<table class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><tbody><tr><ul>
	<li>Group Id: <b>sampleear</b></li>
	<li>Artifact Id: <b>sample-ear</b></li>
	<li>Version: <b>1.0</b></li>
	<li>Artifact Type: <b>ear</b></li>
</ul>
</tr></tbody></table>
<p><img src="/confluence/download/attachments/93322/ear_prj_3.jpg" align="absmiddle" border="0" /> <br clear="all" /> <br clear="all" /></p></li>
	<li>Click <b>Finish</b>.
<br clear="all" /> <br clear="all" />
If asked about changing to the Java EE perspective, click <b>Yes</b>. You may want to select the <b>Remember my decision</b> checkbox to avoid dealing with it in the future.</li>
</ol>


<p>You should now have the following project structure.
<br clear="all" /> <br clear="all" /> <img src="/confluence/download/attachments/93322/ear_prj_4.1.jpg" align="absmiddle" border="0" /> <br clear="all" /></p>

<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><b class="strong">Error message</b><br />
<p>Don't worry about the error <b>cvc-complex-type.2.4.b: The content of element 'application' is not complete...</b> for now. We'll fix it in the next step when you define an ejb module (and webapp module afterwards).</p></td></tr></table>

<h1><a name="5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-CreateEJBproject"></a>Create EJB project</h1>
<p>The next step is to create an EJB project to hold your EJBs.</p>

<ol>
	<li>Select <b>File --&gt; New</b>, select <b>EJB Project</b>. <br clear="all" /> <br clear="all" /></li>
	<li>In the EJB Project wizard type in <b>SampleEJB</b> as the project name and select <b>Add project to an EAR</b> checkbox. Leave the rest as is and click <b>Next</b>.
<br clear="all" /> <br clear="all" /> <img src="/confluence/download/attachments/93322/ganydede_ejb_prj_1.1.jpg" align="absmiddle" border="0" /> <br clear="all" /> <br clear="all" /></li>
	<li>Unselect the <b>Create an EJB Client JAR module to hold the client interfaces and classes</b> checkbox. We're not interested in it. Click <b>Next</b>.
<br clear="all" /> <br clear="all" /> <img src="/confluence/download/attachments/93322/ejb_prj_3.jpg" align="absmiddle" border="0" /> <br clear="all" /> <br clear="all" /></li>
	<li>Fill in the Geronimo Deployment Plan fields with the following values:
<table class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><tbody><tr><ul>
	<li>Group Id: <b>sampleear</b></li>
	<li>Artifact Id: <b>sample-ejb</b></li>
	<li>Artifact Type: <b>ejb</b></li>
</ul>
</tr></tbody></table>
<p><img src="/confluence/download/attachments/93322/ejb_prj_4.jpg" align="absmiddle" border="0" /> <br clear="all" /> <br clear="all" /></p></li>
	<li>Click <b>Finish</b>. <br clear="all" /> <br clear="all" /></li>
</ol>


<p>You should now have the following project structure.
<br clear="all" /> <br clear="all" /> <img src="/confluence/download/attachments/93322/ejb_prj_5.1.jpg" align="absmiddle" border="0" /> <br clear="all" /></p>

<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><b class="strong">Important</b><br />
<p>Remove <b>ejbModule/META-INF/openejb-jar.xml</b> file in the SampleEJB project as it causes deployment issues. See the file highlighted in the image above.</p></td></tr></table>

<h1><a name="5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-CreateDynamicWebProject"></a>Create Dynamic Web Project</h1>

<p>Now that you have EAR and EJB projects created the next step is to create a Dynamic Web project to hold your web application.</p>

<ol>
	<li>Select <b>File --&gt; New</b>, select <b>Dynamic Web Project</b>. <br clear="all" /> <br clear="all" /></li>
	<li>In the Dynamic Web Project wizard type in <b>SampleWAR</b> as the project name and select <b>Add project to an EAR</b> checkbox. Leave the rest as is and click <b>Next</b> twice.
<br clear="all" /> <br clear="all" /> <img src="/confluence/download/attachments/93322/ganymede_war_prj_1.1.jpg" align="absmiddle" border="0" /> <br clear="all" /> <br clear="all" /></li>
	<li>Fill in the Geronimo Deployment Plan fields with the following values:
<table class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><tbody><tr><ul>
	<li>Group Id: <b>sampleear</b></li>
	<li>Artifact Id: <b>sample-war</b></li>
	<li>Artifact Type: <b>war</b></li>
</ul>
</tr></tbody></table>
<p><img src="/confluence/download/attachments/93322/war_prj_3.jpg" align="absmiddle" border="0" /> <br clear="all" /> <br clear="all" /></p></li>
	<li>Click <b>Finish</b>.</li>
</ol>


<p>You should now have the following project structure.
<br clear="all" /> <br clear="all" /> <img src="/confluence/download/attachments/93322/war_prj_4.1.jpg" align="absmiddle" border="0" /> <br clear="all" /></p>

<h1><a name="5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-CreateStatelessSessionEJB"></a>Create Stateless Session EJB</h1>

<p>Every stateless session EJB has its own business interface. There are three types of business interfaces - <b><tt>@Remote</tt></b>, <b><tt>@Local</tt></b> and <b><tt>@WebService</tt></b> - and combinations of these three. EJB development starts from defining a business interface and implementing it in a bean implementation class.  We do this in the next steps.</p>

<h2><a name="5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-Createremotebusinessinterface"></a>Create remote business interface</h2>

<ol>
	<li>Right-click on the <b>SampleEJB</b> project and select <b>New --&gt; Interface</b> and fill it in with the following values:
<table class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><tbody><tr><ul>
	<li>Package: <b>sampleear</b></li>
	<li>Name: <b>RemoteBusinessInterface</b></li>
</ul>
</tr></tbody></table>
<p><img src="/confluence/download/attachments/93322/biz_int.jpg" align="absmiddle" border="0" /> <br clear="all" /> <br clear="all" /></p></li>
	<li>Click <b>Finish</b>.</li>
</ol>


<p>Now we need to add a business method and mark the interface as a remote one with <b><tt>@Remote</tt></b> annotation.</p>

<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>RemoteBusinessInterface.java</b></div><div class="codeContent">
<pre class="code-java"><span class="code-keyword">package</span> sampleear;

<span class="code-keyword">import</span> javax.ejb.Remote;

@Remote
<span class="code-keyword">public</span> <span class="code-keyword">interface</span> RemoteBusinessInterface {
    <span class="code-keyword">public</span> <span class="code-object">String</span> sayHello(<span class="code-object">String</span> name);
}</pre>
</div></div>

<h2><a name="5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-Createbeanclass"></a>Create bean class</h2>

<ol>
	<li>Right-click on the <b>SampleEJB</b> project and select <b>New --&gt; Class</b> and fill it in with the following values:
<table class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><tbody><tr><ul>
	<li>Package: <b>sampleear</b></li>
	<li>Name: <b>MyStatelessSessionBean</b></li>
	<li>Interfaces: <b>sampleear.RemoteBusinessInterface</b></li>
</ul>
</tr></tbody></table>
<p><img src="/confluence/download/attachments/93322/bean_class.jpg" align="absmiddle" border="0" /> <br clear="all" /> <br clear="all" /></p></li>
	<li>Click <b>Finish</b>.</li>
</ol>


<p>Implement the business method <b>sayHello</b> and mark the class as a stateless session bean with the @Stateless annotation.</p>

<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>MyStatelessSessionBean.java</b></div><div class="codeContent">
<pre class="code-java"><span class="code-keyword">package</span> sampleear;

<span class="code-keyword">import</span> javax.ejb.Stateless;

@Stateless
<span class="code-keyword">public</span> class MyStatelessSessionBean <span class="code-keyword">implements</span> RemoteBusinessInterface {

    <span class="code-keyword">public</span> <span class="code-object">String</span> sayHello(<span class="code-object">String</span> name) {
        <span class="code-keyword">return</span> getClass().getName() + <span class="code-quote">" says hello to "</span> + name + <span class="code-quote">"."</span>;
    }
}</pre>
</div></div>

<h1><a name="5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-Webapplicationdevelopment"></a>Web application development</h1>

<p>The time has come to use the ejb in the web application. In this section we create a jsp <b><tt>index.jsp</tt></b> page that executes a servlet <b>MyServlet</b> that in turn executes the ejb <b>MyStatelessSessionBean</b>.</p>

<h2><a name="5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-Createwelcomepageindex.jsp"></a>Create welcome page - index.jsp</h2>

<ol>
	<li>Right-click on the <b>SampleWAR</b> project and select <b>New --&gt; JSP</b>. Name it <b><tt>index.jsp</tt></b> and click <b>Finish</b>. <br clear="all" /> <br clear="all" /></li>
	<li>Change it so it executes the servlet upon form submission.
<table class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><tbody><tr>
<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-html"><span class="code-tag">&lt;%@ page language=<span class="code-quote">"java"</span> contentType=<span class="code-quote">"text/html; charset=ISO-8859-1"</span> pageEncoding=<span class="code-quote">"ISO-8859-1"</span>%&gt;</span>
<span class="code-tag">&lt;!DOCTYPE html PUBLIC <span class="code-quote">"-//W3C//DTD HTML 4.01 Transitional//EN"</span> <span class="code-quote">"http://www.w3.org/TR/html4/loose.dtd"</span>&gt;</span>
<span class="code-tag">&lt;html&gt;</span>
  <span class="code-tag">&lt;head&gt;</span>
    <span class="code-tag">&lt;meta http-equiv=<span class="code-quote">"Content-Type"</span> content=<span class="code-quote">"text/html; charset=ISO-8859-1"</span>&gt;</span>
    <span class="code-tag">&lt;title&gt;</span>5-minute Tutorial on Enterprise Application Development with Eclipse and Geronimo<span class="code-tag">&lt;/title&gt;</span>
  <span class="code-tag">&lt;/head&gt;</span>
  <span class="code-tag">&lt;body&gt;</span>
    <span class="code-tag">&lt;form action=<span class="code-quote">"${pageContext.request.contextPath}/sayHello"</span>&gt;</span>
      <span class="code-tag">&lt;input type=<span class="code-quote">"text"</span> name=<span class="code-quote">"name"</span> /&gt;</span><span class="code-tag">&lt;input type=<span class="code-quote">"submit"</span> value=<span class="code-quote">"Press me!"</span> /&gt;</span>
    <span class="code-tag">&lt;/form&gt;</span>
  <span class="code-tag">&lt;/body&gt;</span>
<span class="code-tag">&lt;/html&gt;</span></pre>
</div></div></tr></tbody></table></li>
</ol>


<h2><a name="5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-CreateservletMyServlet"></a>Create servlet - MyServlet</h2>

<p>Since the servlet calls the EJB, the web project the servlet is in depends on the EJB project. Let's define the dependency.</p>

<ol>
	<li>Right-click on the <b>SampleWAR</b> project and select <b>Properties</b>. Go to <b>J2EE Module Dependencies</b> and select the checkbox next to <b>SampleEJB.jar</b> (it's in the <b>J2EE Modules</b> tab) and click <b>OK</b>. <br clear="all" />
<br clear="all" /> <img src="/confluence/download/attachments/93322/war_dep.1.jpg" align="absmiddle" border="0" /> <br clear="all" /> <br clear="all" /></li>
	<li>Right-click on the <b>SampleWAR</b> project and select <b>New --&gt; Servlet</b> and fill it in with the following values:
<table class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><tbody><tr><ul>
	<li>Java Package: <b>sampleear</b></li>
	<li>Class name: <b>MyServlet</b></li>
</ul>
</tr></tbody></table>
<p><img src="/confluence/download/attachments/93322/myServlet.jpg" align="absmiddle" border="0" /> <br clear="all" /> <br clear="all" /></p></li>
	<li>Click <b>Next</b>. <br clear="all" /> <br clear="all" /></li>
	<li>Change the URL Mapping section so the servlet serves at <b>/sayHello</b> url mapping and click <b>Finish</b>.
<br clear="all" /> <br clear="all" /> <img src="/confluence/download/attachments/93322/url_mapping.jpg" align="absmiddle" border="0" /> <br clear="all" /></li>
</ol>


<p><b>MyServlet.java</b> opens up automatically for editing after creation, update the servlet as shown below to call off the ejb when executed.</p>

<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>MyServlet.java</b></div><div class="codeContent">
<pre class="code-java"><span class="code-keyword">package</span> sampleear;

<span class="code-keyword">import</span> java.io.IOException;

<span class="code-keyword">import</span> javax.ejb.EJB;
<span class="code-keyword">import</span> javax.servlet.ServletException;
<span class="code-keyword">import</span> javax.servlet.http.HttpServletRequest;
<span class="code-keyword">import</span> javax.servlet.http.HttpServletResponse;

<span class="code-keyword">public</span> class MyServlet <span class="code-keyword">extends</span> javax.servlet.http.HttpServlet <span class="code-keyword">implements</span> javax.servlet.Servlet {
    <span class="code-keyword">static</span> <span class="code-keyword">final</span> <span class="code-object">long</span> serialVersionUID = 1L;

    @EJB
    RemoteBusinessInterface remoteBusinessIntf;

    <span class="code-keyword">protected</span> void doGet(HttpServletRequest request, HttpServletResponse response) <span class="code-keyword">throws</span> ServletException, IOException {
        <span class="code-object">String</span> name = request.getParameter(<span class="code-quote">"name"</span>);
        <span class="code-keyword">if</span> (name == <span class="code-keyword">null</span> || name.length() == 0) {
            name = <span class="code-quote">"anonymous"</span>;
        }
        response.getWriter().write(remoteBusinessIntf.sayHello(name));
    }
}</pre>
</div></div>

<h1><a name="5-minuteTutorialonEnterpriseApplicationDevelopmentwithEclipseandGeronimo-Runit%21"></a>Run it!</h1>
<p>All it's left before we test this sample it to deploy it. This task is done automatically for you when you choose to run the application directly from the eclipse workspace.</p>

<ol>
	<li>Right-click on the <b>SampleEAR</b> project and select <b>Run As --&gt; Run on Server</b>. When <em>Run On Server</em> popup window comes up, select the <b>Always use this server when running this project</b> checkbox. Leave the rest as is.
<br clear="all" /> <br clear="all" /> <img src="/confluence/download/attachments/93322/runOnServer.jpg" align="absmiddle" border="0" /> <br clear="all" /> <br clear="all" /></li>
	<li>Click <b>Finish</b>. <br clear="all" /> <br clear="all" /></li>
	<li>The server's stopped so nothing happens (from a user's perspective at least). Open up the <b>Servers</b> tab and right-click on <b>Apache Geronimo v2.1 Server at localhost</b> and select <b>Start</b>. <br clear="all" /> <br clear="all" /></li>
	<li>After a few seconds, Geronimo will be up and running with the enterprise application published. Open up the browser of your choice and go to <span class="nobr"><a href="http://localhost:8080/SampleWAR" title="Visit page outside Confluence" rel="nofollow">http://localhost:8080/SampleWAR<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/93322/welcome.jpg" align="absmiddle" border="0" /> <br clear="all" /> <br clear="all" /></li>
	<li>Type in any name you want, e.g. <b><tt>John Doe</tt></b> and press <b>Press me!</b> button.
<br clear="all" /> <br clear="all" /> <img src="/confluence/download/attachments/93322/result.jpg" align="absmiddle" border="0" /> <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