tomee-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] OpenEJB: OpenEJB 3.1.1 (page edited)
Date Wed, 17 Jun 2009 21:19: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/OPENEJB">OPENEJB</a> :
            <a href="http://cwiki.apache.org/confluence/display/OPENEJB/OpenEJB+3.1.1">OpenEJB 3.1.1</a>
        </span>
    </div>

     <p>
        <a href="http://cwiki.apache.org/confluence/display/OPENEJB/OpenEJB+3.1.1">OpenEJB 3.1.1</a>
        has been edited by             <a href="http://cwiki.apache.org/confluence/display/~jean-louis.monteiro@atosorigin.com">Jean-Louis MONTEIRO</a>
            <span class="smallfont">(Jun 17, 2009)</span>.
     </p>
    
     <p>
                 <a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=119151&originalVersion=1&revisedVersion=2">(View changes)</a>
     </p>

    <span class="label">Content:</span><br/>
    <div class="greybox wiki-content"><ul>
	<li>Release Date: June 2nd, 2009</li>
	<li>Partial EJB 3.1 support</li>
	<li>EJB 3.0 support</li>
	<li>EJB 2.1 support</li>
	<li>EJB 2.0 support</li>
	<li>EJB 1.1 support</li>
</ul>


<h1><a name="OpenEJB3.1.1-Download"></a>Download</h1>

<h4><a name="OpenEJB3.1.1-OpenEJBStandloneServer"></a>OpenEJB Standlone Server </h4>
<ul>
	<li><span class="nobr"><a href="http://www.apache.org/dyn/closer.cgi/openejb/3.1.1/openejb-3.1.1.zip" title="Visit page outside Confluence" rel="nofollow">openejb-3.1.1.zip<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> (<span class="nobr"><a href="http://www.apache.org/dist/openejb/3.1.1/openejb-3.1.1.zip.asc" title="Visit page outside Confluence" rel="nofollow">pgp<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>, <span class="nobr"><a href="http://www.apache.org/dist/openejb/3.1.1/openejb-3.1.1.zip.md5" title="Visit page outside Confluence" rel="nofollow">md5<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>)</li>
	<li><span class="nobr"><a href="http://www.apache.org/dyn/closer.cgi/openejb/3.1.1/openejb-3.1.1.tar.gz" title="Visit page outside Confluence" rel="nofollow">openejb-3.1.1.tar.gz<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> (<span class="nobr"><a href="http://www.apache.org/dist/openejb/3.1.1/openejb-3.1.1.tar.gz.asc" title="Visit page outside Confluence" rel="nofollow">pgp<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>, <span class="nobr"><a href="http://www.apache.org/dist/openejb/3.1.1/openejb-3.1.1.tar.gz.md5" title="Visit page outside Confluence" rel="nofollow">md5<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>)</li>
</ul>


<h4><a name="OpenEJB3.1.1-OpenEJBforTomcat"></a>OpenEJB for Tomcat</h4>
<ul>
	<li><span class="nobr"><a href="http://www.apache.org/dyn/closer.cgi/openejb/3.1.1/openejb.war" title="Visit page outside Confluence" rel="nofollow">openejb.war<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> (<span class="nobr"><a href="http://www.apache.org/dist/openejb/3.1.1/openejb.war.asc" title="Visit page outside Confluence" rel="nofollow">pgp<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>, <span class="nobr"><a href="http://www.apache.org/dist/openejb/3.1.1/openejb.war.md5" title="Visit page outside Confluence" rel="nofollow">md5<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>)</li>
</ul>



<h4><a name="OpenEJB3.1.1-EJB3.1andotherexamples%28sourceincluded%29"></a>EJB 3.1 and other examples (source included) </h4>
<ul>
	<li><span class="nobr"><a href="http://www.apache.org/dyn/closer.cgi/openejb/3.1.1/openejb-examples-3.1.1.tar.gz" title="Visit page outside Confluence" rel="nofollow">openejb-examples-3.1.1.tar.gz<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> (<span class="nobr"><a href="http://www.apache.org/dist/openejb/3.1.1/openejb-examples-3.1.1.tar.gz.asc" title="Visit page outside Confluence" rel="nofollow">pgp<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>, <span class="nobr"><a href="http://www.apache.org/dist/openejb/3.1.1/openejb-examples-3.1.1.tar.gz.md5" title="Visit page outside Confluence" rel="nofollow">md5<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>)</li>
	<li><span class="nobr"><a href="http://www.apache.org/dyn/closer.cgi/openejb/3.1.1/openejb-examples-3.1.1.zip" title="Visit page outside Confluence" rel="nofollow">openejb-examples-3.1.1.zip<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> (<span class="nobr"><a href="http://www.apache.org/dist/openejb/3.1.1/openejb-examples-3.1.1.zip.asc" title="Visit page outside Confluence" rel="nofollow">pgp<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>, <span class="nobr"><a href="http://www.apache.org/dist/openejb/3.1.1/openejb-examples-3.1.1.zip.md5" title="Visit page outside Confluence" rel="nofollow">md5<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>)</li>
