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: Developing an Application Client to access EJB (page edited)
Date Thu, 21 Feb 2008 13:07: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/GMOxDOC21">GMOxDOC21</a> :
            <a href="http://cwiki.apache.org/confluence/display/GMOxDOC21/Developing+an+Application+Client+to+access+EJB">Developing an Application Client to access EJB</a>
        </span>
    </div>

     <p>
        <a href="http://cwiki.apache.org/confluence/display/GMOxDOC21/Developing+an+Application+Client+to+access+EJB">Developing an Application Client to access EJB</a>
        has been edited by             <a href="http://cwiki.apache.org/confluence/display/~ashjain2@gmail.com">Ashish Jain</a>
            <span class="smallfont">(Feb 21, 2008)</span>.
     </p>
    
     <p>
                 <a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=76926&originalVersion=17&revisedVersion=18">(View changes)</a>
     </p>

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

/*]]>*/</style><div class="Scrollbar"><table class='ScrollbarTable'><tr><td width='33%' class='ScrollbarPrevName'>&nbsp;</td><td width='33%' class='ScrollbarParent'><sup><a href="/confluence/display/GMOxDOC21/Application+clients"><img border='0' align='middle' src='/confluence/images/icons/up_16.gif' width='8' height='8'></a></sup><a href="/confluence/display/GMOxDOC21/Application+clients">Application clients</a></td><td width='33%' class='ScrollbarNextName'>&nbsp;</td></tr></table></div>
<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>
<ul>
	<li>Sun JDK 5.0&#43; (J2SE 1.5)</li>
	<li>Eclipse 3.3.1.1 (Eclipse Classic package of Europa distribution), which is platform specific</li>
	<li>Web Tools Platform (WTP) 2.0.1</li>
	<li>Data Tools Platform (DTP) 1.5.1</li>
	<li>Eclipse Modeling Framework (EMF) 2.3.1</li>
	<li>Graphical Editing Framework (GEF) 3.3.1</li>
</ul>


<p>Details on installing eclipse are provided in the <a href="/confluence/display/GMOxDOC21/Development+environment" title="Development environment">Development environment</a> section. This tutorial is organized in the following sections:</p>
<div>
<ul>
  <li><a href='#DevelopinganApplicationClienttoaccessEJB-SettingupEclipseIDEforEJBapplicationdevelopment.'>Setting up Eclipse IDE for EJB application development.</a></li>
  <li><a href='#DevelopinganApplicationClienttoaccessEJB-DevelopingEJBLocalinterface%2CEJBRemoteInterfaceandBeanClass'>Developing EJB Local interface, EJB Remote Interface and Bean Class</a></li>
  <li><a href='#DevelopinganApplicationClienttoaccessEJB-DevelopingaJavaClient'>Developing a Java Client</a></li>
  <li><a href='#DevelopinganApplicationClienttoaccessEJB-DeployandRun'>Deploy and Run</a></li>
</ul></div>

<p>Let us briefly understand this application. This application will take you through creating a simple Stateless Session EJB. Later we will develop a Java Application client to access this EJB. EJB development will make use of annotations which are introduced in Java EE5.</p>

<h1><a name="DevelopinganApplicationClienttoaccessEJB-SettingupEclipseIDEforEJBapplicationdevelopment."></a>Setting up Eclipse IDE for EJB application development.</h1>
<ol>
	<li>Launch Eclipse and select Window-&gt;Open Perspective-&gt;Other-&gt;JavaEE and select Ok<br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/76926/perspective.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Right Click under Project Explorer and create a new EJB project. Mention the fields as shown in the figure. For all the other windows give default values and select Finish.<br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/76926/newproject.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Under Project Explorer, Right click on SimpleEJB and create a new package <b>ejb</b>. Mention the fields as shown in the figure. Select Finish.<br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/76926/package.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Right click on SimpleEJB project under project explorer and select properties.<br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/76926/addjar.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Select Java Build Path and select Add External JARs.<br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/76926/addjar1.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Browse to the directory &lt;GERONIMO_HOME&gt;\repository\org\apache\geronimo\specs\geronimo-ejb_3.0_spec\1.0.1 and select geronimo-ejb_3.0_spec-1.0.1.jar.<br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/76926/addjar2.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Once done select Ok. You can see the geronimo-ejb_3.0_spec-1.0.1.jar added to the build path. This jar provides the essential classes required for the EJB development.<br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/76926/addjar3.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
</ol>


<p>This completes the setting of Eclispe IDE for EJB application development.</p>

