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.1: JBoss to Geronimo - EJB-BMP Migration (Unverified on 2.1) (page created)
Date Thu, 28 Feb 2008 14:24: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 Created :
            <a href="http://cwiki.apache.org/confluence/display/GMOxDOC21">GMOxDOC21</a> :
            <a href="http://cwiki.apache.org/confluence/display/GMOxDOC21/JBoss+to+Geronimo+-+EJB-BMP+Migration+%28Unverified+on+2.1%29">JBoss to Geronimo - EJB-BMP Migration (Unverified on 2.1)</a>
        </span>
    </div>

     <p>
        <a href="http://cwiki.apache.org/confluence/display/GMOxDOC21/JBoss+to+Geronimo+-+EJB-BMP+Migration+%28Unverified+on+2.1%29">JBoss to Geronimo - EJB-BMP Migration (Unverified on 2.1)</a>
        has been created by             <a href="http://cwiki.apache.org/confluence/display/~jawarner">Jason Warner</a>
            <span class="smallfont">(Feb 28, 2008)</span>.
     </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/GMOxDOC21/Deployment+descriptor+changes+for+going+from+G+1.1+to+G+2.1"><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/GMOxDOC21/Deployment+descriptor+changes+for+going+from+G+1.1+to+G+2.1">Deployment descriptor changes for going from G 1.1 to G 2.1</a>&nbsp;</td><td width='33%' class='ScrollbarParent'><sup><a href="/confluence/display/GMOxDOC21/Migrating+to+Apache+Geronimo"><img border='0' align='middle' src='/confluence/images/icons/up_16.gif' width='8' height='8'></a></sup><a href="/confluence/display/GMOxDOC21/Migrating+to+Apache+Geronimo">Migrating to Apache Geronimo</a></td><td width='33%' class='ScrollbarNextName'>&nbsp;<a href="/confluence/display/GMOxDOC21/Migrating+with+the+J2G+Migration+Tool">Migrating with the J2G Migration Tool</a></td><td class='ScrollbarNextIcon'><a href="/confluence/display/GMOxDOC21/Migrating+with+the+J2G+Migration+Tool"><img border='0' align='middle' src='/confluence/images/icons/forwd_16.gif' width='16' height='16'></a></td></tr></table></div>
<p><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-top"></a><br/>
An entity bean is defined as a representation of persistent data that has the ability to read from database and populate its fields with data. It can be updated and stored back to the database. There are two types of Entity Beans that come with Enterprise Java Beans: Bean-Managed Persistence(BMP) and Container-Managed Persistent(CMP). This article covers the migration of a BMP sample application. For this type of entity bean, actual code must be written to handle persistent operations such as loading, saving and finding data. The developer must use persistence API such as JDBC to select, insert, update, delete from a database.</p>

<p>This article is organized in the following sections:</p>
<ul>
	<li><a href="#JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-analysis" title="analysis on JBoss to Geronimo - EJB-BMP Migration (Unverified on 2.1)">BMP implementation analysis</a></li>
	<li><a href="#JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-sample" title="sample on JBoss to Geronimo - EJB-BMP Migration (Unverified on 2.1)">Sample application</a></li>
	<li><a href="#JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-jboss" title="jboss on JBoss to Geronimo - EJB-BMP Migration (Unverified on 2.1)">The JBoss environment</a></li>
	<li><a href="#JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-geronimo" title="geronimo on JBoss to Geronimo - EJB-BMP Migration (Unverified on 2.1)">The Geronimo environment</a></li>
	<li><a href="#JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-migration" title="migration on JBoss to Geronimo - EJB-BMP Migration (Unverified on 2.1)">Step-by-step migration</a></li>
	<li><a href="#JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-summary" title="summary on JBoss to Geronimo - EJB-BMP Migration (Unverified on 2.1)">Summary</a></li>
</ul>


<h1><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-BMPimplementationanalysis"></a>BMP implementation analysis <a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-analysis"></a></h1>

<p>BMP implementation may vary from one vendor to another. The purpose of this section is to provide a BMP specific feature-to-feature comparison between JBoss v4.0.5 and Apache Geronimo, so that you can clearly identify the differences and plan accordingly before migration.</p>

