geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Geronimo v2.2: Web Application for JDBC access (page edited)
Date Thu, 23 Oct 2008 17:23:00 GMT
<html>
<head>
    <base href="http://cwiki.apache.org/confluence" />
    <style type="text/css">
    <!--
    body, p, td, table, tr, .bodytext, .stepfield {
	font-family: Verdana, arial, sans-serif;
	font-size: 11px;
	line-height: 16px;
	color: #000000;
	font-weight: normal;
}
#PageContent {
	text-align: left;
	background-color: #fff;
	padding: 0px;
	margin: 0px;
    padding-bottom:20px;
}
/*
** when this stylesheet is used for the Tiny MCE Wysiwyg editor's edit area, we can't
** use an id=PageContent or class=wiki-content, so we must
** set the body style to that used for PageContent, and p to that used for wiki-content.
*/

body {
	margin: 0px;
	padding: 0px;
	text-align: center;
    background-color: #f0f0f0;
}

@media print {

body {
    background-color: #fff;
}

}

.monospaceInput {
    font:12px monospace
}

.wiki-content p, .commentblock p {
    margin: 16px 0px 16px 0px;
    padding: 0px;
}

.wiki-content-preview {
    padding: 5px;
    border-left: 1px solid #3c78b5;
    border-right: 1px solid #3c78b5;
}

ul, ol {
    margin-top: 2px;
    margin-bottom: 2px;
    padding-top: 0px;
    padding-bottom: 0px;
}

pre {
    padding: 0px;
    margin-top: 5px;
    margin-left: 15px;
    margin-bottom: 5px;
    margin-right: 5px;
    text-align: left;
}

.helpheading {
    font-weight: bold;
    background-color: #D0D9BD;
        border-bottom: 1px solid #3c78b5;
        padding: 4px 4px 4px 4px;
        margin: 0px;
        margin-top: 10px;
}
.helpcontent {
        padding: 4px 4px 20px 4px;
    background-color: #f5f7f1;
}

.code {
 	border: 1px dashed #3c78b5;
    font-size: 11px;
	font-family: Courier;
    margin: 10px;
	line-height: 13px;
}

.focusedComment {
    background: #ffffce;
}

.commentBox, .focusedComment {
    padding: 10px;
    margin: 5px 0 5px 0;
    border: 1px #bbb solid;
}

.codeHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.codeContent {
    text-align: left;
    background-color: #f0f0f0;
    padding: 3px;
}

.preformatted {
 	border: 1px dashed #3c78b5;
    font-size: 11px;
	font-family: Courier;
    margin: 10px;
	line-height: 13px;
}

.preformattedHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.preformattedContent {
    background-color: #f0f0f0;
    padding: 3px;
}

.panel {
 	border: 1px dashed #3c78b5;
    margin: 10px;
    margin-top: 0px;
}

.panelHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.panelContent {
    background-color: #f0f0f0;
    padding: 5px;
}

.anonymousAlert {
    background-color: #f0f0f0;
 	border: 1px dashed red;
    font-size: 11px;
    padding: 10px 5px 10px 5px;
    margin: 4px;
	line-height: 13px;
}

.lockAlert {
    background-color: #f0f0f0;
    width: 50%;
 	border: 1px dashed red;
    font-size: 11px;
    padding: 10px 5px 10px 5px;
    margin: 4px;
	line-height: 13px;
}


.code-keyword {
  color: #000091;
  background-color: inherit;
}

.code-object {
  color: #910091;
  background-color: inherit;
}

.code-quote {
  color: #009100;
  background-color: inherit;
}

.code-comment {
  color: #808080;
  background-color: inherit;
}


.code-xml .code-keyword {
  color: inherit;
  font-weight: bold;
}

.code-tag {
  color: #000091;
  background-color: inherit;
}

.breadcrumbs {
    background-color: #f0f0f0;
 	border-color: #3c78b5;
	border-width: 1px 0px 1px 0px;
	border-style: solid;
    font-size: 11px;
    padding: 3px 0px 3px 0px;
}

.navmenu {
    border: 1px solid #ccc;
}

.menuheading {
    font-weight: bold;
    background-color: #f0f0f0;
 	border-bottom: 1px solid #3c78b5;
	padding: 4px 4px 2px 4px;
}

.menuitems {
	padding: 4px 4px 20px 4px;
}

.rightpanel {
    border-left: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
}

#helpheading {
    text-align: left;
    font-weight: bold;
    background-color: #D0D9BD;
 	border-bottom: 1px solid #3c78b5;
	padding: 4px 4px 4px 4px;
	margin: 0px;
}
#helpcontent {
	padding: 4px 4px 4px 4px;
    background-color: #f5f7f1;
}
.helptab-unselected {
    font-weight: bold;
	padding: 5px;
    background-color: #f5f7f1;
}
.helptab-selected {
    font-weight: bold;
    background-color: #D0D9BD;
	padding: 5px;
}
.helptabs {
    margin: 0px;
    background-color: #f5f7f1;
	padding: 5px;
}
.infopanel-heading {
    font-weight: bold;
	padding: 4px 0px 2px 0px;
}

.pagebody {
}

.pageheader {
	padding: 5px 5px 5px 0px;
 	border-bottom: 1px solid #3c78b5;
}

.pagetitle {
	font-size: 22px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
}

.newpagetitle {
    color: #ccc !important;
}

.steptitle {
	font-size: 18px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
	margin-bottom: 7px;
}

.substeptitle {
    font-size: 12px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
    margin: 2px 4px 4px 4px;
    padding: 2px 4px 1px 4px;
}

.stepdesc {
    font-family: Verdana, arial, sans-serif;
	font-size: 11px;
	line-height: 16px;
	font-weight: normal;
    color: #666666;
    margin-top: 7px;
    margin-bottom: 7px;
}

.steplabel {
    font-weight: bold;
    margin-right: 4px;
    color: black;
    float: left;
    width: 15%;
    text-align: right;
}

.stepfield {
    background: #f0f0f0;
    padding: 5px;
}

.submitButtons{
    margin-top:5px;
    text-align:right;
}

.formtitle {
	font-size: 12px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
}

.sectionbottom {
    border-bottom: 1px solid #3c78b5;
}

.topRow {
    border-top: 2px solid #3c78b5;
}

.tabletitle {
	font-size: 14px;
	font-weight: bold;
	font-family: Arial, sans-serif;
    padding: 3px 0px 2px 0px;
    margin: 8px 4px 2px 0px;
	color: #003366;
	border-bottom: 2px solid #3c78b5;
}
.pagesubheading {
    color: #666666;
    font-size: 10px;
    padding: 0px 0px 5px 0px;
}

HR {
	color: 3c78b5;
	height: 1;
}

A:link, A:visited, A:active, A:hover {
	color: #003366;
}

h1 A:link, h1 A:visited, h1 A:active {
	text-decoration: none;
}

h1 A:hover {
    border-bottom: 1px dotted #003366;
}

.wiki-content > :first-child, .commentblock > :first-child {
    margin-top: 3px;
}

.logocell {
    padding: 10px;
}

input {
	font-family: verdana, geneva, arial, sans-serif;
	font-size: 11px;
	color: #000000;
}