</ul>


<h4><a name="OpenEJB3.1.1-SourceCode"></a>Source Code </h4>
<ul>
	<li><span class="nobr"><a href="http://www.apache.org/dyn/closer.cgi/openejb/3.1.1/openejb-3.1.1-src.zip" title="Visit page outside Confluence" rel="nofollow">openejb-3.1.1-src.zip<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> (<span class="nobr"><a href="http://www.apache.org/dist/openejb/3.1.1/openejb-3.1.1-src.zip.asc" title="Visit page outside Confluence" rel="nofollow">pgp<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>, <span class="nobr"><a href="http://www.apache.org/dist/openejb/3.1.1/openejb-3.1.1-src.zip.md5" title="Visit page outside Confluence" rel="nofollow">md5<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>)</li>
	<li><span class="nobr"><a href="http://www.apache.org/dyn/closer.cgi/openejb/3.1.1/openejb-3.1.1-src.tar.gz" title="Visit page outside Confluence" rel="nofollow">openejb-3.1.1-src.tar.gz<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> (<span class="nobr"><a href="http://www.apache.org/dist/openejb/3.1.1/openejb-3.1.1-src.tar.gz.asc" title="Visit page outside Confluence" rel="nofollow">pgp<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>, <span class="nobr"><a href="http://www.apache.org/dist/openejb/3.1.1/openejb-3.1.1-src.tar.gz.md5" title="Visit page outside Confluence" rel="nofollow">md5<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>)</li>
</ul>


<h4><a name="OpenEJB3.1.1-ReleaseNotes"></a>Release Notes</h4>
<ul>
	<li><span class="nobr"><a href="http://www.apache.org/dist/openejb/3.1.1/RELEASE-NOTES.txt" title="Visit page outside Confluence" rel="nofollow">RELEASE-NOTES.txt<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
</ul>


<h1><a name="OpenEJB3.1.1-TestedOn"></a>Tested On</h1>

<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'>&nbsp;</th>
<th class='confluenceTh'> Windows XP (JDK 1.5) </th>
<th class='confluenceTh'> Windows XP (JDK 1.6) </th>
<th class='confluenceTh'> Linux (JDK 1.5) </th>
<th class='confluenceTh'> Linux (JDK 1.6) </th>
<th class='confluenceTh'> Mac OSX (JDK 1.5) </th>
<th class='confluenceTh'> Mac OSX (JDK 1.6) </th>
</tr>
<tr>
<td class='confluenceTd'> Embedded </td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
</tr>
<tr>
<td class='confluenceTd'> Standalone </td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
</tr>
<tr>
<td class='confluenceTd'> Tomcat 6.0.14 </td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
</tr>
<tr>
<td class='confluenceTd'> Tomcat 6.0.13 </td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
</tr>
<tr>
<td class='confluenceTd'> Tomcat 6.0.10 </td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
</tr>
<tr>
<td class='confluenceTd'> Tomcat 6.0.9 </td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
</tr>
<tr>
<td class='confluenceTd'> Tomcat 5.5.26 </td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
</tr>
<tr>
<td class='confluenceTd'> Tomcat 5.5.25 </td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
</tr>
<tr>
<td class='confluenceTd'> Tomcat 5.5.23 </td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
</tr>
<tr>
<td class='confluenceTd'> Tomcat 5.5.20 </td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
<td class='confluenceTd'><img class="emoticon" src="/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/></td>
</tr>
</tbody></table>

<h1><a name="OpenEJB3.1.1-ChangeSummary"></a>Change Summary</h1>

<p>Major new features:</p>
<ul>
	<li>TestCase Dependency Injection via @LocalClient</li>
	<li>Support for exposing a single interface as @WebService, @Remote, and @Local</li>
	<li>Support for alternate deployment descriptors for testing and other environments</li>
</ul>


<p>Significant Improvements:</p>

