geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Geronimo Development: Clustering Geronimo with Open Terracotta (page edited)
Date Wed, 12 Mar 2008 16:32: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/GMOxDEV">GMOxDEV</a> :
            <a href="http://cwiki.apache.org/confluence/display/GMOxDEV/Clustering+Geronimo+with+Open+Terracotta">Clustering Geronimo with Open Terracotta</a>
        </span>
    </div>

     <p>
        <a href="http://cwiki.apache.org/confluence/display/GMOxDEV/Clustering+Geronimo+with+Open+Terracotta">Clustering Geronimo with Open Terracotta</a>
        has been edited by             <a href="http://cwiki.apache.org/confluence/display/~orion">Orion Letizi</a>
            <span class="smallfont">(Mar 12, 2008)</span>.
     </p>
    
     <p>
                 <a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=43842&originalVersion=180&revisedVersion=181">(View changes)</a>
     </p>

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

/*]]>*/</style><div class="Scrollbar"><table class='ScrollbarTable'><tr><td class='ScrollbarPrevIcon'><a href="/confluence/display/GMOxDEV/Clustering+Configuration+for+Jetty"><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/GMOxDEV/Clustering+Configuration+for+Jetty">Clustering Configuration for Jetty</a>&nbsp;</td><td width='33%' class='ScrollbarParent'><sup><a href="/confluence/display/GMOxDEV/Clustering"><img border='0' align='middle' src='/confluence/images/icons/up_16.gif' width='8' height='8'></a></sup><a href="/confluence/display/GMOxDEV/Clustering">Clustering</a></td><td width='33%' class='ScrollbarNextName'>&nbsp;<a href="/confluence/display/GMOxDEV/Geronimo+Clustering+with+Gcache">Geronimo Clustering with Gcache</a></td><td class='ScrollbarNextIcon'><a href="/confluence/display/GMOxDEV/Geronimo+Clustering+with+Gcache"><img border='0' align='middle' src='/confluence/images/icons/forwd_16.gif' width='16' height='16'></a></td></tr></table></div>
<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>These instructions are out of date.  They are for the prototype.  There is currently a Terracotta plugin for Geronimo written by Jeff Genender, but the docs haven't been prepared for it.  Those are coming soon.  &mdash;Orion Letizi, March 12, 2008</p></td></tr></table>
<p>This article describes how to cluster Geronimo HTTP Session web application data using the Open Terracotta project.</p>

<h2><a name="ClusteringGeronimowithOpenTerracotta-OpenTerracottaOverview"></a>Open Terracotta Overview</h2>

<p><span class="nobr"><a href="http://wiki.terracotta.org/confluence/display/orgsite/Home" title="Visit page outside Confluence" rel="nofollow">Open Terracotta<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> is an OSS project that supports transparent clustering. The project currently has three different packages available: </p>

<ul>
	<li>Clustering POJOs (Terracotta DSO Package)</li>
	<li>Terracotta HTTP Session Clustering (Terracotta Sessions Package)</li>
	<li>Terracota for Clustering Spring (Terracotta Spring Package)</li>
</ul>


<p>This article will utilize the Terracotta Sessions Package to cluster HTTP Sessions in the Geronimo environment.   </p>

<p><b>Here are some of the highlights of the Open Terracotta technology:</b></p>
<ul>
	<li>Application developers no longer needs to write their application for a clustered environment</li>
	<li>Clustering is transparently done at runtime via JVM level clustering (byte code instrumentation of JVM)</li>
	<li>The Terracotta Sever is responsible for transparently replicating/maintaining state across all application servers in the cluster</li>
	<li>Cluster Members appear to be part of one large Global JVM</li>
	<li>Terracotta Clustering does not require "Data Serialization"</li>
	<li>Developers define (in xml configuration file) which objects are to clustered.  For the Terracotta Sessions package this includes identifying which context-roots are to be clustered as well as the data types that are to be placed in the HttpSession</li>
	<li>Terracotta supports ACID (Atomic, Consistent, Isolated, Durable) Compliance (transactional behavior between cluster members)</li>
	<li>Open Terracotta supports lazy loading across cluster members<br clear="all" /> <br clear="all" /></li>
</ul>


<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>Note that Open Terracotta is not an Apache project and is not currently available under the Apache license but rather under the Terracotta Public License. You should determine if the licensing is correct for your needs.</p></td></tr></table> 