<h1><a name="DevelopinganApplicationClienttoaccessEJB-DevelopingEJBLocalinterface%2CEJBRemoteInterfaceandBeanClass"></a>Developing EJB Local interface, EJB Remote Interface and Bean Class</h1>

<ol>
	<li>Right Click on the ejb package and create a new Remote interface <b>CountryCapital</b> as shown in the figure<br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/76926/Interface.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Enter the fields as shown in the figure and select Finish.<br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/76926/Interface2.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Add the following code as shown below
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>CountryCapital.java</b></div><div class="codeContent">
<pre class="code-java"><span class="code-keyword">package</span> ejb;

<span class="code-keyword">import</span> javax.ejb.Remote;
@Remote
<span class="code-keyword">public</span> <span class="code-keyword">interface</span> CountryCapital {
	<span class="code-keyword">public</span> <span class="code-object">String</span> capitalName(<span class="code-object">String</span> countryName);
}</pre>
</div></div>
<p>Here @Remote is an annotation used to declare the interface as a Remote Interface.<br clear="all" /></p></li>
	<li>Similarly create a Local interface <b>CountryCapitalLocal</b>. Add the following code to the interface<br clear="all" />
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>CountryCapitalLocal.java</b></div><div class="codeContent">
<pre class="code-java"><span class="code-keyword">package</span> ejb;

<span class="code-keyword">import</span> javax.ejb.Local;
@Local
<span class="code-keyword">public</span> <span class="code-keyword">interface</span> CountryCapitalLocal {
	<span class="code-keyword">public</span> <span class="code-object">String</span> capitalName(<span class="code-object">String</span> countryName);

}</pre>
</div></div><br clear="all" />
Similarly in this code we have @Local annotation which declares this interface as local.<br clear="all" /> <br clear="all" />
In remote as well as local interface we have the declaration for only one Business method. So only this method will be visible to the application client. Methods other than capitalName if implemented in the Bean class will be private to Bean class and will not be visible to application client.<br clear="all" /> <br clear="all" /></li>
	<li>Next step is to create a Bean Class which will implement the Business method to be executed. Right Click on the jsf package and create a new class.<br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/76926/bean.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Enter the class name as <b>CountryCapitalBean</b>.<br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/76926/bean1.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Populate the bean class with the code as follows<br clear="all" />
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>CountryCapitalBean.java</b></div><div class="codeContent">
<pre class="code-java"><span class="code-keyword">package</span> ejb;

<span class="code-keyword">import</span> javax.ejb.Stateless;
@Stateless
<span class="code-keyword">public</span> class CountryCapitalBean <span class="code-keyword">implements</span> CountryCapital,CountryCapitalLocal{
	<span class="code-keyword">public</span> <span class="code-object">String</span> capitalName(<span class="code-object">String</span> countryName)
	{
		<span class="code-object">String</span> capital=<span class="code-keyword">new</span> <span class="code-object">String</span>(<span class="code-quote">"No such country"</span>);
		<span class="code-keyword">if</span> (countryName.equalsIgnoreCase(<span class="code-quote">"India"</span>))
		{
			capital=<span class="code-quote">"New Delhi"</span>;
		}
		<span class="code-keyword">if</span> (countryName.equalsIgnoreCase(<span class="code-quote">"United States Of America"</span>)) 
		{
			capital=<span class="code-quote">"Washington DC"</span>;
		}
		<span class="code-keyword">if</span> (countryName.equalsIgnoreCase(<span class="code-quote">"China"</span>)) 
		{
			capital=<span class="code-quote">"Bejing"</span>;
		} 
		
		<span class="code-keyword">return</span> capital;
		
	}

}</pre>
</div></div></li>
</ol>


<p>This completes the development of EJB application.<br clear="all" /></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">Warning</b><br />
<p>Due to some limitations in Geronimo Eclipse Plugin the generated deployment plan(openejb-jar.xml) does not have the correct namespace. Replace the existing namespace as shown in the figure with the following<br/>
&lt;openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.2" xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.2" xmlns:pkgen="http://www.openejb.org/xml/ns/pkgen-2.0" xmlns:sec="http://geronimo.apache.org/xml/ns/security-1.2" xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2"&gt;</p></td></tr></table>
<p><img src="/confluence/download/attachments/76926/openejbjar.png" align="absmiddle" border="0" /></p>

<h1><a name="DevelopinganApplicationClienttoaccessEJB-DevelopingaJavaClient"></a>Developing a Java Client</h1>