<ul>
	<li>Global "openejb:" jndi namespace</li>
	<li>Ability to use mappedName as a JNDI Name format</li>
	<li>Web service endpoints securable</li>
	<li>@EjbDeployment annotation as alternative to &lt;ejb-deployment&gt; in openejb-jar.xml</li>
	<li>All openejb.* options and values logged on debug</li>
</ul>


<h1><a name="OpenEJB3.1.1-EJB3.1Features"></a>EJB 3.1 Features</h1>

<h2><a name="OpenEJB3.1.1-EJB3.1Singletons"></a>EJB 3.1 Singletons</h2>

<p>Singletons are a new type of Session bean being added to the EJB 3.1 specification.  As the name implies a javax.ejb.Singleton is a session bean with a guarantee that there is at most one instance in the application.</p>

<p>Singletons gives you some important things that are missing in EJB 3.0 and prior versions, such as the ability to have an EJB that is notified when the application starts and notified when the application stops, allowing you to do all sorts of things that previously could only be done with a load-on-startup servlet.  Singletons also give provide a great place to hold data that pertains to the entire application and all users using it, without the need for a static.  Additionally, Singleton beans have multi-threaded capabilities allowing them to be invoked by several threads at one time similar to a Servlet.</p>

<p>See the <a href="/confluence/display/OPENEJBx30/Singleton+Beans" title="Singleton Beans">Singleton API</a> and <a href="/confluence/display/OPENEJB/Singleton+Example" title="Singleton Example">Singleton Example</a> pages.</p>

<h2><a name="OpenEJB3.1.1-EmbeddableforTestingandJavaSEusage%28proposedEJB3.1feature%29"></a>Embeddable for Testing and Java SE usage (proposed EJB 3.1 feature)</h2>

<p>Over the years, OpenEJB has innovated the art of the embedded/Java SE EJB container usable as a plain library much the way an embedded databases work.  In a simple 1, 2, 3 step of 1) add OpenEJB to your classpath, 2) add a META-INF/ejb-jar.xml containing at minimum "&lt;ejb-jar/&gt;", then 3) use the org.apache.openejb.client.LocalInitialContextFactory when creating your client InitialContext, you've got a Java SE EJB container that can be used in unit tests, your IDE, or anywhere you'd like to drop in EJB functionality.  Configuration can be done through an openejb.xml file or can be encapsulated 100% in the test case through the parameters passed to the InitialContext.  For example, to create a JTA DataSource for JPA usage, you can simply:</p>

<div class="code"><div class="codeContent">
<pre class="code-java">Properties p = <span class="code-keyword">new</span> Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, <span class="code-quote">"org.apache.openejb.client.LocalInitialContextFactory"</span>);
p.put(<span class="code-quote">"movieDatabase"</span>, <span class="code-quote">"<span class="code-keyword">new</span>:<span class="code-comment">//Resource?type=DataSource"</span>);
</span>p.put(<span class="code-quote">"movieDatabase.JdbcDriver"</span>, <span class="code-quote">"org.hsqldb.jdbcDriver"</span>);
p.put(<span class="code-quote">"movieDatabase.JdbcUrl"</span>, <span class="code-quote">"jdbc:hsqldb:mem:moviedb"</span>);

Context context = <span class="code-keyword">new</span> InitialContext(p);</pre>
</div></div>

<p>See the examples zip for a dozen embedded testing examples that range from simple @Stateless beans to advanced transaction and security testing.</p>

<h2><a name="OpenEJB3.1.1-CollapsedEAR%28EJBsin.WARs%29%28proposedEJB3.1feature%29"></a>Collapsed EAR (EJBs in .WARs) (proposed EJB 3.1 feature)</h2>

<p>Along the lines of the Tomcat integration where OpenEJB can be plugged into Tomcat, we've expanded the idea to also allow your EJBs to be plugged into your webapp.  We call this innovative feature <a href="/confluence/display/OPENEJB/Collapsed+EAR" title="Collapsed EAR">Collapsed EAR</a>.  In this style 100% of your classes, including your EJBs, can be packed into your WEB-INF/classes and WEB-INF/lib directories.  The result is that your WAR file becomes a replacement for an EAR.  Unlike an EAR, all multi-packaging and multi-classloader requirements are stripped away and collapsed down to one archive and one classloader all your components, EJBs or otherwise, can share.</p>

<h2><a name="OpenEJB3.1.1-ConstructorInjection%28proposedEJB3.1feature%29"></a>Constructor Injection (proposed EJB 3.1 feature)</h2>