<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'>Features</th>
<th class='confluenceTh'>JBoss v4.2.1</th>
<th class='confluenceTh'>Apache Geronimo</th>
</tr>
<tr>
<td class='confluenceTd'>EJB Container</td>
<td class='confluenceTd'>JBoss comes with its own implementation</td>
<td class='confluenceTd'>Geronimo uses OpenEJB as its EJB Container</td>
</tr>
</tbody></table>

<p><a href="#JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-top" title="top on JBoss to Geronimo - EJB-BMP Migration (Unverified on 2.1)">Back to Top</a></p>

<h1><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-Sampleapplication"></a>Sample application <a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-sample"></a></h1>

<p>This is a simple loan registration application which allows users to apply for loans and administrators to approve/reject the loans. Customers can apply for loans using the Web site while the manager uses a simple Java application to approval/reject loans. BMP Entity Bean has been used to manage Loan related persistence data from a database. In addition to that a Stateless Session Bean has been used handle work flow related activities. </p>

<p>The following figure illustrates the loan management Web application flow:<br/>
<span class="error">Unable to render embedded object: File (loan_web_overview.gif) not found.</span></p>

<p>First page of the loan registration Web application acts as a notice board which displays list of loans and their current status. When a customer decides to apply for a Loan, he/she can use loan registration form. After the registration of the loan, it is categorized under pending status. A manager who has the administrator privileges will use a small application to change the status of loans. Using this application, the manager can change the status of pending loans to either approved or rejected. </p>

<h2><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-ApplicationclassesandJSPpages"></a>Application classes and JSP pages</h2>

<ul>
	<li>org.apache.geronimo.samples.loan.client
	<ul>
		<li>LoanStatusChanger - Standalone application which helps to approve applied loans.</li>
	</ul>
	</li>
	<li>org.apache.geronimo.samples.loan.dto
	<ul>
		<li>LoanDTO - Data transfer object for loan related information between Web and EJB tiers.</li>
	</ul>
	</li>
	<li>org.apache.geronimo.samples.loan.ejb
	<ul>
		<li>LoanBean - BMP to handle loan related persistence data from the database.</li>
		<li>LoanManagerBean - Stateless session bean to handle .</li>
	</ul>
	</li>
	<li>org.apache.geronimo.samples.loan.util
	<ul>
		<li>PropertyLoader - Loads application server related properties to the different types of clients.</li>
	</ul>
	</li>
	<li>org.apache.geronimo.samples.loan.web
	<ul>
		<li>LoanManagerDispatchServlet - A servlet to dispatch loan handling related activities from front end to Web tier.</li>
	</ul>
	</li>
</ul>


<p>This loan management web application also includes the following JSP pages:</p>
<ul>
	<li>error.jsp -  Common error page to handle unexpected conditions.</li>
	<li>index.jsp - Forward in to the list of loans in the application.</li>
	<li>list_loans.jsp - List of loans and their information are displayed.</li>
	<li>register_loan.jsp - Loan registration form to be filled by a customer.</li>
</ul>


<h2><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-Toolsused"></a>Tools used</h2>
<p>The tools used for developing and building the Loan Manager application are:</p>

<h3><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-Eclipse"></a>Eclipse</h3>
<p>The Eclipse IDE was used for development of the sample application. This is a very powerful and popular open source development tool. Integration plug-ins are available for both JBoss and Geronimo. Eclipse can be downloaded from the following URL:<br/>
<span class="nobr"><a href="http://www.eclipse.org" title="Visit page outside Confluence" rel="nofollow">http://www.eclipse.org<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></p>

<h3><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-ApacheAnt"></a>Apache Ant</h3>
<p>Ant is a pure Java build tool. It is used for building the war files and populating the database for the Online Brokerage application. Ant can be downloaded from the following URL:<br/>
<span class="nobr"><a href="http://ant.apache.org" title="Visit page outside Confluence" rel="nofollow">http://ant.apache.org<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></p>

<p><a href="#JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-top" title="top on JBoss to Geronimo - EJB-BMP Migration (Unverified on 2.1)">Back to Top</a></p>

<h1><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-TheJBossenvironment"></a>The JBoss environment <a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-jboss"></a></h1>

<p>This section shows you how and where the sample JBoss reference environment was installed so you can map this scenario to your own implementation. Note that for this migration example JBoss v4.2.1 was used.</p>

<p>Detailed instructions for installing, configuring, and managing JBoss are provided in the product documentation. Check the product Web site for the most updated documents.</p>