<ol>
	<li>Select File-&gt;New-&gt;Project-&gt;Java-&gt;Java Project. Select Next.<br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/76926/javaproj.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>In the New Project Window give the Project name ss ApplicationClient and select Next.<br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/76926/javaproj1.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>On the Java Settings window. Select the Projects tab and click add.<br/>
<img src="/confluence/download/attachments/76926/javaproj2.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Check the box for SimpleEJB and Select OK.<br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/76926/javaproj3.png" align="absmiddle" border="0" />!<br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>This will add the SimpleEJB project to the build path of the Application Client as shown in the figure. Select Finish.<br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/76926/javaproj4.png" align="absmiddle" border="0" />!<br clear="all" /> <br clear="all" /> <br clear="all" />
<table cellpadding='5' width='85%' cellspacing='8px' class='tipMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Why to add EJB project to build path <img class="emoticon" src="/confluence/images/icons/emoticons/sad.gif" height="20" width="20" align="absmiddle" alt="" border="0"/></b><br />
<p>This is because the build path is used to find the classes referenced by your Client source code. These classes will be required for compilation of Client source code.</p></td></tr></table></li>
	<li>Right click on package appclient and create a new Java Class.<br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/76926/javaproj4.png" align="absmiddle" border="0" />!<br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Give the class name as ApplicationClient as shown in the figure. Select Finish.<br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/76926/javaproj5.png" align="absmiddle" border="0" />!<br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Populate the ApplicationClient.java with the following code<br clear="all" />
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>ApplicationClient.java</b></div><div class="codeContent">
<pre class="code-java"><span class="code-keyword">package</span> appclient;

<span class="code-keyword">import</span> java.io.BufferedReader;
<span class="code-keyword">import</span> java.io.InputStreamReader;
<span class="code-keyword">import</span> java.util.Properties;
<span class="code-keyword">import</span> ejb.CountryCapital;
<span class="code-keyword">import</span> javax.naming.Context;
<span class="code-keyword">import</span> javax.naming.InitialContext;

<span class="code-keyword">public</span> class ApplicationClient {
	 <span class="code-keyword">public</span> <span class="code-keyword">static</span> void main(<span class="code-object">String</span> [] args)
	 {
		 <span class="code-object">String</span> capital=<span class="code-keyword">new</span> <span class="code-object">String</span>();
		 <span class="code-keyword">try</span>{
			 Properties prop=<span class="code-keyword">new</span> Properties();
			 prop.put(Context.INITIAL_CONTEXT_FACTORY, <span class="code-quote">"org.apache.openejb.client.RemoteInitialContextFactory"</span>);
				prop.put(<span class="code-quote">"java.naming.provider.url"</span>, <span class="code-quote">"ejbd:<span class="code-comment">//localhost:4201"</span>);
</span>	 Context context = <span class="code-keyword">new</span> InitialContext(prop);
	 
	 CountryCapital myejb =
	 (CountryCapital)context.lookup(<span class="code-quote">"CountryCapitalBeanRemote"</span>);
	 <span class="code-object">System</span>.out.println(<span class="code-quote">"Give the name of a country"</span>);
	 BufferedReader in= <span class="code-keyword">new</span> BufferedReader(<span class="code-keyword">new</span> InputStreamReader(<span class="code-object">System</span>.in));
	 <span class="code-object">String</span> str="";
	 str=in.readLine();
	 capital=myejb.capitalName(<span class="code-quote">"str"</span>);
	 <span class="code-object">System</span>.out.println(capital);
		 }
		 <span class="code-keyword">catch</span>(Exception e)
		 {
			 e.printStackTrace();
		 }
	 }
	

}</pre>
</div></div><br clear="all" />
Let us try to understand following code snippet<br clear="all" />
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>CodeSnippet</b></div><div class="codeContent">
<pre class="code-java">Properties prop=<span class="code-keyword">new</span> Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY, <span class="code-quote">"org.apache.openejb.client.RemoteInitialContextFactory"</span>);
prop.put(<span class="code-quote">"java.naming.provider.url"</span>, <span class="code-quote">"ejbd:<span class="code-comment">//localhost:4201"</span>);
</span>Context context = <span class="code-keyword">new</span> InitialContext(prop);
CountryCapital myejb =(CountryCapital)context.lookup(<span class="code-quote">"CountryCapitalBeanRemote"</span>);</pre>
</div></div><br clear="all" />
<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Useful Information</b><br />
<p>The above code suggests that which InitialContextFactory to be used to create the InitialContext. Here we are using <b>org.apache.openejb.client.RemoteInitialContextFactory</b> to create the InitialContext.<br/>
In this case as the EJB server is the naming service provider and has naming service runnning at Port 4201.<br/>
So we need to specify the location of the EJB server. In this case it is ejbd://localhost:4201.<br/>
Once this is done we have the context that provides us the ability to lookup and get objects.</p></td></tr></table><br clear="all" />
<table cellpadding='5' width='85%' cellspacing='8px' class='tipMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Why is the lookup name CountryCapitalBeanRemote?? <img class="emoticon" src="/confluence/images/icons/emoticons/sad.gif" height="20" width="20" align="absmiddle" alt="" border="0"/></b><br />
<p>This will be discussed in deploy and run section.</p></td></tr></table></li>
	<li>Next step is to add org.apache.openejb.client.RemoteInitialContextFactory Class to the build path. This is because the application client needs this Class to create the InitialContext as explained above.</li>
	<li>Right click on ApplicationClient project under project explorer. Select Properties.<br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/76926/javaproj6.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Select Java Build Path. Under Java Build Path select Libraries-&gt; Add External JARs.<br clear="all" /> <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/76926/javaproj7.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Browse to &lt;GERONIMO_HOME&gt;\repository\org\apache\openejb\openejb-client\3.0-beta-2 and Select the jar openejb-client-3.0-beta-2.jar. Select Ok.</li>