<p>For those of you who would like to use final fields, wish to avoid numerous setters, or dislike private field injection and would like nothing more than to just use plan old java constructors, your wish has come true.  This is a feature we intended to add to OpenEJB 3.0 but didn't have time for.  We're happy to bring it to the OpenEJB 3.1.1 release and with a bit of luck and support from people like yourself, we'll see this as an EJB 3.1 feature as well.</p>

<div class="code"><div class="codeContent">
<pre class="code-java">@Stateless
<span class="code-keyword">public</span> class WidgetBean <span class="code-keyword">implements</span> Widget {

    @EJB(beanName = <span class="code-quote">"FooBean"</span>)
    <span class="code-keyword">private</span> <span class="code-keyword">final</span> Foo foo;

    @Resource(name = <span class="code-quote">"count"</span>)
    <span class="code-keyword">private</span> <span class="code-keyword">final</span> <span class="code-object">int</span> count;

    @Resource
    <span class="code-keyword">private</span> <span class="code-keyword">final</span> DataSource ds;

    <span class="code-keyword">public</span> WidgetBean(<span class="code-object">Integer</span> count, Foo foo, DataSource ds) {
        <span class="code-keyword">this</span>.count = count;
        <span class="code-keyword">this</span>.foo = foo;
        <span class="code-keyword">this</span>.ds = ds;
    }

    <span class="code-keyword">public</span> <span class="code-object">int</span> getCount() {
        <span class="code-keyword">return</span> count;
    }

    <span class="code-keyword">public</span> Foo getFoo() {
        <span class="code-keyword">return</span> foo;
    }
}</pre>
</div></div>

<h1><a name="OpenEJB3.1.1-GeneralFeatures"></a>General Features</h1>

<h2><a name="OpenEJB3.1.1-EJB3.0Support"></a>EJB 3.0 Support</h2>

<p>OpenEJB 3.1.1 supports the EJB 3.0 specification as well as the prior EJB 2.1, EJB 2.0, and EJB 1.1.  New features in EJB 3.0 include:</p>

<ul class="alternate" type="square">
	<li>Annotations instead of xml</li>
	<li>No home interfaces</li>
	<li>Business Interfaces</li>
	<li>Dependency Injection</li>
	<li>Interceptors</li>
	<li>Java Persistence API</li>
	<li>Service Locator (ala SessionContext.lookup)</li>
	<li>POJO-style beans</li>
	<li>JAX-WS Web Services</li>
</ul>


<p>EJB 2.x features since OpenEJB 1.0 also include:</p>
<ul class="alternate" type="square">
	<li>MessageDriven Beans</li>
	<li>Container-Managed Persistence (CMP) 2.0</li>
	<li>Timers</li>
</ul>


<p>The two aspects of EJB that OpenEJB does not yet support are:</p>
<ul class="alternate" type="square">
	<li>JAX-RPC</li>
	<li>CORBA</li>
</ul>


<p>CORBA support will be added in future releases.  Support for the JAX-RPC API is not a planned feature.</p>

<h2><a name="OpenEJB3.1.1-EJBPluginforTomcat6and5.5"></a>EJB Plugin for Tomcat 6 and 5.5</h2>

<p>OpenEJB 3.1.1 can be <a href="/confluence/display/OPENEJB/Tomcat" title="Tomcat">plugged into</a> any Tomcat 6 or Tomcat 5.5 server, adding support for EJBs in Web Apps.  War files themselves can contain EJBs and the Servlets can use new JavaEE 5 annotations, XA transactions, JPA, and JMS.  Webapps can even support fat java clients connecting over HTTP.</p>

<p>Don't use EJBs?  </p>

<p>No matter, adding OpenEJB to Tomcat gives Servlets several new Java EE 5 capabilities such as JPA, JAX-WS, JMS, J2EE Connectors, transactions, and more as well as enhancing the injection features of Tomcat 6 to now support injection of JavaEE objects like Topics, Queues, EntityManagers, JMS ConnectionFactories, JavaMail Sessions, as well as simpler data types such as Dates, Classes, URI, URL, List, Map, Set, Properties, and more. In the case of Tomcat 5.5 which doesn't support dependency injection at all, even more is gained.</p>

<h2><a name="OpenEJB3.1.1-SpringIntegration"></a>Spring Integration</h2>

<p>Add OpenEJB 3.1.1 to your Spring application to gain the ability for EJBs to be easily injected into Spring beans (and vice versa) and add Java EE 5 capabilities such as JPA, JAX-WS, JMS, J2EE Connectors, transactions, and security.</p>