<p>More information on the Open Terracotta project available at: <span class="nobr"><a href="http://wiki.terracotta.org/confluence/display/orgsite/Home" title="Visit page outside Confluence" rel="nofollow">http://wiki.terracotta.org/confluence/display/orgsite/Home<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></p>

<h2><a name="ClusteringGeronimowithOpenTerracotta-ArticleOverview"></a>Article Overview</h2>

<p>This article documents how to cluster a simple web application's HttpSession data using Open Terracotta. The required steps include:</p>
<ul>
	<li><a href="#ClusteringGeronimowithOpenTerracotta-installterracotta" title="installterracotta on Clustering Geronimo with Open Terracotta">Install Terracotta Server</a></li>
	<li><a href="#ClusteringGeronimowithOpenTerracotta-installgeronimo" title="installgeronimo on Clustering Geronimo with Open Terracotta">Install Geronimo Server</a></li>
	<li><a href="#ClusteringGeronimowithOpenTerracotta-installterracottaclient" title="installterracottaclient on Clustering Geronimo with Open Terracotta">Install Terracotta Client</a></li>
	<li><a href="#ClusteringGeronimowithOpenTerracotta-configtc" title="configtc on Clustering Geronimo with Open Terracotta">Update Terracotta configuration file</a></li>
	<li><a href="#ClusteringGeronimowithOpenTerracotta-starttc" title="starttc on Clustering Geronimo with Open Terracotta">Start Terracotta Server</a></li>
	<li><a href="#ClusteringGeronimowithOpenTerracotta-startgeronimo" title="startgeronimo on Clustering Geronimo with Open Terracotta">Start Terracotta Client and Geronimo Server</a></li>
	<li><a href="#ClusteringGeronimowithOpenTerracotta-installapp" title="installapp on Clustering Geronimo with Open Terracotta">Install Web Application on each Geronimo cluster member</a></li>
	<li><a href="#ClusteringGeronimowithOpenTerracotta-installwebserver" title="installwebserver on Clustering Geronimo with Open Terracotta">Setup Load Balancing and Failover</a></li>
	<li><a href="#ClusteringGeronimowithOpenTerracotta-test" title="test on Clustering Geronimo with Open Terracotta">Testing Load Balancing and Failover</a></li>
	<li><a href="#ClusteringGeronimowithOpenTerracotta-tcadmin" title="tcadmin on Clustering Geronimo with Open Terracotta">Use the Terracotta admin console</a></li>
</ul>


<h3><a name="ClusteringGeronimowithOpenTerracotta-InstallTerracottaServer"></a>Install Terracotta Server <a name="ClusteringGeronimowithOpenTerracotta-installterracotta"></a></h3>

<p>Terracotta needs to be installed on one machine that will serve as the <b>Terracotta Server</b>. The Terracotta server will be responsible for maintaining session state and assuring that it is accurately reflected in each of the Geronimo cluster members.</p>

<p>Download the <span class="nobr"><a href="http://wiki.terracotta.org/confluence/display/orgsite/Download" title="Visit page outside Confluence" rel="nofollow">Terracotta Sessions bundle<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> and run the Installer.  This example requires "Open Terracotta 2.2.1 Stable 2" or higher. </p>

<h3><a name="ClusteringGeronimowithOpenTerracotta-InstallGeronimoServer"></a>Install Geronimo Server<a name="ClusteringGeronimowithOpenTerracotta-installgeronimo"></a></h3>

<p>The Geronimo Application Server needs to be installed on each machine that is to be clustered.  The example in this article will install Geronimo on two separate machines (cluster members).</p>

<p>Download the Geronimo image that includes the Tomcat web container from the <span class="nobr"><a href="http://geronimo.apache.org/downloads.html" title="Visit page outside Confluence" rel="nofollow">Geronimo Website<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> and unpack it on each of the cluster members.  This example requires Geronimo 1.1.1 with the Tomcat web container. The Jetty web container is not yet supported by Terracotta. <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>Note that the same version release of Geronimo must be installed on each machine to be clustered.  Mixing versions of Geronimo is not currently supported by Terracotta.</td></tr></table></p>

<h3><a name="ClusteringGeronimowithOpenTerracotta-InstallTerracottaClient"></a>Install Terracotta Client<a name="ClusteringGeronimowithOpenTerracotta-installterracottaclient"></a></h3>