</ol>


<p>This completes the Application Client Development.</p>

<h1><a name="DevelopinganApplicationClienttoaccessEJB-DeployandRun"></a>Deploy and Run</h1>
<p>This section will take you through the deployment of the EJB application. Later we will run the application client with some sample inputs.</p>

<ol>
	<li>To deploy the EJB application on to server Export the EJB application as a jar file. Right Click on SimpleEJB application and Select Export-&gt;EJB JAR File as shown in the figure.<br clear="all" /> <br clear="all" /> <br clear="all" />
<span class="error">Unable to render embedded object: File (run.png) not found.</span><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Browse to the Destination of your choice and Select Finish. This will export the SimpleEJB application as a jar file. This jar will be later deployed on to Geronimo server<br clear="all" />
<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">Why to Export EJB? Why cannot I use Eclipse for deploying the EJB application on the server?</b><br />
<p>Due to some limitation Eclipse is not able to deploy the EJB application on to server. This issue will be fixed very soon.</p></td></tr></table><br clear="all" /></li>
	<li>Start the server and Launch the Administrative Console. Under Applications, Select Deploy New and Deploy the SimpleEJB.jar on the server.</li>
	<li>Once the Deployment is successful. Open &lt;GERONIMO_HOME&gt;/var/log/server.log. Find the following in server.log
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>Snippet from server.log after deployment of SimpleEJB</b></div><div class="codeContent">
<pre class="code-java">18:16:39,750 INFO  [startup] Jndi(name=CountryCapitalBeanLocal) --&gt; Ejb(deployment-id=SimpleEJB/CountryCapitalBean)
18:16:39,750 INFO  [startup] Jndi(name=CountryCapitalBeanRemote) --&gt; Ejb(deployment-id=SimpleEJB/CountryCapitalBean)</pre>
</div></div>
<p>As can be seen openEJB container after deployment suggests the Remote as well as Local lookup names.<br/>
In this case since the SimpleEJB application and Java Application Client are running on different instances of JVM. We need to have the CountryCapitalBeanRemote as the lookup name.</p></li>
	<li>Under Eclipse Right Click on the Application Client project and Run as a Java application.</li>
</ol>


<p>Sample Input1: India<br clear="all" /> <br clear="all" /> <br clear="all" /> 
<span class="error">Unable to render embedded object: File (run1.png) not found.</span><br clear="all" /> <br clear="all" /> <br clear="all" />
Sample Input2: China<br clear="all" /> <br clear="all" /> <br clear="all" />
<span class="error">Unable to render embedded object: File (run2.png) not found.</span><br clear="all" /> <br clear="all" /> <br clear="all" />
Sample Input3: United States Of America<br clear="all" /> <br clear="all" /> <br clear="all" />
<span class="error">Unable to render embedded object: File (run3.png) not found.</span><br clear="all" /> <br clear="all" /> <br clear="all" />
Sample Input4: France<br clear="all" /> <br clear="all" /> <br clear="all" />
<span class="error">Unable to render embedded object: File (run4.png) not found.</span><br clear="all" /> <br clear="all" /> <br clear="all" /></p>



</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