<p>The following list highlights the general tasks you will need to complete to install and configure the initial environment as the starting point for deploying the sample application.</p>

<ol>
	<li>Download and install JBoss v4.2.1 as explained in the product documentation guides. From now on the installation directory will be referred as <b>&lt;jboss_home&gt;</b></li>
	<li>Create a copy of the default JBoss v4.2.1 application server. Copy recursively <b>&lt;jboss_home&gt;\server\default</b> to <b>&lt;jboss_home&gt;\server\&lt;your_server_name&gt;</b></li>
	<li>Start the new server by running the <b>run.sh -c &lt;your_server_name&gt;</b> command from the <b>&lt;jboss_home&gt;\bin</b> directory.</li>
	<li>Once the server is started, you can verify that it is running by opening a Web browser and pointing it to this URL: <span class="nobr"><a href="http://localhost:8080" title="Visit page outside Confluence" rel="nofollow">http://localhost:8080<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>. You should see the JBoss Welcome window and be able to access the JBoss console.</li>
	<li>Once the application server is up and running, the next step is to install and configure all the remaining prerequisite software required by the sample application. This step is described in the following section.</li>
</ol>


<h2><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-Installandconfigureprerequisitesoftware"></a>Install and configure prerequisite software</h2>
<p>In order to build and run the Loan Management application included in this article, you will need to install and configure the build tool and the database that is used by the application.</p>

<h3><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-Modifydatabasesettings"></a>Modify database settings</h3>

<p>This application is using the HSQL database that comes as part of the JBoss bundle. You need to modify the script for creating the database. Edit the <b>localDB.script</b> file located in the <b>&lt;jboss_home&gt;\server\&lt;your_server_name&gt;\data\hypersonic</b> directory:</p>

<p>Add the top of the <b>localDB.script</b> file the content of the following example in order to create the sample HSQL database. Also add the sample data to the same file at the end given in the <b>config/db.sql</b> under the JBoss Specific Data.</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>Make sure JBoss is not running at the time of modifying this file.</b></td></tr></table>

<h3><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-ConfigureAnt"></a>Configure Ant</h3>

<p>As mentioned before, Apache Ant is used to build the binaries for the Online Brokerage application. If you do not have Ant installed this is a good time for doing it and make sure that <b>&lt;ant_home&gt;/bin</b> directory is added to the system's path variable.</p>

<p>Apache Ant can be downloaded from the following URL:</p>

<p><span class="nobr"><a href="http://ant.apache.org" title="Visit page outside Confluence" rel="nofollow">http://ant.apache.org<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></p>

<h3><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-ConfigureXDoclet"></a>Configure XDoclet</h3>

<p>XDoclet is going to be used as build tool for the configuration file generation. It  is an open source code generation engine. It enables Attribute-Oriented Programming for Java. In short, this means that you can add more significance to your code by adding meta data (attributes) to your Java sources. This is done in special JavaDoc tags.<br/>
Although XDoclet originated as a tool for creating EJBs, it has evolved into a general-purpose code generation engine. XDoclet consists of a core and a constantly growing number of modules. It is fairly straight forward to write new modules if there is a need for a new kind of component.<br/>
<span class="nobr"><a href="http://xdoclet.sourceforge.net/xdoclet/index.html" title="Visit page outside Confluence" rel="nofollow">http://xdoclet.sourceforge.net/xdoclet/index.html<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></p>

<p>Just extract the latest version of the XDoclet and set the <b>xdoclet.home</b> parameter in to the <b>build.properties</b> file.</p>

<h2><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-Buildthesampleapplication"></a>Build the sample application</h2>

<p>The loan manager application included with this article provides an Ant script that you will use in order to build the application. Download the loan manager application from the following link:</p>

<p><span class="error">&#91;Loan|^loan.zip&#93;</span></p>

<p>After extracting the zip file, a <b>loan</b> directory is created. In that directory open the build.properties file and edit the properties to match your environment as shown in the following example:</p>

<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>build.properties</b></div><div class="codeContent">
<pre class="code-xml">## Set the Geronimo 2.0 home here
geronimo.home=<span class="code-tag">&lt;geronimo_home&gt;</span>

## Set XDoclet 1.2.3 Home 
xdoclet.home=<span class="code-tag">&lt;xdoclet_home&gt;</span></pre>
</div></div>