<p>The Terracotta client needs to be installed on each machine that contains a Geronimo cluster member. Currently, the same install bundle includes both the Terracotta server and client.  So, it is possible to run the Terracotta Server and Terracotta Client on the same machine with a common installation . </p>

<p>Download the <span class="nobr"><a href="http://wiki.terracotta.org/confluence/display/orgsite/Download" title="Visit page outside Confluence" rel="nofollow">Terracotta Sessions bundle<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> and run the Installer on each cluster member.  This example requires "Open Terracotta 2.2.1 Stable 2" or higher. </p>

<h3><a name="ClusteringGeronimowithOpenTerracotta-UpdateTerracottaconfigurationfile"></a>Update Terracotta configuration file <a name="ClusteringGeronimowithOpenTerracotta-configtc"></a></h3>

<p>The tc-config.xml file identifies which context-roots are to be clustered as well as the data types that are to be placed in the HttpSession.  </p>

<p>This example will use the Terracotta configuration file that is delivered with the Terracotta distribution.  The specific file is: C:\Terracotta\terracotta-2.2.1\sessions\sandbox\tomcat5.5\tc-config.xml</p>


<p>Change the <b>tc-config.xml</b> file to look similar to the following example.  Note that the tc-config.xml example below only shows the xml items that are to be updated.  Other portions of that xml file should remain unchanged.  Remember to change the IP address in the example below to the address of the Terracotta Server.</p>


<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>Excerpt from tc-config.xml</b></div><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;servers&gt;</span>
    <span class="code-tag">&lt;server name=<span class="code-quote">"dsoServer"</span> host=<span class="code-quote">"192.168.0.2"</span>&gt;</span>
      <span class="code-tag">&lt;data&gt;</span>data/server-data<span class="code-tag">&lt;/data&gt;</span>
      <span class="code-tag">&lt;logs&gt;</span>logs/server-logs<span class="code-tag">&lt;/logs&gt;</span>
    <span class="code-tag">&lt;/server&gt;</span>
  <span class="code-tag">&lt;/servers&gt;</span>
...
  <span class="code-tag">&lt;instrumented-classes&gt;</span>
     <span class="code-tag">&lt;include&gt;</span>
       <span class="code-tag">&lt;class-expression&gt;</span>SessionExample<span class="code-tag">&lt;/class-expression&gt;</span>  
     <span class="code-tag">&lt;/include&gt;</span>
  <span class="code-tag">&lt;/instrumented-classes&gt;</span>
...
  <span class="code-tag">&lt;web-applications&gt;</span>
    <span class="code-tag">&lt;web-application&gt;</span>servlets-examples-terracotta<span class="code-tag">&lt;/web-application&gt;</span>  
  <span class="code-tag">&lt;/web-applications&gt;</span></pre>
</div></div>



<h3><a name="ClusteringGeronimowithOpenTerracotta-StartTerracottaServer"></a>Start Terracotta Server <a name="ClusteringGeronimowithOpenTerracotta-starttc"></a></h3>
<p>Start the Terracotta server specifying the location of the tc-config.xml file that you just updated.</p>
<ul>
	<li>cd C:\Terracotta\terracotta-2.2.1\sessions\bin</li>
	<li>start-tc-server.bat &#45;f c:\Terracotta\terracotta-2.2.1\sessions\sandbox\tomcat5.5\tc-config.xml</li>
</ul>



<h3><a name="ClusteringGeronimowithOpenTerracotta-StartTerracottaClientandGeronimoServer"></a>Start Terracotta Client and Geronimo Server<a name="ClusteringGeronimowithOpenTerracotta-startgeronimo"></a></h3>
<p>Open Terracotta supports a variety of JVMs and each one requires a unique boot jar be present in the bootclasspath when launching the Geronimo server.  The example below is using the Windows JVM that is present in the Terracotta Sessions Package.  It is possible to use other JVMs, though a different boot jar will likely need to be created.  Also some of the launch arguments in the script below were obtained by issuing the dso-env script in c:\Terracotta\terracotta-2.2.1\sessions\bin\ directory.  You should issue this command on your system to find the arguments that are appropriate for your environment.  </p>

<p>The IPAddress in the example below needs to be replaced with the IP Address (or hostname) of your Terracotta server.  This value will be used to determine which Terracotta server will provide the Terracotta client with its tc-config.xml file. Alternately, -Dtc.config="IPAddress:9510" can be ommitted though you will need to update tc-config.xml on each cluster member (e.g. c:\Terracotta\terracotta-2.2.1\sessions\sandbox\tomcat5.5\tc-config.xml).  Review the <span class="nobr"><a href="http://wiki.terracotta.org/confluence/display/orgsite/Home" title="Visit page outside Confluence" rel="nofollow">Terracotta documentation<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> for more details.</p>