<p>See the <a href="/confluence/display/OPENEJBx30/Spring" title="Spring">Spring</a> page and <a href="/confluence/display/OPENEJBx30/Spring+EJB+and+JPA" title="Spring EJB and JPA">Spring Example</a> for an example.</p>

<h2><a name="OpenEJB3.1.1-MulticastDiscovery"></a>Multicast Discovery</h2>

<p>Add the <span class="nobr"><a href="http://people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/openejb/openejb-multicast/3.1/openejb-multicast-3.1.jar" title="Visit page outside Confluence" rel="nofollow">openejb-multicast.jar<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> to your OpenEJB distributions lib/ directory and gain the ability to use multicast discovery between clients and serves as well as between servers allowing for request failover to other discovered servers.  Clients can discover and access servers with a new "multicast://239.255.3.2:6142" url as follows:</p>

<div class="code"><div class="codeContent">
<pre class="code-java">Properties p = <span class="code-keyword">new</span> Properties();
p.put(<span class="code-quote">"java.naming.factory.initial"</span>, <span class="code-quote">"org.apache.openejb.client.RemoteInitialContextFactory"</span>);
p.put(<span class="code-quote">"java.naming.provider.url"</span>, <span class="code-quote">"multicast:<span class="code-comment">//239.255.3.2:6142"</span>);
</span>InitialContext ctx = <span class="code-keyword">new</span> InitialContext(p);</pre>
</div></div>

<h2><a name="OpenEJB3.1.1-RunsonOSGi"></a>Runs on OSGi</h2>

<p>All OpenEJB 3.1.1 binaries come with complete OSGi metadata and are usable as a bundle in any OSGi platform.  Look for OpenEJB in the upcoming, OSGi-based ServiceMix 4 which is built on Apache Felix.</p>

<h2><a name="OpenEJB3.1.1-CMPviaJPA"></a>CMP via JPA</h2>

<p>Our CMP implementation is a thin layer over the new Java Persistence API (JPA).  This means when you deploy an old style CMP 1.1 or CMP 2.1 bean it is internally converted and ran as a JPA bean.  This makes it possible to use both CMP and JPA in the same application without any coherence issues that can come from using two competing persistence technologies against the same data.  Everything is ultimately JPA in the end.</p>

<h2><a name="OpenEJB3.1.1-DependencyInjectionEnums%2CClasses%2CDates%2CFiles%2Cohmy."></a>Dependency Injection &#8211; Enums, Classes, Dates, Files, oh my.</h2>

<p>Dependency Injection in EJB 3.0 via @Resource is largely limited to objects provided by the container, such as DataSources, JMS Topics and Queues.  It is possible for you to supply your own configuration information for injection, but standard rules allow for only data of type String, Character, Boolean, Integer, Short, Long, Double, Float and Byte.  If you needed a URL, for example, you'd have to have it injected as a String then convert it yourself to a URL.  This is just plain silly as the conversion of Strings to other basic data types has existed in JavaBeans long before Enterprise JavaBeans existed.</p>

<p>OpenEJB 3.1.1 supports injection of any data type for which you can supply a JavaBeans PropertyEditor.  We include several built-in PropertyEditors already such as Date, InetAddress, Class, File, URL, URI, Map, List, any java.lang.Enum and more.</p>

<div class="code"><div class="codeHeader"><b>MyBean.java</b></div><div class="codeContent">
<pre class="code-java"><span class="code-keyword">import</span> java.net.URI;
<span class="code-keyword">import</span> java.io.File;
<span class="code-keyword">import</span> java.util.Date;

@Stateful 
<span class="code-keyword">public</span> class MyBean {
    @Resource URI blog;
    @Resource Date birthday;
    @Resource File homeDirectory;
}</pre>
</div></div>

<h2><a name="OpenEJB3.1.1-DependencyInjectionGenericCollectionsandMaps"></a>Dependency Injection &#8211; Generic Collections and Maps</h2>

<p>Support for Java Generics makes the dependency injection that much more powerful.  Declare an injectable field that leverages Java Generics and we will use that information to boost your injection to the next level.  For example:</p>

<div class="code"><div class="codeHeader"><b>MyBean.java</b></div><div class="codeContent">
<pre class="code-java"><span class="code-keyword">import</span> java.net.URI;
<span class="code-keyword">import</span> java.io.File;

@Stateful 
<span class="code-keyword">public</span> class MyBean {
    @Resource List&lt;<span class="code-object">Class</span>&gt; factories;
    @Resource Map&lt;URI, File&gt; locations;
}</pre>
</div></div>