<p>Before starting the build process just set the correct paths for the <b>geronimo.home</b> and <b>xdoclet.home</b> entries in the <b>build.properties</b> file in the <b>config</b> directory.</p>

<p>From a command prompt or shell go to the <b>loan</b> directory and run <b>ant jboss</b>. This will build the ear file and place it directly in the <b>releases/jboss</b> directory.</p>


<h2><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-Deploythesampleapplication"></a>Deploy the sample application</h2>

<p>To deploy the sample application just copy the <b>Loan.ear</b> will be created under the <b>loan/releases/jboss</b> folder to the <b>&lt;jboss_home&gt;/server/&lt;your_server_name&gt;/deploy</b> folder. </p>

<p>If JBoss is already started, it will automatically deploy and start the application; otherwise, the application will be deployed and started at the next startup.</p>

<h2><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-Testthesampleapplication"></a>Test the sample application</h2>

<p>To test the application, open a Web browser and access the following URL:</p>

<p><span class="nobr"><a href="http://localhost:8080/loan" title="Visit page outside Confluence" rel="nofollow">http://localhost:8080/loan<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></p>

<p>This brings up the loan manager main page with the list of loans and their current statuses.<b>Register</b> link will forward you to the loan registration form which accepts number of fields before adding loans in to the loan information database. </p>

<p><span class="error">Unable to render embedded object: File (loan_screen.gif) not found.</span></p>

<p>To change the status of a loan, manager has to find the loan ID from the Web application and has to provide it in the client application as given below.</p>

<p><b>java -jar LoanStatusChanger.jar &lt;loanId&gt; &lt;status&gt;</b></p>

<p>Status filed will change according to the following values. The following are the status values of relevant loans.</p>
<ol>
	<li>0 - Pending</li>
	<li>1 - Accepted</li>
	<li>Other - Rejected</li>
</ol>


<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>Make sure you add the <b>&lt;jboss-home&gt;/client/jbossall-client.jar</b> file to your class path before running the above command.</td></tr></table>

<p><a href="#JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-top" title="top on JBoss to Geronimo - EJB-BMP Migration (Unverified on 2.1)">Back to Top</a></p>

<h1><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-TheGeronimoenvironment"></a>The Geronimo environment <a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-geronimo"></a></h1>

<p>Download and install Geronimo from the following URL:</p>

<p><span class="nobr"><a href="http://geronimo.apache.org/downloads.html" title="Visit page outside Confluence" rel="nofollow">http://geronimo.apache.org/downloads.html<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></p>

<p>The release notes available there provide clear instructions on system requirements and how to install and start Geronimo. Throughout the rest of this article we will refer to the Geronimo installation directory as <b>&lt;geronimo_home&gt;</b>.</p>

<table cellpadding='5' width='85%' cellspacing='8px' class='warningMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">TCP/IP ports conflict</b><br />
<p>If you are planning to run JBoss and Geronimo on the same machine consider to change the default service ports on, at least, one of these servers.</p></td></tr></table>


<p><a href="#JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-top" title="top on JBoss to Geronimo - EJB-BMP Migration (Unverified on 2.1)">Back to Top</a></p>
<h1><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-Stepbystepmigration"></a>Step-by-step migration <a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-migration"></a></h1>

<p>When you built the loan manager sample application, Ant packaged the deployment descriptors for both JBoss <b>jboss.xml</b> and Geronimo <b>openejb-jar.xml</b> as they were already provided by the sample application. These files are located in the <b>loan/config</b> directory.</p>

<p>The following example shows the JBoss deployment descriptor.</p>

<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>jboss.xml</b></div><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;?xml version=<span class="code-quote">"1.0"</span> encoding=<span class="code-quote">"UTF-8"</span>?&gt;</span>
<span class="code-tag">&lt;!DOCTYPE jboss PUBLIC <span class="code-quote">"-//JBoss//DTD JBOSS 4.0//EN"</span> <span class="code-quote">"http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd"</span>&gt;</span>