<p>Here is an example startup on a Windows Machine:</p>
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>Starting Geronimo</b></div><div class="codeContent">
<pre class="code-java">c:\Terracotta\terracotta-2.2.1\jre\bin\java.exe
 -Xbootclasspath/p:<span class="code-quote">"C:\Terracotta\terracotta-2.2.1\common\lib\dso-boot\dso-boot-hotspot_win32_150_09.jar"</span>
 -Dtc.install-root=<span class="code-quote">"C:\Terracotta\terracotta-2.2.1"</span>
 -Dtc.config=<span class="code-quote">"IPAddress:9510"</span>
 -jar c:\geronimo-1.1.1-TERRACOTTA\geronimo-1.1.1\bin\server.jar</pre>
</div></div>


<h3><a name="ClusteringGeronimowithOpenTerracotta-InstallWebApplicationoneachGeronimoclustermember"></a>Install Web Application on each Geronimo cluster member <a name="ClusteringGeronimowithOpenTerracotta-installapp"></a></h3>
<p>Use the Geronimo admin console to install the appropriate example application to each of the Geronimo installations. </p>

<p>Here are links to the example applications and the deployment plan.</p>

<ul>
	<li><span class="nobr"><a href="/confluence/download/attachments/43842/servlets-examples-cluster-node1.war?version=1" title="servlets-examples-cluster-node1.war attached to Clustering Geronimo with Open Terracotta">servlets-examples-cluster-node1.war<sup><img class="rendericon" src="/confluence/images/icons/link_attachment_7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> &#45; Web application for Cluster Member 1</li>
	<li><span class="nobr"><a href="/confluence/download/attachments/43842/servlets-examples-cluster-node2.war?version=1" title="servlets-examples-cluster-node2.war attached to Clustering Geronimo with Open Terracotta">servlets-examples-cluster-node2.war<sup><img class="rendericon" src="/confluence/images/icons/link_attachment_7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> &#45; Web application for Cluster Member 2</li>
	<li><span class="nobr"><a href="/confluence/download/attachments/43842/servlets-examples-geronimo-plan.xml?version=1" title="servlets-examples-geronimo-plan.xml attached to Clustering Geronimo with Open Terracotta"> servlets-examples-geronimo-plan.xml<sup><img class="rendericon" src="/confluence/images/icons/link_attachment_7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> &#45; Geronimo common deployment plan (for both cluster members)</li>
</ul>


<p>Note that the two applications above are identical except for the field which indicates the Server name (e.g. Server1, Server2).  This distinction will be useful when testing.</p>

<ul>
	<li>The Geronimo admin console can be accessed at <span class="nobr"><a href="http://localhost:8080/console" title="Visit page outside Confluence" rel="nofollow">http://localhost:8080/console<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> on each machine.</li>
	<li>The default id and password for the Geronimo admin console is id=system password=manager.</li>
	<li>Select "Applications-&gt; Deploy New" from the GUI and follow the instructions on the panel for installing the example application</li>
</ul>



<p>Now test that the applications were deployed correctly by accessing the applications with your favorite Web Browser:</p>

<p><span class="nobr"><a href="http://YourHost1:8080/servlets-examples-terracotta/servlet/SessionExample" title="Visit page outside Confluence" rel="nofollow">http://YourHost1:8080/servlets-examples-terracotta/servlet/SessionExample<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span><br/>
<span class="nobr"><a href="http://YourHost2:8080/servlets-examples-terracotta/servlet/SessionExample" title="Visit page outside Confluence" rel="nofollow">http://YourHost2:8080/servlets-examples-terracotta/servlet/SessionExample<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></p>

<p>If this is working correctly, it is now time to setup the Load Balancer.</p>

<h3><a name="ClusteringGeronimowithOpenTerracotta-SetupLoadBalancingandFailover"></a>Setup Load Balancing and Failover<a name="ClusteringGeronimowithOpenTerracotta-installwebserver"></a></h3>

<p>Now you are ready to setup the Load Balancer. We recommend using Apache HTTP server and mod_jk for this example.</p>