<h2><a name="OpenEJB3.1.1-DependencyInjectionCustomTypes"></a>Dependency Injection &#8211; Custom Types</h2>

<p>You can easily add your own types or override the way built-in types are handled and claim dependency injection as your own making it a critical part of your architecture.  For example, let's register a custom editor for our Pickup enum.</p>

<div class="code"><div class="codeContent">
<pre class="code-java"><span class="code-keyword">import</span> java.beans.PropertyEditorManager;

<span class="code-keyword">public</span> <span class="code-keyword">enum</span> Pickup {

    HUMBUCKER,
    SINGLE_COIL;

    <span class="code-comment">// Here's the little magic where we register the PickupEditor
</span>    <span class="code-comment">// which knows how to create <span class="code-keyword">this</span> object from a string.
</span>    <span class="code-comment">// You can add any of your own Property Editors in the same way.
</span>    <span class="code-keyword">static</span> {
        PropertyEditorManager.registerEditor(Pickup.class, PickupEditor.class);
    }
}</pre>
</div></div>

<div class="code"><div class="codeContent">
<pre class="code-java">@Stateful
<span class="code-keyword">public</span> class StratocasterImpl <span class="code-keyword">implements</span> Stratocaster {

    @Resource(name = <span class="code-quote">"pickups"</span>)
    <span class="code-keyword">private</span> List&lt;Pickup&gt; pickups;
}</pre>
</div></div>

<h2><a name="OpenEJB3.1.1-TheMETAINF%2Fenventries.properties"></a>The META-INF/env-entries.properties</h2>

<p>Along the lines of injection, one of the last remaining things in EJB 3 that people need an ejb-jar.xml file for is to supply the value of env-entries.  Env Entries are the source of data for all user supplied data injected into your bean; the afore mentioned String, Boolean, Integer, etc.  This is a very big burden as each env-entry is going to cost you 5 lines of xml and the complication of having to figure out how to add you bean declaration in xml as an override of an existing bean and not accidentally as a new bean.  All this can be very painful when all you want is to supply the value of a few @Resource String fields in you bean class.  </p>

<p>To fix this, OpenEJB supports the idea of a META-INF/env-entries.properties file where we will look for the value of things that need injection that are not container controlled resources (i.e. datasources and things of that nature).  You can configure you ejbs via a properties file and skip the need for an ejb-jar.xml and it's 5 lines per property madness.</p>

<div class="code"><div class="codeHeader"><b>META-INF/env-entries.properties</b></div><div class="codeContent">
<pre class="code-java">blog = http:<span class="code-comment">//acme.org/myblog
</span>birthday = 1954-03-01
homeDirectory = /home/esmith/</pre>
</div></div>

<h2><a name="OpenEJB3.1.1-SupportforGlassFishdescriptors"></a>Support for GlassFish descriptors</h2>

<p>Unit testing EJBs with OpenEJB is a major feature and draw for people, even for people who may still use other app servers for final deployment such as Geronimo or GlassFish.  The descriptor format for Geronimo is natively understood by OpenEJB as OpenEJB is the EJB Container provider for Geronimo.  However, OpenEJB also supports the GlassFish descriptors so people using GlassFish as their final server can still use OpenEJB for testing EJBs via plain JUnit tests in their build and only have one set of vendor descriptors to maintain.</p>

<h2><a name="OpenEJB3.1.1-JavaEE5EARandApplicationClientsupport"></a>JavaEE 5 EAR and Application Client support</h2>

<p>JavaEE 5 EARs, RARs, and Application Clients can be deployed in addition to ejb jars.  EAR support is limited to ejbs, application clients, RARs, and libraries; WAR files will be ignored unless embedded in Tomcat.   Per the JavaEE 5 spec, the META-INF/application.xml and META-INF/application-client.xml files are optional.</p>

<h2><a name="OpenEJB3.1.1-ApplicationValidationforEJB3.0"></a>Application Validation for EJB 3.0</h2>

<p>Incorrect usage of various new aspects of EJB 3.0 are checked for and reported during the deployment process preventing strange errors and failures.</p>

<p>As usual validation failures (non-compliant issues with your application) are printed out in complier-style "all-at-once" output allowing you to see and fix all your issues in one go.  For example, if you have 10 @PersistenceContext annotations that reference an invalid persistence unit, you get all 10 errors on the <b>first</b> deploy rather than one failure on the first deploy with 9 more failed deployments to go.</p>