<span class="code-tag">&lt;jboss&gt;</span>

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

      <span class="code-tag">&lt;entity&gt;</span>
         <span class="code-tag">&lt;ejb-name&gt;</span>Loan<span class="code-tag">&lt;/ejb-name&gt;</span>
         <span class="code-tag">&lt;local-jndi-name&gt;</span>Loan<span class="code-tag">&lt;/local-jndi-name&gt;</span>
        <span class="code-tag">&lt;method-attributes&gt;</span>
        <span class="code-tag">&lt;/method-attributes&gt;</span>
      <span class="code-tag">&lt;/entity&gt;</span>

      <span class="code-tag">&lt;session&gt;</span>
         <span class="code-tag">&lt;ejb-name&gt;</span>LoanManager<span class="code-tag">&lt;/ejb-name&gt;</span>
         <span class="code-tag">&lt;jndi-name&gt;</span>org.apache.geronimo.samples.loan.ejb.LoanManager<span class="code-tag">&lt;/jndi-name&gt;</span>
         <span class="code-tag">&lt;local-jndi-name&gt;</span>LoanManager<span class="code-tag">&lt;/local-jndi-name&gt;</span>
        <span class="code-tag">&lt;method-attributes&gt;</span>
        <span class="code-tag">&lt;/method-attributes&gt;</span>
      <span class="code-tag">&lt;/session&gt;</span>

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

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

<p>Compare it with the contents of the Geronimo deployment plan shown in the following example.</p>

<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>openejb-jar.xml</b></div><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;?xml version=<span class="code-quote">"1.0"</span> encoding=<span class="code-quote">"UTF-8"</span>?&gt;</span>
<span class="code-tag">&lt;openejb-jar xmlns=<span class="code-quote">"http://www.openejb.org/xml/ns/openejb-jar-2.1"</span>&gt;</span>
	<span class="code-tag">&lt;dep:environment <span class="code-keyword">xmlns:dep</span>=<span class="code-quote">"http://geronimo.apache.org/xml/ns/deployment-1.2"</span>&gt;</span>
		<span class="code-tag">&lt;dep:moduleId&gt;</span>
			<span class="code-tag">&lt;dep:groupId&gt;</span>org.apache.geronimo.samples<span class="code-tag">&lt;/dep:groupId&gt;</span>
			<span class="code-tag">&lt;dep:artifactId&gt;</span>LoanManagerEJB<span class="code-tag">&lt;/dep:artifactId&gt;</span>
			<span class="code-tag">&lt;dep:version&gt;</span>1.0<span class="code-tag">&lt;/dep:version&gt;</span>
			<span class="code-tag">&lt;dep:type&gt;</span>car<span class="code-tag">&lt;/dep:type&gt;</span>
		<span class="code-tag">&lt;/dep:moduleId&gt;</span>
		<span class="code-tag">&lt;dep:dependencies/&gt;</span>
		<span class="code-tag">&lt;dep:hidden-classes/&gt;</span>
		<span class="code-tag">&lt;dep:non-overridable-classes/&gt;</span>
	<span class="code-tag">&lt;/dep:environment&gt;</span>
	<span class="code-tag">&lt;enterprise-beans&gt;</span>
		<span class="code-tag">&lt;session&gt;</span>
			<span class="code-tag">&lt;ejb-name&gt;</span>LoanManager<span class="code-tag">&lt;/ejb-name&gt;</span>
			<span class="code-tag">&lt;ejb-ref&gt;</span>
				<span class="code-tag">&lt;ref-name&gt;</span>ejb/LoanLocal<span class="code-tag">&lt;/ref-name&gt;</span>
				<span class="code-tag">&lt;ejb-link&gt;</span>Loan<span class="code-tag">&lt;/ejb-link&gt;</span>
			<span class="code-tag">&lt;/ejb-ref&gt;</span>
		<span class="code-tag">&lt;/session&gt;</span>
		<span class="code-tag">&lt;entity&gt;</span>
			<span class="code-tag">&lt;ejb-name&gt;</span>Loan<span class="code-tag">&lt;/ejb-name&gt;</span>			
			<span class="code-tag">&lt;resource-ref&gt;</span>
				<span class="code-tag">&lt;ref-name&gt;</span>jdbc/LoanDataSource<span class="code-tag">&lt;/ref-name&gt;</span>
				<span class="code-tag">&lt;resource-link&gt;</span>SystemDatasource<span class="code-tag">&lt;/resource-link&gt;</span>
			<span class="code-tag">&lt;/resource-ref&gt;</span>
		<span class="code-tag">&lt;/entity&gt;</span>
	<span class="code-tag">&lt;/enterprise-beans&gt;</span>
<span class="code-tag">&lt;/openejb-jar&gt;</span></pre>
</div></div>