<ul>
	<li>Install Apache HTTP server &#45; instructions and downloads available at <span class="nobr"><a href="http://httpd.apache.org/" title="Visit page outside Confluence" rel="nofollow">http://httpd.apache.org/<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
	<li>Install Apache mod_jk &#45; See <span class="nobr"><a href="http://tomcat.apache.org/tomcat-5.5-doc/balancer-howto.html" title="Visit page outside Confluence" rel="nofollow">http://tomcat.apache.org/tomcat-5.5-doc/balancer-howto.html<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
</ul>


<p><b>Configuration tips for mod_jk:</b> <br clear="all" /> <br clear="all" />
worker.list=loadbalancer,status<br/>
worker.node1.port=8009<br/>
worker.node1.host=_your.first.cluster.member.host.name_or_IP_address<br/>
worker.node1.type=ajp13<br/>
worker.node1.lbfactor=1</p>

<p>worker.node2.port=8009<br/>
worker.node2.host=_your.second.cluster.member.host.name_or_IP_address<br/>
worker.node2.type=ajp13<br/>
worker.node2.lbfactor=1</p>

<p>worker.loadbalancer.type=lb<br/>
worker.loadbalancer.balance_workers=node1,node2<br/>
worker.loadbalancer.sticky_session=1<br/>
worker.status.type=status</p>

<p>/servlets-examples-terracotta=loadbalancer<br/>
/servlets-examples-terracotta/*=loadbalancer</p>

<h3><a name="ClusteringGeronimowithOpenTerracotta-TestingLoadBalancingandFailover"></a>Testing Load Balancing and Failover<a name="ClusteringGeronimowithOpenTerracotta-test"></a></h3>

<p>Once you get Apache HTPP Server and mod_jk setup correctly.  You can test load balancing and failover by requesting the following URL with your favorite Web browser.  Of course, replace YourHost with the actual host name or IP address.</p>

<p><span class="nobr"><a href="http://YourHost/servlets-examples-terracotta/servlet/SessionExample" title="Visit page outside Confluence" rel="nofollow">http://YourHost/servlets-examples-terracotta/servlet/SessionExample<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </p>

<p>Note that the output page contains the ID of the server that is servicing the request. In your browser window, fill in the appropriate input fields and hit the submit button. Add a few more items to your shopping cart. Notice that the browser indicates which server (Server1 or Server2) is servicing your request.  Without Sticky Session support, you may see the load balancer alternately route the requests between the two cluster members.  If you have setup everything correctly, then the shopping cart data should be present in the session after the browser request moves between the two servers.  For Sticky Session, you can test failover by stopping the geronimo server that is currently servicing the session and seeing that the next http request will failover into the remaining cluster member. The httpsession data from the previous request should be recovered and displayed in the refreshed browser window.</p>

<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>When testing using a web browser, make sure that you erase cookies and cached pages between test cases. Browser caching can cause confusion when testing. </td></tr></table>


<h3><a name="ClusteringGeronimowithOpenTerracotta-UsetheTerracottaadminconsole"></a>Use the Terracotta admin console<a name="ClusteringGeronimowithOpenTerracotta-tcadmin"></a></h3>
<p>The Terracotta Admin console can also be used to verify that session data is being properly replicated in the Terracotta Server.  </p>

<p>Issue the Following commands</p>
<ul>
	<li>cd c:\Terracotta\terracotta-2.2.1\sessions\bin</li>
	<li>tc-admin.bat</li>
	<li>Specify port 9520 and select "Connect"</li>
	<li>Navigate down through the resource tree and you will be able to see the httpSession data from your browser! <br clear="all" /> <br clear="all" /></li>
</ul>


<h2><a name="ClusteringGeronimowithOpenTerracotta-InvestigationItems%28canpossiblybecomeFAQinnearfuture%29"></a>Investigation Items (can possibly become FAQ in near future)</h2>
<ul>
	<li>Investigate if there is a slimmed down Terracotta sessions download image that doesn't include the Session Configurator, JDK, samples, etc.</li>
	<li>Investigate if there is a slimmed down Terracotta sessions download image that includes only the Terracotta Client.</li>
	<li>Investigate if Open Terracotta plans to support the Jetty Web Container.</li>
	<li>Investigate Sticky Session support.</li>
	<li>Investigate when Open Terracotta will support EJB clustering for Geronimo.</li>
	<li>Investigate when Open Terracotta will support the IBM JDK.</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