<p>Validation output comes in three levels.  The most verbose level will tell you in detail what you did wrong, what the options are, and what to do next... even including valid code and annotation usage tailored to your app that you can copy and paste into your application.  Very ideal for beginners and people using OpenEJB in a classroom setting.</p>

<p>Some example output might look like the following.  Here we illegally add some annotations to the "Movies" bean's interface as well as use the wrong annotations for various types of injection:</p>

<div class="code"><div class="codeContent">
<pre class="code-none">FAIL ... Movies:  @Stateful cannot be applied to an interface: org.superbiz.injection.jpa.Movies
FAIL ... Movies:  Missing required "type" attribute on class-level @Resource usage
FAIL ... Movies:  Mistaken use of @Resource on an EntityManagerFactory reference.  
                  Use @PersistenceUnit for ref "org.superbiz.injection.jpa.MoviesImpl/entityManagerFactory"
FAIL ... Movies:  Mistaken use of @PersistenceUnit on an EntityManager reference.  
                  Use @PersistenceContext for ref "org.superbiz.injection.jpa.MoviesImpl/entityManager"
WARN ... Movies:  Inoring @RolesAllowed used on interface org.superbiz.injection.jpa.Movies method deleteMovie.
                  Annotation only usable on the bean class.
WARN ... Movies:  Ignoring @TransactionAttribute used on interface org.superbiz.injection.jpa.Movies method addMovie.
                  Annotation only usable on the bean class.</pre>
</div></div>

<h2><a name="OpenEJB3.1.1-JNDINameFormatting"></a>JNDI Name Formatting</h2>

<p>A complication when using EJB is that plain client applications are at the mercy of vendor's chosen methodology for how JNDI names should be constructed.  OpenEJB breaks the mold by allowing you to <a href="/confluence/display/OPENEJBx30/JNDI+Names" title="JNDI Names">specify the exact format</a> you'd like OpenEJB to use for your server or any individual application.  Supply us with a formatting string, such as "ejb/{ejbName}/{interfaceClass.simpleName}", to get a JNDI layout that best matches your needs.</p>

<h1><a name="OpenEJB3.1.1-Changelog"></a>Changelog</h1>


<h3><a name="OpenEJB3.1.1-NewFeatures%3A"></a>New Features:</h3>

<p>
    <table  width="100%" cellspacing="0" class="grid">
        <tr>
            <th colspan="2" style="text-align: left;">
                issues.apache.org&nbsp;
                <span class="smalltext">(4&nbsp;issues)</span>&nbsp;
            </th>
        </tr>
        <tr>
                        <th style="text-align: left;">
                Key
            </th>
                        <th style="text-align: left;">
                Summary
            </th>
                    </tr>
                                            <tr class="rowNormal">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1024">OPENEJB-1024</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1024">TestCase Dependency Injection via @LocalClient</a>
                                    </td>
                            </tr>
                                    <tr class="rowAlternate">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1018">OPENEJB-1018</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1018">Support for exposing a single interface as @WebService, @Remote, and @Local</a>
                                    </td>
                            </tr>
                                    <tr class="rowNormal">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1009">OPENEJB-1009</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1009">Global &quot;openejb:&quot; jndi namespace</a>
                                    </td>
                            </tr>
                                    <tr class="rowAlternate">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-987">OPENEJB-987</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-987">Support for alternate deployment descriptors for testing and other environments</a>
                                    </td>
                            </tr>
            </table>
</p>


<h3><a name="OpenEJB3.1.1-Improvements%3A"></a>Improvements:</h3>