<p>First difference can be clearly noted is Geronimo specific configuration has additional information than JBoss specific one. That part of the Geronimo configuration file is quite similar to a Maven 2 build script. Both of these given configuration files have EJB information. JBoss uses local JNDI names to link the EJBs while Geronimo directly use the EJB's name. In addition to above differences the <b>openejb-jar.xml</b> file clearly gives the EJB reference information than the <b>jboss.xml</b> file.</p>

<p>The Web archive related configuration files give you few more differences.</p>

<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>jboss-web.xml</b></div><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;?xml version=<span class="code-quote">"1.0"</span> encoding=<span class="code-quote">"UTF-8"</span>?&gt;</span>


<span class="code-tag">&lt;jboss-web&gt;</span>

	<span class="code-tag">&lt;ejb-local-ref&gt;</span>
		<span class="code-tag">&lt;ejb-ref-name&gt;</span>ejb/LoanManagerLocal<span class="code-tag">&lt;/ejb-ref-name&gt;</span>
		<span class="code-tag">&lt;local-jndi-name&gt;</span>LoanManager<span class="code-tag">&lt;/local-jndi-name&gt;</span>
	<span class="code-tag">&lt;/ejb-local-ref&gt;</span>  
<span class="code-tag">&lt;/jboss-web&gt;</span></pre>
</div></div>

<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-xml"><span class="code-tag">&lt;?xml version=<span class="code-quote">"1.0"</span> encoding=<span class="code-quote">"UTF-8"</span>?&gt;</span>
<span class="code-tag">&lt;web-app xmlns=<span class="code-quote">"http://geronimo.apache.org/xml/ns/j2ee/web-1.1"</span> <span class="code-keyword">xmlns:naming</span>=<span class="code-quote">"http://geronimo.apache.org/xml/ns/naming-1.1"</span>&gt;</span>
  <span class="code-tag">&lt;dep:environment <span class="code-keyword">xmlns:dep</span>=<span class="code-quote">"http://geronimo.apache.org/xml/ns/deployment-1.1"</span>&gt;</span>
    <span class="code-tag">&lt;dep:moduleId&gt;</span>
      <span class="code-tag">&lt;dep:groupId&gt;</span>org.apache.geronimo.samples<span class="code-tag">&lt;/dep:groupId&gt;</span>
      <span class="code-tag">&lt;dep:artifactId&gt;</span>LoanManagerWeb<span class="code-tag">&lt;/dep:artifactId&gt;</span>
      <span class="code-tag">&lt;dep:version&gt;</span>1.0<span class="code-tag">&lt;/dep:version&gt;</span>
      <span class="code-tag">&lt;dep:type&gt;</span>car<span class="code-tag">&lt;/dep:type&gt;</span>
    <span class="code-tag">&lt;/dep:moduleId&gt;</span>
    <span class="code-tag">&lt;dep:dependencies/&gt;</span>	
    <span class="code-tag">&lt;dep:hidden-classes/&gt;</span>
    <span class="code-tag">&lt;dep:non-overridable-classes/&gt;</span>
  <span class="code-tag">&lt;/dep:environment&gt;</span>
 
  <span class="code-tag">&lt;naming:ejb-local-ref&gt;</span>
	  <span class="code-tag">&lt;naming:ref-name&gt;</span>ejb/LoanManagerLocal<span class="code-tag">&lt;/naming:ref-name&gt;</span>
	  <span class="code-tag">&lt;naming:ejb-link&gt;</span>LoanManager<span class="code-tag">&lt;/naming:ejb-link&gt;</span>
  <span class="code-tag">&lt;/naming:ejb-local-ref&gt;</span>
	
<span class="code-tag">&lt;/web-app&gt;</span></pre>
</div></div>

<p><b>jboss-web.xml</b> maps the EJBs using JNDI names as given above while <b>geronimo-web.xml</b> directly uses the EJB's name. The reference names given in each mapping will be used refer EJBs from the Servlets. <b>web.xml</b> file of the WAR file contains more information about each EJB reference name, which will be common to the both Geronimo and JBoss flavors of this application.</p>

<h2><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-Buildthesampleapplication"></a>Build the sample application</h2>

<p>Build the migrated Geronimo version of the sample application by running following command from the <b>loan</b> directory.<br/>
<b>ant geronimo</b><br/>
It will create <b>Loan.ear</b> file in the <b>loan/releases/geronimo</b> folder.</p>