textarea, textarea.editor {
	font-family: verdana, geneva, arial, sans-serif;
	font-size: 11px;
	color: #333333;
}

/* use logoSpaceLink instead.
.spacenametitle {
	font: 21px/31px Impact, Arial, Helvetica;
    font-weight: 100;
    color: #999999;
	margin: 0px;
}
.spacenametitle img {
  margin: 0 0 -4px 0;
}
.spacenametitle a {
    text-decoration: none;
    color: #999999;
}
.spacenametitle a:visited {
    text-decoration: none;
    color: #999999;
}*/

.spacenametitle-printable {
	font: 20px/25px Impact, Arial, Helvetica;
    font-weight: 100;
    color: #999999;
	margin: 0px;
}
.spacenametitle-printable a {
    text-decoration: none;
    color: #999999;
}
.spacenametitle-printable a:visited {
    text-decoration: none;
    color: #999999;
}

.blogDate {
	font-weight: bold;
	text-decoration: none;
	color: black;
}

.blogSurtitle {
    background: #f0f0f0;
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.blogHeading {
    font-size: 20px;
    line-height: normal;
    font-weight: bold;
    padding: 0px;
    margin: 0px;
}

.blogHeading a {
   text-decoration: none;
   color: black;
}

.endsection {
	align: right;
	color: #666666;
	margin-top: 10px;
}
.endsectionleftnav {
	align: right;
	color: #666666;
	margin-top: 10px;
}

h1 {
	font-size: 24px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	color: #003366;
 	border-bottom: 1px solid #3c78b5;
	padding: 2px;
	margin: 36px 0px 4px 0px;
}

h2 {
	font-size: 18px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
 	border-bottom: 1px solid #3c78b5;
	padding: 2px;
	margin: 27px 0px 4px 0px;
}

h3 {
	font-size: 14px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 21px 0px 4px 0px;
}

h4 {
	font-size: 12px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 18px 0px 4px 0px;
}

h4.search {
	font-size: 12px;
	line-height: normal;
	font-weight: normal;
	background-color: #f0f0f0;
	padding: 4px;
	margin: 18px 0px 4px 0px;
}

h5 {
	font-size: 10px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 14px 0px 4px 0px;
}

h6 {
	font-size: 8px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 14px 0px 4px 0px;
}

.smallfont {
    font-size: 10px;
}
.descfont {
    font-size: 10px;
    color: #666666;
}
.smallerfont {
    font-size: 9px;
}
.smalltext {
    color: #666666;
    font-size: 10px;
}
.smalltext a {
    color: #666666;
}
.smalltext-blue {
    color: #3c78b5;
    font-size: 10px;
}
.surtitle {
    margin-left: 1px;
    margin-bottom: 5px;
    font-size: 14px;
    color: #666666;
}

/* css hack found here:  http://www.fo3nix.pwp.blueyonder.co.uk/tutorials/css/hacks/ */
.navItemOver { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #003366; cursor: hand; voice-family: '\'}\''; voice-family:inherit; cursor: pointer;}
.navItemOver a { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItemOver a:visited { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItemOver a:hover { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItem { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; }
.navItem a { color: #ffffff; text-decoration: none; }
.navItem a:hover { color: #ffffff; text-decoration: none; }
.navItem a:visited { color: #ffffff; text-decoration: none; }

div.padded { padding: 4px; }
div.thickPadded { padding: 10px; }
h3.macrolibrariestitle {
    margin: 0px 0px 0px 0px;
}

div.centered { text-align: center; margin: 10px; }
div.centered table {margin: 0px auto; text-align: left; }

.tableview table {
    margin: 0;
}

.tableview th {
    text-align: left;
    color: #003366;
    font-size: 12px;
    padding: 5px 0px 0px 5px;
    border-bottom: 2px solid #3c78b5;
}
.tableview td {
    text-align: left;
    border-color: #ccc;
    border-width: 0px 0px 1px 0px;
    border-style: solid;
    margin: 0;
    padding: 4px 10px 4px 5px;
}

.grid {
    margin: 2px 0px 5px 0px;
    border-collapse: collapse;
}
.grid th  {
    border: 1px solid #ccc;
    padding: 2px 4px 2px 4px;
    background: #f0f0f0;
    text-align: center;
}
.grid td  {
    border: 1px solid #ccc;
    padding: 3px 4px 3px 4px;
}
.gridHover {
	background-color: #f9f9f9;
}

td.infocell {
    background-color: #f0f0f0;
}
.label {
	font-weight: bold;
	color: #003366;
}

label {
	font-weight: bold;
	color: #003366;
}

.error {
	background-color: #fcc;
}

.errorBox {
	background-color: #fcc;
    border: 1px solid #c00;
    padding: 5px;
    margin: 5px;
}

.errorMessage {
	color: #c00;
}

.success {
	background-color: #dfd;
}

.successBox {
	background-color: #dfd;
    border: 1px solid #090;
    padding: 5px;
    margin-top:5px;
    margin-bottom:5px;
}

blockquote {
	padding-left: 10px;
	padding-right: 10px;
	margin-left: 5px;
	margin-right: 0px;
	border-left: 1px solid #3c78b5;
}

table.confluenceTable
{
    margin: 5px;
    border-collapse: collapse;
}

/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
table.confluenceTable td.confluenceTd
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
}

/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
table.confluenceTable th.confluenceTh
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
    background-color: #f0f0f0;
    text-align: center;
}

td.confluenceTd
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
}

th.confluenceTh
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
    background-color: #f0f0f0;
    text-align: center;
}

DIV.small {
	font-size: 9px;
}

H1.pagename {
	margin-top: 0px;
}

IMG.inline  {}

.loginform {
    margin: 5px;
    border: 1px solid #ccc;
}

/* The text how the "This is a preview" comment should be shown. */
.previewnote { text-align: center;
                font-size: 11px;
                    color: red; }

/* How the preview content should be shown */
.previewcontent { background: #E0E0E0; }

/* How the system messages should be shown (DisplayMessage.jsp) */
.messagecontent { background: #E0E0E0; }

/* How the "This page has been modified..." -comment should be shown. */
.conflictnote { }

.createlink {
    color: maroon;
}
a.createlink {
    color: maroon;
}
.templateparameter {
    font-size: 9px;
    color: darkblue;
}

.diffadded {
    background: #ddffdd;
    padding: 1px 1px 1px 4px;
	border-left: 4px solid darkgreen;
}
.diffdeleted {
    color: #999;
    background: #ffdddd;
    padding: 1px 1px 1px 4px;
	border-left: 4px solid darkred;
}
.diffnochange {
    padding: 1px 1px 1px 4px;
	border-left: 4px solid lightgrey;
}
.differror {
    background: brown;
}
.diff {
    font-family: lucida console, courier new, fixed-width;
	font-size: 12px;
	line-height: 14px;
}
.diffaddedchars {
    background-color:#99ff99;
    font-weight:bolder;
}
.diffremovedchars {
    background-color:#ff9999;
    text-decoration: line-through;
    font-weight:bolder;
}

.greybackground {
    background: #f0f0f0
}

.greybox {
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.borderedGreyBox {
    border: 1px solid #cccccc;
    background-color: #f0f0f0;
    padding: 10px;
}

.greyboxfilled {
 	border: 1px solid #ddd;
    background: #f0f0f0;
    padding: 3px;
	margin: 1px 1px 10px 1px;
}

.navBackgroundBox {
    padding: 5px 5px 5px 5px;
    font-size: 22px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: white;
    background: #3c78b5;
    text-decoration: none;
}

.previewBoxTop {
	background-color: #f0f0f0;
    border-width: 1px 1px 0px 1px;
    border-style: solid;
    border-color: #3c78b5;
    padding: 5px;
    margin: 5px 0px 0px 0px;
    text-align: center;
}
.previewContent {
    background-color: #fff;
 	border-color: #3c78b5;
	border-width: 0px 1px 0px 1px;
	border-style: solid;
	padding: 10px;
	margin: 0px;
}
.previewBoxBottom {
	background-color: #f0f0f0;
    border-width: 0px 1px 1px 1px;
    border-style: solid;
    border-color: #3c78b5;
    padding: 5px;
    margin: 0px 0px 5px 0px;
    text-align: center;
}

.functionbox {
    background-color: #f0f0f0;
 	border: 1px solid #3c78b5;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.functionbox-greyborder {
    background-color: #f0f0f0;
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.search-highlight {
    background-color: #ffffcc;
}

/* normal (white) background */
.rowNormal {
    background-color: #ffffff;
 }

/* alternate (pale yellow) background */
.rowAlternate {
    background-color: #f7f7f7;
}

/* used in the list attachments table */
.rowAlternateNoBottomColor {
    background-color: #f7f7f7;
}

.rowAlternateNoBottomNoColor {
}

.rowAlternateNoBottomColor td {
    border-bottom: 0px;
}

.rowAlternateNoBottomNoColor td {
    border-bottom: 0px;
}

/* row highlight (grey) background */
.rowHighlight {
    background-color: #f0f0f0;

}

TD.greenbar {FONT-SIZE: 2px; BACKGROUND: #00df00; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
TD.redbar {FONT-SIZE: 2px; BACKGROUND: #df0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
TD.darkredbar {FONT-SIZE: 2px; BACKGROUND: #af0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }

TR.testpassed {FONT-SIZE: 2px; BACKGROUND: #ddffdd; PADDING: 0px; }
TR.testfailed {FONT-SIZE: 2px; BACKGROUND: #ffdddd; PADDING: 0px; }

.toolbar  {
    margin: 0px;
    border-collapse: collapse;
}

.toolbar td  {
    border: 1px solid #ccc;
    padding: 2px 2px 2px 2px;
    color: #ccc;
}

td.noformatting {
    border-width: 0px;
    border-style: none;
    text-align: center;
	padding: 0px;
}

.commentblock {
    margin: 12px 0 12px 0;
}

/*
 * Divs displaying the license information, if necessary.
 */
.license-eval, .license-none, .license-nonprofit {
    border-top: 1px solid #bbbbbb;
    text-align: center;
    font-size: 10px;
    font-family: Verdana, Arial, Helvetica, sans-serif;
}

.license-eval, .license-none {
    background-color: #ffcccc;
}

.license-eval b, .license-none b {
    color: #990000
}

.license-nonprofit {
    background-color: #ffffff;
}

/*
 * The shadow at the bottom of the page between the main content and the
 * "powered by" section.
 */
.bottomshadow {
    height: 12px;
    background-image: url("$req.contextPath/images/border/border_bottom.gif");
    background-repeat: repeat-x;
}

/*
 * Styling of the operations box
 */
.navmenu .operations li, .navmenu .operations ul {
    list-style: none;
    margin-left: 0;
    padding-left: 0;
}

.navmenu .operations ul {
    margin-bottom: 9px;
}

.navmenu .label {
    font-weight: inherit;
}

/*
 * Styling of ops as a toolbar
 */
.toolbar div {
    display: none;
}

.toolbar .label {
    display: none;
}

.toolbar .operations {
    display: block;
}

.toolbar .operations ul {
    display: inline;
    list-style: none;
    margin-left: 10px;
    padding-left: 0;
}

.toolbar .operations li {
    list-style: none;
    display: inline;
}

/* list page navigational tabs */
#foldertab {
padding: 3px 0px 3px 8px;
margin-left: 0;
border-bottom: 1px solid #3c78b5;
font: bold 11px Verdana, sans-serif;
}

#foldertab li {
list-style: none;
margin: 0;
display: inline;
}

#foldertab li a {
padding: 3px 0.5em;
margin-left: 3px;
border: 1px solid #3c78b5;
border-bottom: none;
background: #3c78b5;
text-decoration: none;
}

#foldertab li a:link { color: #ffffff; }
#foldertab li a:visited { color: #ffffff; }

#foldertab li a:hover {
color: #ffffff;
background: #003366;
border-color: #003366;
}

#foldertab li a.current {
background: white;
border-bottom: 1px solid white;
color: black;
}

#foldertab li a.current:link { color: black; }
#foldertab li a.current:visited { color: black; }
#foldertab li a.current:hover {
background: white;
border-bottom: 1px solid white;
color: black;
}

/* alphabet list */
ul#squaretab {
margin-left: 0;
padding-left: 0;
white-space: nowrap;
font: bold 8px Verdana, sans-serif;
}

#squaretab li {
display: inline;
list-style-type: none;
}

#squaretab a {
padding: 2px 6px;
border: 1px solid #3c78b5;
}

#squaretab a:link, #squaretab a:visited {
color: #fff;
background-color: #3c78b5;
text-decoration: none;
}

#squaretab a:hover {
color: #ffffff;
background-color: #003366;
border-color: #003366;
text-decoration: none;
}

#squaretab li a#current {
background: white;
color: black;
}

.blogcalendar * {
    font-family:verdana, arial, sans-serif;
    font-size:x-small;
    font-weight:normal;
    line-height:140%;
    padding:2px;
}


table.blogcalendar {
    border: 1px solid #3c78b5;
}

.blogcalendar th.calendarhead, a.calendarhead {
    font-size:x-small;
    font-weight:bold;
    padding:2px;
    text-transform:uppercase;
    background-color: #3c78b5;
    color: #ffffff;
    letter-spacing: .3em;
    text-transform: uppercase;
}

.calendarhead:visited {color: white;}
.calendarhead:active {color: white;}
.calendarhead:hover {color: white;}

.blogcalendar th {
    font-size:x-small;
    font-weight:bold;
    padding:2px;
    background-color:#f0f0f0;
}

.blogcalendar td {
    font-size:x-small;
    font-weight:normal;
}

.searchGroup { padding: 0 0 10px 0; background: #f0f0f0; }
.searchGroupHeading { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; padding: 2px 4px 1px 4px; }
.searchItem { padding: 1px 4px 1px 4px; }
.searchItemSelected { padding: 1px 4px 1px 4px; font-weight: bold; background: #ddd; }

/* permissions page styles */
.permissionHeading {
    border-bottom: #bbb; border-width: 0 0 1px 0; border-style: solid; font-size: 16px; text-align: left;
}
.permissionTab {
    border-width: 0 0 0 1px; border-style: solid; background: #3c78b5; color: #ffffff; font-size: 10px;
}
.permissionSuperTab {
    border-width: 0 0 0 1px; border-style: solid; background: #003366; color: #ffffff;
}
.permissionCell {
    border-left: #bbb; border-width: 0 0 0 1px; border-style: solid;
}

/* warning panel */
.warningPanel { background: #FFFFCE; border:#F0C000 1px solid; padding: 8px; margin: 10px; }
/* alert panel */
.alertPanel { background: #FFCCCC; border:#C00 1px solid; padding: 8px; margin: 10px; }
/* info panel */
.infoPanel { background: #D8E4F1; border:#3c78b5 1px solid; padding: 8px; margin: 10px; }

/* side menu highlighting (e.g. space content screen) */
.optionPadded { padding: 2px; }
.optionSelected { background-color: #ffffcc; padding: 2px; border: 1px solid #ddd; margin: -1px; }
.optionSelected a { font-weight: bold; text-decoration: none; color: black; }

/* information macros */
.noteMacro { border-style: solid; border-width: 1px; border-color: #F0C000; background-color: #FFFFCE; text-align:left; margin-top: 5px; margin-bottom: 5px}
.warningMacro { border-style: solid; border-width: 1px; border-color: #c00; background-color: #fcc; text-align:left; margin-top: 5px; margin-bottom: 5px}
.infoMacro { border-style: solid; border-width: 1px; border-color: #3c78b5; background-color: #D8E4F1; text-align:left; margin-top: 5px; margin-bottom: 5px}
.tipMacro { border-style: solid; border-width: 1px; border-color: #090; background-color: #dfd; text-align:left; margin-top: 5px; margin-bottom: 5px}
.informationMacroPadding { padding: 5px 0 0 5px; }

table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td, table.sectionMacro td {
    border: none;
}

table.sectionMacroWithBorder td.columnMacro { border-style: dashed; border-width: 1px; border-color: #cccccc;}

.pagecontent
{
    padding: 10px;
    text-align: left;
}

/* styles for links in the top bar */
.topBarDiv a:link {color: #ffffff;}
.topBarDiv a:visited {color: #ffffff;}
.topBarDiv a:active {color: #ffffff;}
.topBarDiv a:hover {color: #ffffff;}
.topBarDiv {color: #ffffff;}

.topBar {
    background-color: #003366;
}


/* styles for extended operations */
.greyLinks a:link {color: #666666; text-decoration:underline;}
.greyLinks a:visited {color: #666666; text-decoration:underline;}
.greyLinks a:active {color: #666666; text-decoration:underline;}
.greyLinks a:hover {color: #666666; text-decoration:underline;}
.greyLinks {color: #666666; display:block; padding: 10px}

.logoSpaceLink {color: #999999; text-decoration: none}
.logoSpaceLink a:link {color: #999999; text-decoration: none}
.logoSpaceLink a:visited {color: #999999; text-decoration: none}
.logoSpaceLink a:active {color: #999999; text-decoration: none}
.logoSpaceLink a:hover {color: #003366; text-decoration: none}

/* basic panel (basicpanel.vmd) style */
.basicPanelContainer {border: 1px solid #3c78b5; margin-top: 2px; margin-bottom: 8px; width: 100%}
.basicPanelTitle {padding: 5px; margin: 0px; background-color: #f0f0f0; color: black; font-weight: bold;}
.basicPanelBody {padding: 5px; margin: 0px}

.separatorLinks a:link {color: white}
.separatorLinks a:visited {color: white}
.separatorLinks a:active {color: white}

.greynavbar {background-color: #f0f0f0; border-top: 1px solid #3c78b5; margin-top: 2px}

div.headerField {
    float: left;
    width: auto;
    height: 100%;
}

.headerFloat {
    margin-left: auto;
    width: 50%;
}

.headerFloatLeft {
    float: left;
    margin-right: 20px;
    margin-bottom: 10px;
}

#headerRow {
    padding: 10px;
}

div.license-personal {
   background-color: #003366;
   color: #ffffff;
}

div.license-personal a {
   color: #ffffff;
}

.greyFormBox {
    border: 1px solid #cccccc;
    padding: 5px;
}

/* IE automatically adds a margin before and after form tags. Use this style to remove that */
.marginlessForm {
    margin: 0px;
}

.openPageHighlight {
    background-color: #ffffcc;
    padding: 2px;
    border: 1px solid #ddd;
}

.editPageInsertLinks, .editPageInsertLinks a
{
    color: #666666;
    font-weight: bold;
    font-size: 10px;
}

/* Style for label heatmap. */
.top10 a {
    font-weight: bold;
    font-size: 2em;
    color: #003366;
}
.top25 a {
    font-weight: bold;
    font-size: 1.6em;
    color: #003366;
}
.top50 a {
    font-size: 1.4em;
    color: #003366;
}
.top100 a {
    font-size: 1.2em;
    color: #003366;
}

.heatmap {
    list-style:none;
    width: 95%;
    margin: 0px auto;
}

.heatmap a {
    text-decoration:none;
}

.heatmap a:hover {
    text-decoration:underline;
}

.heatmap li {
    display: inline;
}

.minitab {
padding: 3px 0px 3px 8px;
margin-left: 0;
margin-top: 1px;
margin-bottom: 0px;
border-bottom: 1px solid #3c78b5;
font: bold 9px Verdana, sans-serif;
text-decoration: none;
float:none;
}
.selectedminitab {
padding: 3px 0.5em;
margin-left: 3px;
margin-top: 1px;
border: 1px solid #3c78b5;
background: white;
border-bottom: 1px solid white;
color: #000000;
text-decoration: none;
}
.unselectedminitab {
padding: 3px 0.5em;
margin-left: 3px;
margin-top: 1px;
border: 1px solid #3c78b5;
border-bottom: none;
background: #3c78b5;
color: #ffffff;
text-decoration: none;
}

a.unselectedminitab:hover {
color: #ffffff;
background: #003366;
border-color: #003366;
}

a.unselectedminitab:link { color: white; }
a.unselectedminitab:visited { color: white; }

a.selectedminitab:link { color: black; }
a.selectedminitab:visited { color: black; }

.linkerror { background-color: #fcc;}

a.labelOperationLink:link {text-decoration: underline}
a.labelOperationLink:active {text-decoration: underline}
a.labelOperationLink:visited {text-decoration: underline}
a.labelOperationLink:hover {text-decoration: underline}

a.newLabel:link {background-color: #ddffdd}
a.newLabel:active {background-color: #ddffdd}
a.newLabel:visited {background-color: #ddffdd}
a.newLabel:hover {background-color: #ddffdd}

ul.square {list-style-type: square}

.inline-control-link {
    background: #ffc;
    font-size: 9px;
    color: #666;
    padding: 2px;
    text-transform: uppercase;
    text-decoration: none;
}


.inline-control-link a:link {text-decoration: none}
.inline-control-link a:active {text-decoration: none}
.inline-control-link a:visited {text-decoration: none}
.inline-control-link a:hover {text-decoration: none}

.inline-control-link {
    background: #ffc;
    font-size: 9px;
    color: #666;
    padding: 2px;
    text-transform: uppercase;
    text-decoration: none;
    cursor: pointer;
}

div.auto_complete {
    width: 350px;
    background: #fff;
}
div.auto_complete ul {
    border: 1px solid #888;
    margin: 0;
    padding: 0;
    width: 100%;
    list-style-type: none;
}
div.auto_complete ul li {
    margin: 0;
    padding: 3px;
}
div.auto_complete ul li.selected {
    background-color: #ffb;
}
div.auto_complete ul strong.highlight {
    color: #800;
    margin: 0;
    padding: 0;
}

/******* Edit Page Styles *******/
.toogleFormDiv{
    border:1px solid #A7A6AA;
    background-color:white;
    padding:5px;
    margin-top: 5px;
}

.toogleInfoDiv{
    border:1px solid #A7A6AA;
    background-color:white;
    display:none;
    padding:5px;
    margin-top: 10px;
}

.inputSection{
    margin-bottom:20px;
}

#editBox{
   border:1px solid lightgray;
   background-color:#F0F0F0;
}

/******* Left Navigation Theme Styles ********/
.leftnav li a {
    text-decoration:none;
    color:white;
    margin:0px;
    display:block;
    padding:2px;
    padding-left:5px;
    background-color: #3c78b5;
    border-top:1px solid #3c78b5;
}

.leftnav li a:active {color:white;}
.leftnav li a:visited {color:white;}
.leftnav li a:hover {background-color: #003366; color:white;}

/* Added by Shaun during i18n */
.replaced
{
    background-color: #33CC66;
}

.topPadding
{
    margin-top: 20px;
}

/* new form style */
.form-block {
    padding: 6px;
}
.form-error-block {
    padding: 6px;
    background: #fcc;
    border-top: #f0f0f0 1px solid;
    border-bottom: #f0f0f0 1px solid;
    margin-bottom: 6px;
    padding: 0 12px 0 12px;
}
.form-element-large {
    font-size: 16px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
}

.form-element-small {
    font-size: 12px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
}

.form-header {
    background: lightyellow;
    border-top: #f0f0f0 1px solid;
    border-bottom: #f0f0f0 1px solid;
    margin-bottom: 6px;
    padding: 0 12px 0 12px;
}
.form-header p, .form-block p, .form-error-block p {
    line-height: normal;
    margin: 12px 0 12px 0;
}
.form-example {
    color: #888;
    font-size: 11px;
}
.form-divider {
    border-bottom: #ccc 1px solid;
    margin-bottom: 6px;
}
.form-buttons {
    margin-top: 6px;
    border-top: #ccc 1px solid;
    border-bottom: #ccc 1px solid;
    background: #f0f0f0;
    padding: 10px;
    text-align: center;
}
.form-buttons input {
    width: 100px;
}
.form-block .error {
    padding: 6px;
    margin-bottom: 6px;
}
    -->
    </style>
</head>
<body>

<div id="PageContent">
<table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%"><tr>
<td valign="top" class="pagebody">

    <div class="pageheader">
        <span class="pagetitle">
            Page Edited :
            <a href="http://cwiki.apache.org/confluence/display/GMOxDOC22">GMOxDOC22</a> :
            <a href="http://cwiki.apache.org/confluence/display/GMOxDOC22/Web+Application+for+JDBC+access">Web Application for JDBC access</a>
        </span>
    </div>

     <p>
        <a href="http://cwiki.apache.org/confluence/display/GMOxDOC22/Web+Application+for+JDBC+access">Web Application for JDBC access</a>
        has been edited by             <a href="http://cwiki.apache.org/confluence/display/~mcconne">Tim McConnell</a>
            <span class="smallfont">(Oct 23, 2008)</span>.
     </p>
    
     <p>
                 <a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=93315&originalVersion=24&revisedVersion=25">(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/GMOxDOC22/Web+Application+for+EJB+access"><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/GMOxDOC22/Web+Application+for+EJB+access">Web Application for EJB access</a>&nbsp;</td><td width='33%' class='ScrollbarParent'><sup><a href="/confluence/display/GMOxDOC22/Web+applications"><img border='0' align='middle' src='/confluence/images/icons/up_16.gif' width='8' height='8'></a></sup><a href="/confluence/display/GMOxDOC22/Web+applications">Web applications</a></td><td width='33%' class='ScrollbarNextName'>&nbsp;<a href="/confluence/display/GMOxDOC22/Web+Application+for+JMS+access">Web Application for JMS access</a></td><td class='ScrollbarNextIcon'><a href="/confluence/display/GMOxDOC22/Web+Application+for+JMS+access"><img border='0' align='middle' src='/confluence/images/icons/forwd_16.gif' width='16' height='16'></a></td></tr></table></div>
<p>This application will deal with populating a image on a database and later retrieving the same from the database. This tutorial will make you understand how to deal with data of type Blob. We will be using Derby database in this application. Please use images of smaller sizes to upload on to database. This is because there are some limitations associated with the derby database.</p>

<p>To run this tutorial, as a minimum you will be required to have installed the following prerequisite software:</p>

<ol>
	<li>Sun JDK 6.0+ (J2SE 1.6)</li>
	<li>Eclipse IDE for Java EE Developers, which is platform specific</li>
	<li>Apache Geronimo Eclipse Plugin 2.1.x</li>
	<li>Apache Geronimo Server 2.1.x
<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>
<p>Geronimo version 2.1.x, Java 1.5 runtime, and Eclipse Ganymede are used is used in this tutorial but other versions can be used instead (e.g., Geronimo version 2.2, Java 1.6, Eclipse Europa)</p></td></tr></table></li>
</ol>


<p>Details on installing eclipse are provided in the <a href="/confluence/display/GMOxDOC22/Development+environment" title="Development environment">Development environment</a> section. This tutorial is organized in the following sections:</p>

<div>
<ul>
  <li><a href='#WebApplicationforJDBCaccess-CreatingaDynamicWebProject'>Creating a Dynamic Web Project</a></li>
  <li><a href='#WebApplicationforJDBCaccess-CreatingadatabaseusingAdministrativeConsole'>Creating a database using Administrative Console</a></li>
  <li><a href='#WebApplicationforJDBCaccess-CreatingadatasourceusingAdministrativeConsole'>Creating a datasource using Administrative Console</a></li>
  <li><a href='#WebApplicationforJDBCaccess-AddingcodeforImageUploadtoderbydatabase'>Adding code for Image Upload to derby database</a></li>
  <li><a href='#WebApplicationforJDBCaccess-Codetoretrievetheimagefromderbydatabase'>Code to retrieve the image from derby database</a></li>
  <li><a href='#WebApplicationforJDBCaccess-Modifyingdeploymentplan'>Modifying deployment plan</a></li>
  <li><a href='#WebApplicationforJDBCaccess-DeployandRun'>Deploy and Run</a></li>
</ul></div>

<h1><a name="WebApplicationforJDBCaccess-CreatingaDynamicWebProject"></a>Creating a Dynamic Web Project</h1>
<ol>
	<li>Launch Eclipse. Select <b>File --&gt; New --&gt; Project</b>.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/createproj.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Select <b>Web --&gt; Dynamic Web Project</b>. Select <b>Next</b>.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/createproj2.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>On the next screen give the name of the project as <b>WebJDBC</b>.<br/>
<img src="/confluence/download/attachments/93315/createproj3.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Select default values for all other fields. Finally select <b>Finish</b>.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/createproj4.png" align="absmiddle" border="0" /> <br clear="all" /> <br clear="all" /> <br clear="all" /></li>
</ol>


<h1><a name="WebApplicationforJDBCaccess-CreatingadatabaseusingAdministrativeConsole"></a>Creating a database using Administrative Console</h1>
<ol>
	<li>Start the server and Launch the Administrative Console using the URL <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>.</li>
	<li>Enter default username and password.</li>
	<li>In the welcome page, Under <b>Embedded DB</b>, select <b>DB Manager</b>.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/createDB1.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>On the next page create a database <b>userdbs</b> and select <b>Create</b>.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/createDB2.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Once done you can see the <b>userdbs</b> database listed in DB Viewer portlet under <b>Databases</b>. This confirms that the database has been successfully created.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/createDB3.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>As shown in the figure below, select <b>userdbs</b> from the dropdown box.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/createDB4.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Run the query as shown in the figure. This query will create table <b>PICTURES</b> with the columns <b>name</b> and <b>pic</b>.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/createDB5.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" />
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>CreateTable.sql</b></div><div class="codeContent">
<pre class="code-java">create table pictures(name varchar(32) not <span class="code-keyword">null</span> primary key, pic blob(16M));</pre>
</div></div> <br clear="all" /></li>
</ol>


<h1><a name="WebApplicationforJDBCaccess-CreatingadatasourceusingAdministrativeConsole"></a>Creating a datasource using Administrative Console</h1>
<ol>
	<li>Start the server and Launch the Administrative Console using the URL <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>.</li>
	<li>Enter default username and password.</li>
	<li>Once in the welcome page. In console navigation, Under <b>Services</b>, select <b>Database Pools</b>.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/createDS.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>On the next screen, Create a new database pool <b>Using the Geronimo database pool wizard</b>.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/createDS2.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>On the next screen give the name as suggested in the figure (<b>jdbc/userds</b>). This will initiate the process to create a <b>Derby Embedded XA datasource</b>.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/createDS3.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Select the <b>Driver Jar</b> and give the database name as <b>userdbs</b> (remember this is the database we created in the previous step). All other fields can be set to default.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/createDS4.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Select <b>Deploy</b> to deploy the connector plan.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/createDS5.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Once done you can see the Database Pool <b>jdbc/userds</b> listed in the available database pools.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/createDS6.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
</ol>


<h1><a name="WebApplicationforJDBCaccess-AddingcodeforImageUploadtoderbydatabase"></a>Adding code for Image Upload to derby database</h1>
<ol>
	<li>Right click on <b>WebContent</b> and select <b>New --&gt; JSP</b>.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/Code1.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Name the JSP as <b>index.jsp</b> and select <b>Next</b>.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/code2.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Select <b>Finish</b>. This will create a template for <b>index.jsp</b>.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/code3.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Add the following code to <b>index.jsp</b>.
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>index.jsp</b></div><div class="codeContent">
<pre class="code-java">&lt;%@ page language=<span class="code-quote">"java"</span> contentType=<span class="code-quote">"text/html; charset=ISO-8859-1"</span>
    pageEncoding=<span class="code-quote">"ISO-8859-1"</span>%&gt;
&lt;!DOCTYPE html PUBLIC <span class="code-quote">"-<span class="code-comment">//W3C//DTD HTML 4.01 Transitional//EN"</span> <span class="code-quote">"http://www.w3.org/TR/html4/loose.dtd"</span>&gt;
</span>&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=<span class="code-quote">"Content-Type"</span> content=<span class="code-quote">"text/html; charset=ISO-8859-1"</span>&gt;
&lt;title&gt;Image Upload&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h2&gt;Select a Image and Upload it&lt;/h2&gt;
&lt;form action=<span class="code-quote">"/WebJDBC/ImageUpload"</span>&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;
Location of the Image(full path)
&lt;/td&gt;
&lt;td&gt;
&lt;Input type=<span class="code-quote">"text"</span> name=<span class="code-quote">"ImageLoc"</span>&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
Name of the Image(Unique Name)
&lt;/td&gt;
&lt;td&gt;
&lt;Input type=<span class="code-quote">"text"</span> name=<span class="code-quote">"ImageName"</span>&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;Input type=<span class="code-quote">"submit"</span> value=<span class="code-quote">"submit"</span>&gt;
&lt;/td&gt;
&lt;tr&gt;
&lt;/table&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
</div></div>
<p>The <b>&lt;form action="/WebJDBC/ImageUpload"&gt;</b> suggests that once the form is submitted the request will be passed to <b>ImageUpload</b>. The next step is to add the servlet <b>ImageUpload</b> to process the request sent by the JSP client. <br clear="all" /> <br clear="all" /></p></li>
	<li>Right click on <b>Java Resources</b> and  select <b>New --&gt; other</b>.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/code4.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Select <b>Web --&gt; Servlet</b>. Select <b>Next</b>.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/code5.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Name the java package as <b>jdbc</b> and class as <b>ImageUpload</b>. Select <b>Next --&gt; Next</b>. <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/code6.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Select <b>Finish</b>.<br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/code7.png" align="absmiddle" border="0" /> <br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Add the following code to <b>ImageUpload.java</b>.
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>ImageUpload.java</b></div><div class="codeContent">
<pre class="code-java"><span class="code-keyword">package</span> jdbc;

<span class="code-keyword">import</span> java.io.File;
<span class="code-keyword">import</span> java.io.FileInputStream;
<span class="code-keyword">import</span> java.io.IOException;
<span class="code-keyword">import</span> java.io.PrintWriter;
<span class="code-keyword">import</span> java.sql.Connection;
<span class="code-keyword">import</span> java.sql.PreparedStatement;
<span class="code-keyword">import</span> java.sql.SQLException;
<span class="code-keyword">import</span> javax.annotation.Resource;
<span class="code-keyword">import</span> javax.servlet.ServletException;
<span class="code-keyword">import</span> javax.servlet.http.HttpServletRequest;
<span class="code-keyword">import</span> javax.servlet.http.HttpServletResponse;
<span class="code-keyword">import</span> javax.sql.DataSource;

<span class="code-keyword">public</span> class ImageUpload <span class="code-keyword">extends</span> javax.servlet.http.HttpServlet <span class="code-keyword">implements</span> javax.servlet.Servlet {
	@Resource(name=<span class="code-quote">"jdbc/userds"</span>)
	 <span class="code-keyword">private</span> DataSource ds;
   <span class="code-keyword">static</span> <span class="code-keyword">final</span> <span class="code-object">long</span> serialVersionUID = 1L;
   
 	<span class="code-keyword">public</span> ImageUpload() {
		<span class="code-keyword">super</span>();
	}   	
	<span class="code-keyword">protected</span> void doGet(HttpServletRequest request, HttpServletResponse response) <span class="code-keyword">throws</span> ServletException, IOException {
doProcess(request, response);
	}  	
	
	<span class="code-keyword">protected</span> void doProcess(HttpServletRequest request, HttpServletResponse response) <span class="code-keyword">throws</span> ServletException, IOException {
		Connection dbconnect = <span class="code-keyword">null</span>;
		PreparedStatement stmnt = <span class="code-keyword">null</span>;
		<span class="code-object">String</span> pic=request.getParameter(<span class="code-quote">"ImageLoc"</span>);
		<span class="code-object">String</span> name=request.getParameter(<span class="code-quote">"ImageName"</span>);
		<span class="code-keyword">try</span>{
			File f= <span class="code-keyword">new</span> File(pic);
			FileInputStream fis=<span class="code-keyword">new</span> FileInputStream(f);
			dbconnect= ds.getConnection();
			stmnt = dbconnect.prepareStatement(<span class="code-quote">"INSERT INTO PICTURES ("</span> + <span class="code-quote">"NAME,"</span> + <span class="code-quote">"PIC )"</span> + <span class="code-quote">" VALUES(?,?)"</span>);
			stmnt.setString(1, name);
			stmnt.setBinaryStream(2, fis, (<span class="code-object">int</span>)f.length());
			stmnt.execute();
			PrintWriter out= response.getWriter();
			out.println(<span class="code-quote">"Congratulations your image has been successfully uploaded"</span>);			
		}
		<span class="code-keyword">catch</span>(Exception e)
		{
			e.printStackTrace();
		}
		<span class="code-keyword">finally</span>
		{
		<span class="code-keyword">try</span>{
    		dbconnect.close();
    		stmnt.close();
    	}<span class="code-keyword">catch</span>(SQLException e){
    		e.printStackTrace();
    	}    
		}
	}
		
	
	<span class="code-keyword">protected</span> void doPost(HttpServletRequest request, HttpServletResponse response) <span class="code-keyword">throws</span> ServletException, IOException {
doProcess(request, response);
	}   	  	    
}</pre>
</div></div></li>
</ol>


<p>Once a request is submitted from <b>index.jsp</b> for an image upload with the name and exact location of image the request is send to the <b>ImageUpload</b> servlet.</p>
<ul>
	<li>String pic=request.getParameter("ImageLoc");- Retrieves the location of the image</li>
	<li>String name=request.getParameter("ImageName");- Retrieves the name of the image</li>
</ul>


<p>Once we have the image available a new File object is created from the image. Thereafter the image file is read as a binary stream. <b>PreparedStatement</b> is used to insert the image onto database. This completes the code for <b>ImageUpload</b>. <br clear="all" /> <br clear="all" /></p>

<h1><a name="WebApplicationforJDBCaccess-Codetoretrievetheimagefromderbydatabase"></a>Code to retrieve the image from derby database</h1>
<ol>
	<li>Create a <b>JSP</b> page with the name <b>ImageDownload.jsp</b>.</li>
	<li>Add the following code to <b>ImageDownload.jsp</b>:
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>ImageDownload.jsp</b></div><div class="codeContent">
<pre class="code-java">&lt;%@ page language=<span class="code-quote">"java"</span> contentType=<span class="code-quote">"text/html; charset=ISO-8859-1"</span>
    pageEncoding=<span class="code-quote">"ISO-8859-1"</span>%&gt;
&lt;!DOCTYPE html PUBLIC <span class="code-quote">"-<span class="code-comment">//W3C//DTD HTML 4.01 Transitional//EN"</span> <span class="code-quote">"http://www.w3.org/TR/html4/loose.dtd"</span>&gt;
</span>&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=<span class="code-quote">"Content-Type"</span> content=<span class="code-quote">"text/html; charset=ISO-8859-1"</span>&gt;
&lt;title&gt;Download Image&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h2&gt;Name a Image to download&lt;/h2&gt;
&lt;form action=<span class="code-quote">"/WebJDBC/ImageDownload"</span>&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;
Name of the Image
&lt;/td&gt;
&lt;td&gt;
&lt;Input type=<span class="code-quote">"text"</span> name=<span class="code-quote">"ImageName"</span>&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;Input type=<span class="code-quote">"submit"</span> value=<span class="code-quote">"submit"</span>&gt;
&lt;/td&gt;
&lt;tr&gt;
&lt;/table&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
</div></div>
<p>As can be seen from <b>&lt;form action="/WebJDBC/ImageDownload"&gt;</b> this JSP requests the <b>ImageDownload</b> servlet when the form is submitted. <br clear="all" /> <br clear="all" /></p></li>
	<li>Create a new servlet <b>ImageDownload.java</b> and add the following code:
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>ImageDownload.java</b></div><div class="codeContent">
<pre class="code-java"><span class="code-keyword">package</span> jdbc;

<span class="code-keyword">import</span> java.io.IOException;
<span class="code-keyword">import</span> java.io.OutputStream;
<span class="code-keyword">import</span> java.sql.Blob;
<span class="code-keyword">import</span> java.sql.Connection;
<span class="code-keyword">import</span> java.sql.PreparedStatement;
<span class="code-keyword">import</span> java.sql.ResultSet;
<span class="code-keyword">import</span> java.sql.SQLException;

<span class="code-keyword">import</span> javax.annotation.Resource;
<span class="code-keyword">import</span> javax.servlet.ServletException;
<span class="code-keyword">import</span> javax.servlet.http.HttpServletRequest;
<span class="code-keyword">import</span> javax.servlet.http.HttpServletResponse;
<span class="code-keyword">import</span> javax.sql.DataSource;

 <span class="code-keyword">public</span> class ImageDownload <span class="code-keyword">extends</span> javax.servlet.http.HttpServlet <span class="code-keyword">implements</span> javax.servlet.Servlet {
	 @Resource(name = <span class="code-quote">"jdbc/userds"</span>)
		<span class="code-keyword">private</span> DataSource ds;
   <span class="code-keyword">static</span> <span class="code-keyword">final</span> <span class="code-object">long</span> serialVersionUID = 1L;
   
	<span class="code-keyword">public</span> ImageDownload() {
		<span class="code-keyword">super</span>();
	}   	
	
	<span class="code-keyword">protected</span> void doGet(HttpServletRequest request, HttpServletResponse response) <span class="code-keyword">throws</span> ServletException, IOException {
		doProcess(request, response);	
	}  	
	<span class="code-keyword">protected</span> void doProcess(HttpServletRequest request, HttpServletResponse response) <span class="code-keyword">throws</span> ServletException, IOException {
		Connection dbconnect = <span class="code-keyword">null</span>;
		ResultSet rs = <span class="code-keyword">null</span>;
		PreparedStatement stmnt = <span class="code-keyword">null</span>;
		<span class="code-keyword">try</span> {
			dbconnect = ds.getConnection();
			<span class="code-object">String</span> s=request.getParameter(<span class="code-quote">"ImageName"</span>);
			stmnt = dbconnect.prepareStatement(<span class="code-quote">"SELECT PIC FROM PICTURES WHERE NAME=?"</span>);
			stmnt.setString(1, s);
			rs = stmnt.executeQuery();
			<span class="code-keyword">if</span> (rs.next()) {
				<span class="code-comment">// Get as a BLOB
</span>				Blob aBlob = rs.getBlob(1);
				<span class="code-object">byte</span>[] b = <span class="code-keyword">new</span> <span class="code-object">byte</span>[4096];
				java.io.InputStream ip = aBlob.getBinaryStream();
				OutputStream out = <span class="code-keyword">null</span>;
				<span class="code-object">int</span> c = 0;
				out = response.getOutputStream();
				response.setContentType(<span class="code-quote">"image/jpeg"</span>);
				<span class="code-keyword">while</span> (c != -1) {
					c = ip.read(b);
					out.write(b);
					out.flush();
				}
				ip.close();
				
			}

		} <span class="code-keyword">catch</span> (Exception e) {
			e.printStackTrace();
		} <span class="code-keyword">finally</span> {
        	<span class="code-keyword">try</span>{
        		dbconnect.close();
        		stmnt.close();
        	    rs.close();
        	}<span class="code-keyword">catch</span>(SQLException e){
        		e.printStackTrace();
        	}        	        	
        }

	} 
	<span class="code-keyword">protected</span> void doPost(HttpServletRequest request, HttpServletResponse response) <span class="code-keyword">throws</span> ServletException, IOException {
		doProcess(request, response);
	}   	  	    
}</pre>
</div></div></li>
</ol>


<p>The <b>ImageDownload</b> servlet works in a similar way once the request is sent from <b>ImageDownload.jsp</b> to it. The servlet uses</p>
<ul>
	<li>String s=request.getParameter("ImageName");- To retrieve the name of the image to be downloaded</li>
	<li>rs = stmnt.executeQuery();- To execute the PreparedStatement</li>
	<li>Blob aBlob = rs.getBlob(1);- Data is stored as a Blob datatype</li>
	<li>java.io.InputStream ip = aBlob.getBinaryStream();- Blob data is retrieved as a binary stream</li>
	<li>response.setContentType("image/jpeg");- sets the output content type as a Image datatype</li>
	<li>c = ip.read(b);, out.write(b);, out.flush();- Data is read as a byte buffer and written on the web page. After each write the buffet is flushed.</li>
</ul>


<p>This completes the code for Image download. <br clear="all" /> <br clear="all" /></p>

<h1><a name="WebApplicationforJDBCaccess-Modifyingdeploymentplan"></a>Modifying deployment plan</h1>
<p>The next step is to modify the <b>geronimo-web.xml</b> deployment plan. We need to add the dependency element for the <b>JDBC</b> resource. Also we need to add a resource reference element for the <b>userds</b> datasource.</p>
<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>geronimo-web.xml</b></div><div class="codeContent">
<pre class="code-java">&lt;?xml version=<span class="code-quote">"1.0"</span> encoding=<span class="code-quote">"UTF-8"</span>?&gt;
&lt;web-app xmlns=<span class="code-quote">"http:<span class="code-comment">//geronimo.apache.org/xml/ns/j2ee/web-2.0.1"</span>
</span>         xmlns:nam=<span class="code-quote">"http:<span class="code-comment">//geronimo.apache.org/xml/ns/naming-1.2"</span>
</span>         xmlns:sec=<span class="code-quote">"http:<span class="code-comment">//geronimo.apache.org/xml/ns/security-2.0"</span> 
</span>         xmlns:sys=<span class="code-quote">"http:<span class="code-comment">//geronimo.apache.org/xml/ns/deployment-1.2"</span>&gt;
</span>  &lt;sys:environment&gt;
    &lt;sys:moduleId&gt;
      &lt;sys:groupId&gt;<span class="code-keyword">default</span>&lt;/sys:groupId&gt;
      &lt;sys:artifactId&gt;WebJDBC&lt;/sys:artifactId&gt;
      &lt;sys:version&gt;1.0&lt;/sys:version&gt;
      &lt;sys:type&gt;car&lt;/sys:type&gt;
    &lt;/sys:moduleId&gt;
   &lt;sys:dependencies&gt;
            &lt;sys:dependency&gt;
                &lt;sys:groupId&gt;console.dbpool&lt;/sys:groupId&gt;
                &lt;sys:artifactId&gt;userds&lt;/sys:artifactId&gt;
            &lt;/sys:dependency&gt;
    &lt;/sys:dependencies&gt;
  &lt;/sys:environment&gt;
  &lt;context-root&gt;/WebJDBC&lt;/context-root&gt;
  &lt;nam:resource-ref&gt;
        &lt;nam:ref-name&gt;jdbc/userds&lt;/nam:ref-name&gt;
        &lt;nam:pattern&gt;
          &lt;nam:groupId&gt;console.dbpool&lt;/nam:groupId&gt;
          &lt;nam:artifactId&gt;userds&lt;/nam:artifactId&gt;
          &lt;nam:name&gt;jdbc/userds&lt;/nam:name&gt;
        &lt;/nam:pattern&gt;
    &lt;/nam:resource-ref&gt;
&lt;/web-app&gt;</pre>
</div></div>
<ul>
	<li>&lt;sys:dependency&gt;- The dependency element is to suggest the dependency of the application on the database pool. In our case we have <b>userds</b> as a dependency module.</li>
	<li>&lt;nam:resource-ref&gt;- This element is used to map the JDBC connenction pool with a user defined name. In our case we have mapped <b>jdbc/userds</b> with <b>userds</b>. <br clear="all" /> <br clear="all" /></li>
</ul>


<h1><a name="WebApplicationforJDBCaccess-DeployandRun"></a>Deploy and Run</h1>
<ol>
	<li>Start the server within Eclipse.</li>
	<li>Right-click on <b>WebJDBC</b> project and select <b>Run as &#8211; &gt; Run on server</b>.</li>
	<li>Once done the application will be deployed on the server.</li>
	<li>Launch the application with the following link <span class="nobr"><a href="http://localhost:8080/WebJDBC/" title="Visit page outside Confluence" rel="nofollow">http://localhost:8080/WebJDBC/<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span><br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/run1.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>Fill up the form with the a image location and name. The same name will be used while populating the database with the image data. Select <b>Submit</b> once done.<br/>
<img src="/confluence/download/attachments/93315/run2.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>If your image is successfully inserted into the database you will get a Congratulation message. <br clear="all" /> <br clear="all" />
<img src="/confluence/download/attachments/93315/run3.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>To retrieve an image from the database launch the following portlet <span class="nobr"><a href="http://localhost:8080/WebJDBC/ImageDownload.jsp" title="Visit page outside Confluence" rel="nofollow">http://localhost:8080/WebJDBC/ImageDownload.jsp<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>. Select <b>submit</b> once done.<br/>
<img src="/confluence/download/attachments/93315/run4.png" align="absmiddle" border="0" /><br clear="all" /> <br clear="all" /> <br clear="all" /></li>
	<li>This will display the image in the browser</li>
</ol>
</div>


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

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

</div>

</body>
</html>


Mime
View raw message