<p>
    <table  width="100%" cellspacing="0" class="grid">
        <tr>
            <th colspan="2" style="text-align: left;">
                issues.apache.org&nbsp;
                <span class="smalltext">(9&nbsp;issues)</span>&nbsp;
            </th>
        </tr>
        <tr>
                        <th style="text-align: left;">
                Key
            </th>
                        <th style="text-align: left;">
                Summary
            </th>
                    </tr>
                                            <tr class="rowNormal">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-858">OPENEJB-858</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-858">Ability to use mappedName as a JNDI Name format</a>
                                    </td>
                            </tr>
                                    <tr class="rowAlternate">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1004">OPENEJB-1004</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1004">Web service endpoints securable</a>
                                    </td>
                            </tr>
                                    <tr class="rowNormal">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1007">OPENEJB-1007</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1007">Automatically declare interceptors used in xml bindings</a>
                                    </td>
                            </tr>
                                    <tr class="rowAlternate">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-963">OPENEJB-963</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-963">Enhance the javaee-api with OSGi Bundle Information</a>
                                    </td>
                            </tr>
                                    <tr class="rowNormal">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1029">OPENEJB-1029</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1029">@EjbDeployment annotation as alternative to &lt;ejb-deployment&gt; in openejb-jar.xml</a>
                                    </td>
                            </tr>
                                    <tr class="rowAlternate">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1006">OPENEJB-1006</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1006">Added &#39;openejb.vendor.config&#39; property settable to any of: geronimo, glassfish, jboss, weblogic</a>
                                    </td>
                            </tr>
                                    <tr class="rowNormal">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1038">OPENEJB-1038</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1038">All openejb.* options and values logged on debug</a>
                                    </td>
                            </tr>
                                    <tr class="rowAlternate">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-981">OPENEJB-981</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-981">Specify a list of protected HTTP methods for secure web services</a>
                                    </td>
                            </tr>
                                    <tr class="rowNormal">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-990">OPENEJB-990</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-990">Trim whitespace from openejb.xml property values</a>
                                    </td>
                            </tr>
            </table>
</p>


<h3><a name="OpenEJB3.1.1-Tasks%26SubTasks%3A"></a>Tasks &amp; Sub-Tasks:</h3>

<p>
    <table  width="100%" cellspacing="0" class="grid">
        <tr>
            <th colspan="2" style="text-align: left;">
                issues.apache.org&nbsp;
                <span class="smalltext">(15&nbsp;issues)</span>&nbsp;
            </th>
        </tr>
        <tr>
                        <th style="text-align: left;">
                Key
            </th>
                        <th style="text-align: left;">
                Summary
            </th>
                    </tr>
                                            <tr class="rowNormal">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1036">OPENEJB-1036</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1036">Example: EJB in Webapp with Applet Client</a>
                                    </td>
                            </tr>
                                    <tr class="rowAlternate">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1034">OPENEJB-1034</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1034">Example: JSF Managed Bean with Dependency Injection</a>
                                    </td>
                            </tr>
                                    <tr class="rowNormal">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1037">OPENEJB-1037</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1037">Example: JUnit TestCase using Dependency Injection </a>
                                    </td>
                            </tr>
                                    <tr class="rowAlternate">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1035">OPENEJB-1035</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1035">Example: Struts webapp with JPA and EJB</a>
                                    </td>
                            </tr>
                                    <tr class="rowNormal">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1032">OPENEJB-1032</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1032">Example: WebService with Attachments</a>
                                    </td>
                            </tr>
                                    <tr class="rowAlternate">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-872">OPENEJB-872</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-872">Example: WebService with MTOM</a>
                                    </td>
                            </tr>
                                    <tr class="rowNormal">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1031">OPENEJB-1031</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1031">Example: WebService with Security</a>
                                    </td>
                            </tr>
                                    <tr class="rowAlternate">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1033">OPENEJB-1033</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1033">Example: WebService with WS Security</a>
                                    </td>
                            </tr>
                                    <tr class="rowNormal">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1030">OPENEJB-1030</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-1030">Example: Webapp EJB WebService and Perl SOAP::Lite client</a>
                                    </td>
                            </tr>
                                    <tr class="rowAlternate">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-973">OPENEJB-973</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-973">OpenJPA 1.2.0 upgrade</a>
                                    </td>
                            </tr>
                                    <tr class="rowNormal">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-992">OPENEJB-992</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-992">Validation: @EJB mistakenly applied to a javax.ejb.EJBLocalObject interface</a>
                                    </td>
                            </tr>
                                    <tr class="rowAlternate">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-991">OPENEJB-991</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-991">Validation: @EJB mistakenly applied to a javax.ejb.EJBObject interface</a>
                                    </td>
                            </tr>
                                    <tr class="rowNormal">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-993">OPENEJB-993</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-993">Validation: @EJB mistakenly applied to a non-interface</a>
                                    </td>
                            </tr>
                                    <tr class="rowAlternate">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-847">OPENEJB-847</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-847">Validation: @Resource UserTransaction injection mistakenly used on bean with Container-Managed Transactions</a>
                                    </td>
                            </tr>
                                    <tr class="rowNormal">
                                                            <td nowrap="true">
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-906">OPENEJB-906</a>
                                    </td>
                                <td >
                                            <a href="http://issues.apache.org/jira/browse/OPENEJB-906">Validation: Referring to a bean via its bean class (pre 3.1)</a>
                                    </td>
                            </tr>
            </table>
</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