<h2><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-Deploythemigratedapplication"></a>Deploy the migrated application</h2>

<p>To deploy the migrated Loan Manager application, make sure the Geronimo server is up and running and user has to populate the database and then deploy the sample application.</p>

<h3><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-PopulatingtheDatabase"></a>Populating the Database</h3>
<p>This sample application will use the default Geronimo System database to hold the application specific data.<br/>
In the Geronimo console follow given steps.</p>
<ol>
	<li>Select DB Manager link from the Console Navigation in the left.</li>
	<li>Select the <b>SystemDatabase</b> to <b>Use DB</b> field.</li>
	<li>Open <b>db.sql</b> in the <b>loan/config</b> directory from a text editor and copy the content below Geronimo Specific Database SQLs.</li>
	<li>Paste the content the given above SQL Commands text area and press Run SQL button.</li>
</ol>


<h3><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-DeploySampleApplication"></a>Deploy Sample Application</h3>
<p>Open Geronimo console in your browser and follow the given steps:</p>
<ol>
	<li>Scroll down to <b>Deploy New</b> from the <b>Console Navigation</b> panel.</li>
	<li>Load <b>loan.ear</b> from <b>loan/releases/geronimo</b> folder in to the <b>Archive</b> input box.</li>
	<li>Press <b>Install</b> button to deploy application in the server.</li>
</ol>


<h2><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-Testthesampleapplication"></a>Test the sample application</h2>

<p>To test the application, open a Web browser and access the following URL:</p>

<p><span class="nobr"><a href="http://localhost:8080/loan" title="Visit page outside Confluence" rel="nofollow">http://localhost:8080/loan<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></p>

<p>To change the status of a loan, the user has to find the loan ID from the Web application and has to provide it in the client application as given below.</p>

<p><b>java -jar LoanStatusChanger.jar &lt;loanId&gt; &lt;status&gt;</b></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>
<p>Make sure you add the following list of JAR files to your class path before running the above command.</p>
<ol>
	<li>geronimo-kernel-2.0.x.jar</li>
	<li>geronimo-j2ee_connector_1.5_spec-1.x.x.jar</li>
	<li>geronimo-j2ee_management_1.1_spec-1.x.jar</li>
	<li>geronimo-security-2.0.x.jar</li>
	<li>cglib-nodep-2.1_3.jar</li>
	<li>openejb-core-3.0.jar</li>
</ol>
</td></tr></table>

<p><a href="#JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-top" title="top on JBoss to Geronimo - EJB-BMP Migration (Unverified on 2.1)">Back to Top</a></p>

<h1><a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-Summary"></a>Summary <a name="JBosstoGeronimo-EJB-BMPMigration%28Unverifiedon2.1%29-summary"></a></h1>
<p>This article has shown how to migrate a sample application that uses BMP entity beans, from JBoss v4.2.1 to Apache Geronimo. This article provided step-by-step instructions to build the application, deploy and run it, and then migrate it to the Geronimo environment.</p>

<p>The following list summarizes the major differences found during this sample application migration.</p>

<ul>
	<li>In order to deploy an EJB jar file in JBoss you need to just copy the configuration file to the deploy directory but in Geronimo you can use either deployer tool, console or hot deployment directory.</li>
	<li>The contents of the deployment plans for EJB jar files in JBoss and in Geronimo are almost similar except for the starting part of the Geronimo which is more similar to a Maven 2 build file.</li>
</ul>
</div>


</td></tr></table></div>
<p>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tr>
        <td height="12" background="http://cwiki.apache.org/confluence/images/border/border_bottom.gif"><img src="http://cwiki.apache.org/confluence/images/border/spacer.gif" width="1" height="1" border="0"/></td>
    </tr>
</table>

<div class="smalltext">
    Powered by
    <a href="http://www.atlassian.com/software/confluence/default.jsp?clicked=footer" class="smalltext">Atlassian Confluence</a>
    (Version: 2.2.9 Build:#527 Sep 07, 2006)
    -
    <a href="http://jira.atlassian.com/secure/BrowseProject.jspa?id=10470" class="smalltext">Bug/feature request</a><br/>
    <br>
    <a href="http://cwiki.apache.org/confluence/users/viewnotifications.action">Unsubscribe or edit your notifications preferences</a>

</div>

</body>
</html>


Mime
View raw message