diff options
Diffstat (limited to 'site/trunk/site-publish/documentation-2x')
161 files changed, 26675 insertions, 0 deletions
diff --git a/site/trunk/site-publish/documentation-2x/01-overview.data/guide_icon.jpeg b/site/trunk/site-publish/documentation-2x/01-overview.data/guide_icon.jpeg Binary files differnew file mode 100644 index 0000000000..a0b9c3c248 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/01-overview.data/guide_icon.jpeg diff --git a/site/trunk/site-publish/documentation-2x/01-overview.data/guide_icon.jpeg.jpeg b/site/trunk/site-publish/documentation-2x/01-overview.data/guide_icon.jpeg.jpeg Binary files differnew file mode 100644 index 0000000000..899edcb286 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/01-overview.data/guide_icon.jpeg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/01-overview.html b/site/trunk/site-publish/documentation-2x/01-overview.html new file mode 100644 index 0000000000..d1c889e61b --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/01-overview.html @@ -0,0 +1,229 @@ + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <LINK type="text/css" rel="stylesheet" href="resources/space.css"> + <STYLE type="text/css"> + .footer { + background-image: url('http://cwiki.apache.org/confluence/images/border/border_bottom.gif'); + background-repeat: repeat-x; + background-position: left top; + padding-top: 4px; + color: #666; + } + </STYLE> + <SCRIPT type="text/javascript" language="javascript"> + var hide = null; + var show = null; + var children = null; + + function init() { + /* Search form initialization */ + var form = document.forms['search']; + if (form != null) { + form.elements['domains'].value = location.hostname; + form.elements['sitesearch'].value = location.hostname; + } + + /* Children initialization */ + hide = document.getElementById('hide'); + show = document.getElementById('show'); + children = document.all != null ? + document.all['children'] : + document.getElementById('children'); + if (children != null) { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + } + + function showChildren() { + children.style.display = 'block'; + show.style.display = 'none'; + hide.style.display = 'inline'; + } + + function hideChildren() { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + </SCRIPT> + <TITLE>01-Overview</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + <BODY onload="init()"> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="01-Overview">01-Overview</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="/wiki/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">01-Overview</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=109103"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=109103">Edit Page</A> + + <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109103"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109103">Add Page</A> + + <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109103"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109103">Add News</A> + </DIV> + </DIV> + <DIV class="pagesubheading" style="margin: 0px 10px 0px 10px;"> + Added by <A href="http://cwiki.apache.org/confluence/users/viewuserprofile.action?username=lresende@apache.org">Luciano Resende</A>, last edited by <A href="http://cwiki.apache.org/confluence/users/viewuserprofile.action?username=lresende@apache.org">Luciano Resende</A> on Feb 04, 2009 + (<A class="noprint" href="http://cwiki.apache.org/confluence/pages/diffpages.action?pageId=109103&originalId=109228">view change</A>) + + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H2><A name="01-Overview-SCAJavaDocumentationfor2.x"></A>SCA Java Documentation for 2.x</H2> + +<STYLE type="text/css"> + table.lozenge { + border: none; + border-collapse: collapse; + height: 75px; + } + table.lozenge td.icon { + width: 91px; + height: 75px; + text-align: center; + vertical-align: middle; + } + table.lozenge td.top { + height: 8px; + width: 8px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_top.gif"); + } + table.lozenge td.topRight, table.lozenge img.border { + height: 8px; + width: 8px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_tright.gif"); + } + table.lozenge td.body, table.lozenge td.breaker { + height: 59px; + vertical-align: top; + background-color: #F3F3E9; + } + table.lozenge td.breaker { + width: 8px; + } + table.lozenge td.right { + width: 8px; + height: 59px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_right.gif"); + } + table.lozenge td.bottom { + height: 8px; + width: 8px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_bot.gif"); + } + table.lozenge td.bottomRight { + height: 8px; + width: 8px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_bright.gif"); + } +</STYLE> +<TABLE style="width:100%;cursor: pointer" cellspacing="0" cellpadding="0" class="lozenge" onclick="document.location.href="/confluence/display/TUSCANYxDOCx2x/02-Getting+Started";" onkeypress="document.location.href="/confluence/display/TUSCANYxDOCx2x/02-Getting+Started";"> + <TR> + <TD style="background-image: url('/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_blue_blue.gif')" class="icon" rowspan="3"><B><A onclick="return false;" href="02-getting-started.html" title="View Getting Started with Tuscany"><IMG src="01-overview.data/guide_icon.jpeg" align="absmiddle" border="0"></A></B></TD> + <TD class="top" colspan="2"></TD> + <TD class="topRight"></TD> + </TR> + <TR> + <TD class="breaker"> </TD> + <TD style="width:auto" class="body" height="59" align="left" valign="top" bgcolor="#F3F3E9"> + <B><A onclick="return false;" href="02-getting-started.html" title="View Getting Started with Tuscany">Getting Started with Tuscany</A></B> <BR> +These guides help you to get setup in Tuscany, develop and run a simple application using comand line or Eclipse. + </TD> + <TD class="right"> </TD> + </TR> + <TR> + <TD class="bottom" colspan="2"></TD> + <TD class="bottomRight"></TD> + </TR> +</TABLE> + + +<TABLE style="width:100%;cursor: pointer" cellspacing="0" cellpadding="0" class="lozenge" onclick="document.location.href="/confluence/display/TUSCANYxDOCx2x/03-SCA+Introduction";" onkeypress="document.location.href="/confluence/display/TUSCANYxDOCx2x/03-SCA+Introduction";"> + <TR> + <TD style="background-image: url('/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_pink_blue.gif')" class="icon" rowspan="3"><B><A onclick="return false;" href="03-sca-introduction.html" title="View SCA Introduction"><IMG src="01-overview.data/guide_icon.jpeg" align="absmiddle" border="0"></A></B></TD> + <TD class="top" colspan="2"></TD> + <TD class="topRight"></TD> + </TR> + <TR> + <TD class="breaker"> </TD> + <TD style="width:auto" class="body" height="59" align="left" valign="top" bgcolor="#F3F3E9"> + <B><A onclick="return false;" href="03-sca-introduction.html" title="View SCA Introduction">SCA Introduction</A></B> <BR> +Provides a quick introduction to SCA and links to the SCA Specifications. + </TD> + <TD class="right"> </TD> + </TR> + <TR> + <TD class="bottom" colspan="2"></TD> + <TD class="bottomRight"></TD> + </TR> +</TABLE> + + + +<TABLE style="width:100%;cursor: pointer" cellspacing="0" cellpadding="0" class="lozenge" onclick="document.location.href="/confluence/display/TUSCANYxDOCx2x/04-Development+Guides";" onkeypress="document.location.href="/confluence/display/TUSCANYxDOCx2x/04-Development+Guides";"> + <TR> + <TD style="background-image: url('/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_red_blue.gif')" class="icon" rowspan="3"><B><A onclick="return false;" href="04-development-guides.html" title="View Development Guide"><IMG src="01-overview.data/guide_icon.jpeg" align="absmiddle" border="0"></A></B></TD> + <TD class="top" colspan="2"></TD> + <TD class="topRight"></TD> + </TR> + <TR> + <TD class="breaker"> </TD> + <TD style="width:auto" class="body" height="59" align="left" valign="top" bgcolor="#F3F3E9"> + <B><A onclick="return false;" href="04-development-guides.html" title="View Development Guide">Development Guide</A></B> <BR> +These guides help you learn more about Tuscany architecture and how to get involved in the development of Tuscany. We look forward to your help. + </TD> + <TD class="right"> </TD> + </TR> + <TR> + <TD class="bottom" colspan="2"></TD> + <TD class="bottomRight"></TD> + </TR> +</TABLE> + + </DIV> + + + </DIV> + </DIV> + <DIV class="footer"> + Generated by + <A href="http://www.atlassian.com/confluence/">Atlassian Confluence</A> (Version: 2.10.3 Build: 1519 Apr 15, 2009) + <A href="http://could.it/autoexport/">Auto Export Plugin</A> (Version: 1.0.0.beta1) + </DIV> + </BODY> +</HTML> diff --git a/site/trunk/site-publish/documentation-2x/02-getting-started.html b/site/trunk/site-publish/documentation-2x/02-getting-started.html new file mode 100644 index 0000000000..5cdd5cc3bd --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/02-getting-started.html @@ -0,0 +1,119 @@ + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <LINK type="text/css" rel="stylesheet" href="resources/space.css"> + <STYLE type="text/css"> + .footer { + background-image: url('http://cwiki.apache.org/confluence/images/border/border_bottom.gif'); + background-repeat: repeat-x; + background-position: left top; + padding-top: 4px; + color: #666; + } + </STYLE> + <SCRIPT type="text/javascript" language="javascript"> + var hide = null; + var show = null; + var children = null; + + function init() { + /* Search form initialization */ + var form = document.forms['search']; + if (form != null) { + form.elements['domains'].value = location.hostname; + form.elements['sitesearch'].value = location.hostname; + } + + /* Children initialization */ + hide = document.getElementById('hide'); + show = document.getElementById('show'); + children = document.all != null ? + document.all['children'] : + document.getElementById('children'); + if (children != null) { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + } + + function showChildren() { + children.style.display = 'block'; + show.style.display = 'none'; + hide.style.display = 'inline'; + } + + function hideChildren() { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + </SCRIPT> + <TITLE>02-Getting Started</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + <BODY onload="init()"> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="02-Getting Started">02-Getting Started</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="/wiki/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">02-Getting Started</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=109152"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=109152">Edit Page</A> + + <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109152"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109152">Add Page</A> + + <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109152"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109152">Add News</A> + </DIV> + </DIV> + <DIV class="pagesubheading" style="margin: 0px 10px 0px 10px;"> + Added by <A href="http://cwiki.apache.org/confluence/users/viewuserprofile.action?username=lresende@apache.org">Luciano Resende</A>, last edited by <A href="http://cwiki.apache.org/confluence/users/viewuserprofile.action?username=lresende@apache.org">Luciano Resende</A> on Feb 03, 2009 + (<A class="noprint" href="http://cwiki.apache.org/confluence/pages/diffpages.action?pageId=109152&originalId=109155">view change</A>) + + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <DIV class="panelMacro"><TABLE class="infoMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="http://cwiki.apache.org/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>In Progress</TD></TR></TABLE></DIV> + </DIV> + + + </DIV> + </DIV> + <DIV class="footer"> + Generated by + <A href="http://www.atlassian.com/confluence/">Atlassian Confluence</A> (Version: 2.10.3 Build: 1519 Apr 15, 2009) + <A href="http://could.it/autoexport/">Auto Export Plugin</A> (Version: 1.0.0.beta1) + </DIV> + </BODY> +</HTML> diff --git a/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/calc.jpg b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/calc.jpg Binary files differnew file mode 100644 index 0000000000..4c1ea05f6d --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/calc.jpg diff --git a/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/calc.jpg.jpeg b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/calc.jpg.jpeg Binary files differnew file mode 100644 index 0000000000..b0e371f303 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/calc.jpg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/component.png b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/component.png Binary files differnew file mode 100644 index 0000000000..72b9d1b4d2 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/component.png diff --git a/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/component.png.jpeg b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/component.png.jpeg Binary files differnew file mode 100644 index 0000000000..6ab7db30aa --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/component.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/domain.jpg b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/domain.jpg Binary files differnew file mode 100644 index 0000000000..587094badc --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/domain.jpg diff --git a/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/domain.jpg.jpeg b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/domain.jpg.jpeg Binary files differnew file mode 100644 index 0000000000..829bd77110 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/02-sca-introduction.data/domain.jpg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/02-sca-introduction.html b/site/trunk/site-publish/documentation-2x/02-sca-introduction.html new file mode 100644 index 0000000000..fe1f949a88 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/02-sca-introduction.html @@ -0,0 +1,222 @@ + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <LINK type="text/css" rel="stylesheet" href="resources/space.css"> + <STYLE type="text/css"> + .footer { + background-image: url('http://cwiki.apache.org/confluence/images/border/border_bottom.gif'); + background-repeat: repeat-x; + background-position: left top; + padding-top: 4px; + color: #666; + } + </STYLE> + <SCRIPT type="text/javascript" language="javascript"> + var hide = null; + var show = null; + var children = null; + + function init() { + /* Search form initialization */ + var form = document.forms['search']; + if (form != null) { + form.elements['domains'].value = location.hostname; + form.elements['sitesearch'].value = location.hostname; + } + + /* Children initialization */ + hide = document.getElementById('hide'); + show = document.getElementById('show'); + children = document.all != null ? + document.all['children'] : + document.getElementById('children'); + if (children != null) { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + } + + function showChildren() { + children.style.display = 'block'; + show.style.display = 'none'; + hide.style.display = 'inline'; + } + + function hideChildren() { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + </SCRIPT> + <TITLE>02-SCA Introduction</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + <BODY onload="init()"> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap=""> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="02-SCA Introduction">02-SCA Introduction</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="/wiki/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">02-SCA Introduction</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=109106"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=109106">Edit Page</A> + + <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109106"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109106">Add Page</A> + + <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109106"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109106">Add News</A> + </DIV> + </DIV> + <DIV class="pagesubheading" style="margin: 0px 10px 0px 10px;"> + Added by <A href="http://cwiki.apache.org/confluence/users/viewuserprofile.action?username=lresende@apache.org">Luciano Resende</A>, last edited by <A href="http://cwiki.apache.org/confluence/users/viewuserprofile.action?username=lresende@apache.org">Luciano Resende</A> on Feb 03, 2009 + (<A href="http://cwiki.apache.org/confluence/pages/diffpages.action?pageId=109106&originalId=109143">view change</A>) + + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <UL> + <LI><A href="#02-SCAIntroduction-whatisSCA" title="what is SCA on 02-SCA Introduction">What is SCA?</A></LI> + <LI><A href="#02-SCAIntroduction-scacomponent" title="sca component on 02-SCA Introduction">SCA Component</A></LI> + <LI><A href="#02-SCAIntroduction-scawire" title="sca wire on 02-SCA Introduction">SCA Wire</A></LI> + <LI><A href="#02-SCAIntroduction-scacomposite" title="sca composite on 02-SCA Introduction">SCA Composite</A></LI> + <LI><A href="#02-SCAIntroduction-scacontribution" title="sca contribution on 02-SCA Introduction">SCA Contribution</A></LI> + <LI><A href="#02-SCAIntroduction-scadomain" title="sca domain on 02-SCA Introduction">SCA Domain</A></LI> + <LI><A href="#02-SCAIntroduction-scabinding" title="sca binding on 02-SCA Introduction">SCA Binding</A></LI> + <LI><A href="#02-SCAIntroduction-scapolicy" title="sca policy on 02-SCA Introduction">SCA Policy</A></LI> +</UL> + + +<H2><A name="02-SCAIntroduction-WhatisSCA%3F"></A><A name="02-SCAIntroduction-whatisSCA"></A>What is SCA?</H2> +<P>SCA is a standard programming model for abstracting business functions as components and using them as building blocks to assemble business solutions. An SCA component offers services and depends on functions that are called references. It also has an implementation associated it with it which is the business logic that can be implemented in any technology. </P> + +<P>SCA provides a declarative way to describe how the services in an assembly interact with one another and what quality of services (security, transaction, etc) is applied to the interaction. Since service interaction and quality of service is declarative, solution developers remain focus on business logic and therefore development cycle is simplified and shortened. This also promotes the development of reusable services that can be used in different contexts. For example, a shopping cart service can be used in a retail application or a travel application without changing. Services can interact with one another synchronously or asynchronously and can be implemented in any technology.</P> + +<P>SCA also brings flexibility to deployment. A solution assembled with SCA is deployed as a unit and can be distributed over one or more nodes in the network and can be reconfigured without programming changes. </P> + +<P>Applications that adopt SCA programming model can interact with non-SCA applications. Meaning non-SCA application can call into SCA enabled applications and SCA enabled applications can call out into non-SCA enabled applications.</P> + +<P>Now let's talk about SCA building blocks and concepts.</P> + +<H2><A name="02-SCAIntroduction-SCAComponent"></A><A name="02-SCAIntroduction-scacomponent"></A>SCA Component</H2> + +<P>The basic building block for SCA is a component. It is the abstraction of a given business function. A component is described with the following attributes:</P> + +<UL> + <LI><B>Service:</B> Describes the functions that this type of component provides. A component can offer one ore more services. A service is an interface.</LI> + <LI><B>Reference:</B> This describes the dependencies this type of component has in order to function. A reference is an interface.</LI> + <LI><B>Property:</B> This defines configuration parameters that can controls how the business function can behave. For example, what currency to use for an account component.</LI> + <LI><B>Intent policies:</B> This describes assumptions on how the component will behave. There are two types of policies. + <UL> + <LI>Implementation policy- Impact the behavior of an implementation. For example, transaction, monitor and logging</LI> + <LI>Interaction policy - defines how the components behave with one another. For example, security.</LI> + </UL> + </LI> + <LI><B>Implementation:</B> Every component has some implementation associated with it. This can be a new business logic or an existing one that is now being used in the assembly. A business logic can handle different operations and some of which are exposed externally as callable services. Component implementation can be in any technology, for example for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type.</LI> +</UL> + + +<P>This is demonstrated below.<BR> +<DIV align="center"><IMG src="02-sca-introduction.data/component.png" border="0"></DIV></P> + +<P>The implementation of a component can be in any language that is suitable for the user, for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type. </P> + +<H2><A name="02-SCAIntroduction-SCAWire"></A><A name="02-SCAIntroduction-scawire"></A>SCA Wire</H2> + +<P>As mentioned above, an SCA component may have zero or more references. Refrences in SCA define how SCA components invoke services. The relationship between a reference and a service is typically demonstrated through a line in a SCA diagrams and is referred to as a wire. </P> + +<P>The term wire can at the begining seem confusing because you may ask how a wire is realized. There is no physical definition for a wire, it is really derived from the relationship between a Service and its refrence(s) at runtime. This is realized through dependency injection in Tuscany. </P> + + +<H2><A name="02-SCAIntroduction-SCAComposite"></A><A name="02-SCAIntroduction-scacomposite"></A>SCA Composite</H2> + +<P>An SCA composite consists of components, services, references, and wires that connect them. A composite is the unit of deployment for SCA.<BR> +A composite can be viewed as a component whose implementation is not code but an aggregation of one or more components co-operating to provide higher level services. Think of composite as a solution, for example a credit check composite may consist of multiple components that together perform the credit checking work. A composite can also be used within a larger solution, for example credit check can be part of a order processing composite. A composite has the same charactersitics as a component. It provides Services, has References to other dependencies, and can be configured using Properties and can have intent policies in just the same way as an individual components can. In thise case, attributes of some of the components that are embedded in the composite get 'promoted' and becom the attribute of the composite. In the example below, you see a calculator composite which consists of 5 components, a calculator service has references to four components:Add, Subtract, Multiply and Divide.</P> + +<P><DIV align="center"><IMG src="02-sca-introduction.data/calc.jpg" border="0"></DIV><BR> +<IMG class="emoticon" src="http://cwiki.apache.org/confluence/images/icons/emoticons/lightbulb_on.gif" height="16" width="16" align="absmiddle" alt="" border="0"> The assembly or wiring is defined in .composite file through Service Component Definition Language (SCDL) that is in XML. For example, calculator.composite would define that calculator component references the other four components.</P> + +<H2><A name="02-SCAIntroduction-SCAContribution"></A><A name="02-SCAIntroduction-scacontribution"></A>SCA Contribution</H2> + +<P>The artifacts that make up a solution get packaged into what is called a contribution. A contribution can take a number of different forms. For example, it could be a jar file, or it could be a directory tree on the file system. A contribution can contain composites, java classes, BPEL processes, XSD files, wsdl files, etc. An SCA application can be divided into multiple contributions with dependencies between them. In general, some services depend closely on other services and it makes sense to package them together. If services are more independent it is best to package them separately so that they can be reused in different contexts. A contribution is a deployable unit. A solution may require multiple contributions that share artifacts and artifacts can be shared between (imported) between contributions.</P> + +<H2><A name="02-SCAIntroduction-SCADomain"></A><A name="02-SCAIntroduction-scadomain"></A>SCA Domain</H2> + +<P>Contribution packages get contributed to what is called SCA domain which is the scope of adminstration at runtime. An SCA Domain represents a complete runtime configuration, potentially distributed over a series of interconnected runtime nodes and is a logical view of the running applications or a coherent grouping of components that are working together. An SCA Domain typically represents an area of business functionality controlled by a single organization. For example, an SCA Domain may be the whole of a business, or it may be a department within a business.</P> + +<P>Therefore, an SCA domain consists of the definitions of composites, components, their implementations, <B>and the nodes</B> on which they run. Components deployed into a domain can directly wire to other components within the same domain. Communication with services outside of a domain is done through bindings. </P> + + +<P>SCA Domains can vary in size from the very small to the very large:</P> +<UL> + <LI>a very small domain could be one within a test environment inside an IDE</LI> + <LI>a medium sized domain could be a single server or small cluster supporting a single application</LI> + <LI>a large domain could describe all the services within a department or company</LI> +</UL> + + +<P>In a large domain there may be all sorts of policies about where components can run and how they connect to each other or to external services. However, during development one is not concerned with all this. The code is packaged and made available for deployment. Tuscany SCA Java supports contributions in the form of JAR or filesystem. </P> + +<P>Below is an example of domain with two contributions.<BR> +<DIV align="center"><IMG src="02-sca-introduction.data/domain.jpg" border="0"></DIV></P> + +<H2><A name="02-SCAIntroduction-SCABinding"></A><A name="02-SCAIntroduction-scabinding"></A>SCA Binding</H2> +<P>A binding is used as a means of communication between services and handles the protocols. It defines with what communication method a service can be accessed with or with what communication method it can will access other services. There can be different types of bindings depending on technologies used to develop a solution. For example JMS binding, Webservices binding, Atom binding for web20 interaction, etc. </P> + +<P>Services can be configured with different bindings and there can be multiple bindings for a service. Bindings for the services and references get defined declaratively in the .composite file. There is a default binding called binding.sca which when used leaves the choice of binding to the underlying infrastructure by default.</P> + +<P>The declarative bindings and the abstraction of protocols from business logic brings agility to SCA applications. This allows SCA applications to be purely focused on business logic and not be contaminated with protocol handling information. It also enables the SCA compositions to grow or change without code modification while also working with applications that are not enabled with SCA.</P> + + +<H2><A name="02-SCAIntroduction-SCAPolicy"></A><A name="02-SCAIntroduction-scapolciy"></A>SCA Policy</H2> +<P>An enterprise application requires control beyond the business functional capability which can include how security is handled in the enterprise or what transactional capability should be applied to services that are offered. SCA policies define the constraints or capabilities that get applied to services and their interaction. Two types of policies are defined in SCA.</P> +<UL> + <LI>Interaction Policies - Define the policies that influence interaction of services for example whether authentication is required or not.</LI> + <LI>Implementation Policies - Define how the components behave at runtime for example whether it is transactional or not.</LI> +</UL> + + +<P>SCA mechanisms for defining policies such as intents and policySets can only be used in the context of a single domain. The fact that policies can be defined declaratively make applications adaptive to the environment that they get deployed into or to changes in the business requirements. <BR> +For more information about policy check out the <SPAN class="nobr"><A href="http://www.osoa.org/download/attachments/35/SCA_Policy_Framework_V100.pdf" title="Visit page outside Confluence" rel="nofollow">sca policy framework specification<SUP><IMG class="rendericon" src="http://cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN>version=1]</P> + + </DIV> + + + </DIV> + </DIV> + <DIV class="footer"> + Generated by + <A href="http://www.atlassian.com/confluence/">Atlassian Confluence</A> (Version: 2.2.9 Build: 527 Sep 07, 2006) + <A href="http://could.it/autoexport/">AutoExport Plugin</A> (Version: Unknown - PluginManager Error) + </DIV> + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/03-development-guides.data/guide_icon.jpeg b/site/trunk/site-publish/documentation-2x/03-development-guides.data/guide_icon.jpeg Binary files differnew file mode 100644 index 0000000000..a0b9c3c248 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/03-development-guides.data/guide_icon.jpeg diff --git a/site/trunk/site-publish/documentation-2x/03-development-guides.data/guide_icon.jpeg.jpeg b/site/trunk/site-publish/documentation-2x/03-development-guides.data/guide_icon.jpeg.jpeg Binary files differnew file mode 100644 index 0000000000..899edcb286 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/03-development-guides.data/guide_icon.jpeg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/03-development-guides.html b/site/trunk/site-publish/documentation-2x/03-development-guides.html new file mode 100644 index 0000000000..fde070d137 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/03-development-guides.html @@ -0,0 +1,221 @@ + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <LINK type="text/css" rel="stylesheet" href="resources/space.css"> + <STYLE type="text/css"> + .footer { + background-image: url('http://cwiki.apache.org/confluence/images/border/border_bottom.gif'); + background-repeat: repeat-x; + background-position: left top; + padding-top: 4px; + color: #666; + } + </STYLE> + <SCRIPT type="text/javascript" language="javascript"> + var hide = null; + var show = null; + var children = null; + + function init() { + /* Search form initialization */ + var form = document.forms['search']; + if (form != null) { + form.elements['domains'].value = location.hostname; + form.elements['sitesearch'].value = location.hostname; + } + + /* Children initialization */ + hide = document.getElementById('hide'); + show = document.getElementById('show'); + children = document.all != null ? + document.all['children'] : + document.getElementById('children'); + if (children != null) { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + } + + function showChildren() { + children.style.display = 'block'; + show.style.display = 'none'; + hide.style.display = 'inline'; + } + + function hideChildren() { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + </SCRIPT> + <TITLE>03-Development Guides</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + <BODY onload="init()"> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap=""> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="03-Development Guides">03-Development Guides</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="/wiki/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">03-Development Guides</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=109130"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=109130">Edit Page</A> + + <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109130"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109130">Add Page</A> + + <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109130"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109130">Add News</A> + </DIV> + </DIV> + <DIV class="pagesubheading" style="margin: 0px 10px 0px 10px;"> + Added by <A href="http://cwiki.apache.org/confluence/users/viewuserprofile.action?username=lresende@apache.org">Luciano Resende</A>, last edited by <A href="http://cwiki.apache.org/confluence/users/viewuserprofile.action?username=lresende@apache.org">Luciano Resende</A> on Feb 03, 2009 + (<A href="http://cwiki.apache.org/confluence/pages/diffpages.action?pageId=109130&originalId=109151">view change</A>) + + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <STYLE type="text/css"> + table.lozenge { + border: none; + border-collapse: collapse; + height: 75px; + } + table.lozenge td.icon { + width: 91px; + height: 75px; + text-align: center; + vertical-align: middle; + } + table.lozenge td.top { + height: 8px; + width: 8px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_top.gif"); + } + table.lozenge td.topRight, table.lozenge img.border { + height: 8px; + width: 8px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_tright.gif"); + } + table.lozenge td.body, table.lozenge td.breaker { + height: 59px; + vertical-align: top; + background-color: #F3F3E9; + } + table.lozenge td.breaker { + width: 8px; + } + table.lozenge td.right { + width: 8px; + height: 59px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_right.gif"); + } + table.lozenge td.bottom { + height: 8px; + width: 8px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_bot.gif"); + } + table.lozenge td.bottomRight { + height: 8px; + width: 8px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_bright.gif"); + } +</STYLE><TABLE style="width:100%;cursor: pointer" cellspacing="0" cellpadding="0" class="lozenge" onclick="document.location.href="/confluence/display/TUSCANYxDOCx2x/SCA+Java+Development+Guide";" onkeypress="document.location.href="/confluence/display/TUSCANYxDOCx2x/SCA+Java+Development+Guide";"> + <TR> + <TD style="background-image: url('/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_red_blue.gif')" class="icon" rowspan="3"> + <B><A onclick="return false;" href="sca-java-development-guide.html" title="View Development Guide"><IMG src="03-development-guides.data/guide_icon.jpeg" align="absmiddle" border="0"></A></B> + </TD> + <TD class="top" colspan="2"></TD> + <TD class="topRight"></TD> + </TR> + <TR> + <TD class="breaker"> </TD> + <TD style="width:auto" class="body" height="59" align="left" valign="top" bgcolor="#F3F3E9"> + <B><A onclick="return false;" href="sca-java-development-guide.html" title="View Development Guide">Development Guide</A></B> <BR> +If you would like to contribute to the project, this guide explains how to build Java SCA and how to contribute code back to the project. + </TD> + <TD class="right"> </TD> + </TR> + <TR> + <TD class="bottom" colspan="2"></TD> + <TD class="bottomRight"></TD> + </TR> +</TABLE> + +<TABLE style="width:100%;cursor: pointer" cellspacing="0" cellpadding="0" class="lozenge" onclick="document.location.href="/confluence/display/TUSCANYxDOCx2x/OSGi+Aware+Programming+in+Tuscany";" onkeypress="document.location.href="/confluence/display/TUSCANYxDOCx2x/OSGi+Aware+Programming+in+Tuscany";"> + <TR> + <TD style="background-image: url('/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_red_blue.gif')" class="icon" rowspan="3"> + <B><A onclick="return false;" href="osgi-aware-programming-in-tuscany.html" title="View OSGi Aware Programming in Tuscany"><IMG src="03-development-guides.data/guide_icon.jpeg" align="absmiddle" border="0"></A></B> + </TD> + <TD class="top" colspan="2"></TD> + <TD class="topRight"></TD> + </TR> + <TR> + <TD class="breaker"> </TD> + <TD style="width:auto" class="body" height="59" align="left" valign="top" bgcolor="#F3F3E9"> + <B><A onclick="return false;" href="osgi-aware-programming-in-tuscany.html" title="View OSGi Aware Programming in Tuscany">OSGi Aware Programming in Tuscany</A></B> <BR> +This guide shows the Tuscany developer how to write code and extension code that would comply to some of the OSGi modularity concepts + </TD> + <TD class="right"> </TD> + </TR> + <TR> + <TD class="bottom" colspan="2"></TD> + <TD class="bottomRight"></TD> + </TR> +</TABLE> + </DIV> + + <DIV class="tabletitle"> + Children + <SPAN class="smalltext" id="show" style="display: inline;"> + <A href="javascript:showChildren()">Show Children</A></SPAN> + <SPAN class="smalltext" id="hide" style="display: none;"> + <A href="javascript:hideChildren()">Hide Children</A></SPAN> + </DIV> + <DIV class="greybox" id="children" style="display: none;"> + <A href="sca-java-development-guide.html" title="SCA Java Development Guide">SCA Java Development Guide</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="osgi-aware-programming-in-tuscany.html" title="OSGi Aware Programming in Tuscany">OSGi Aware Programming in Tuscany</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + </DIV> + + </DIV> + </DIV> + <DIV class="footer"> + Generated by + <A href="http://www.atlassian.com/confluence/">Atlassian Confluence</A> (Version: 2.2.9 Build: 527 Sep 07, 2006) + <A href="http://could.it/autoexport/">AutoExport Plugin</A> (Version: Unknown - PluginManager Error) + </DIV> + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/calc.jpg b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/calc.jpg Binary files differnew file mode 100644 index 0000000000..4c1ea05f6d --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/calc.jpg diff --git a/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/calc.jpg.jpeg b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/calc.jpg.jpeg Binary files differnew file mode 100644 index 0000000000..b0e371f303 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/calc.jpg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/component.png b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/component.png Binary files differnew file mode 100644 index 0000000000..72b9d1b4d2 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/component.png diff --git a/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/component.png.jpeg b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/component.png.jpeg Binary files differnew file mode 100644 index 0000000000..6ab7db30aa --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/component.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/domain.jpg b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/domain.jpg Binary files differnew file mode 100644 index 0000000000..587094badc --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/domain.jpg diff --git a/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/domain.jpg.jpeg b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/domain.jpg.jpeg Binary files differnew file mode 100644 index 0000000000..829bd77110 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/03-sca-introduction.data/domain.jpg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/03-sca-introduction.html b/site/trunk/site-publish/documentation-2x/03-sca-introduction.html new file mode 100644 index 0000000000..5067bc52fc --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/03-sca-introduction.html @@ -0,0 +1,222 @@ + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <LINK type="text/css" rel="stylesheet" href="resources/space.css"> + <STYLE type="text/css"> + .footer { + background-image: url('http://cwiki.apache.org/confluence/images/border/border_bottom.gif'); + background-repeat: repeat-x; + background-position: left top; + padding-top: 4px; + color: #666; + } + </STYLE> + <SCRIPT type="text/javascript" language="javascript"> + var hide = null; + var show = null; + var children = null; + + function init() { + /* Search form initialization */ + var form = document.forms['search']; + if (form != null) { + form.elements['domains'].value = location.hostname; + form.elements['sitesearch'].value = location.hostname; + } + + /* Children initialization */ + hide = document.getElementById('hide'); + show = document.getElementById('show'); + children = document.all != null ? + document.all['children'] : + document.getElementById('children'); + if (children != null) { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + } + + function showChildren() { + children.style.display = 'block'; + show.style.display = 'none'; + hide.style.display = 'inline'; + } + + function hideChildren() { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + </SCRIPT> + <TITLE>03-SCA Introduction</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + <BODY onload="init()"> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="03-SCA Introduction">03-SCA Introduction</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="/wiki/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">03-SCA Introduction</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=109106"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=109106">Edit Page</A> + + <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109106"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109106">Add Page</A> + + <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109106"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109106">Add News</A> + </DIV> + </DIV> + <DIV class="pagesubheading" style="margin: 0px 10px 0px 10px;"> + Added by <A href="http://cwiki.apache.org/confluence/users/viewuserprofile.action?username=lresende@apache.org">Luciano Resende</A>, last edited by <A href="http://cwiki.apache.org/confluence/users/viewuserprofile.action?username=lresende@apache.org">Luciano Resende</A> on Feb 03, 2009 + (<A class="noprint" href="http://cwiki.apache.org/confluence/pages/diffpages.action?pageId=109106&originalId=109153">view change</A>) + + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <UL> + <LI><A href="#03-SCAIntroduction-whatisSCA">What is SCA?</A></LI> + <LI><A href="#03-SCAIntroduction-scacomponent">SCA Component</A></LI> + <LI><A href="#03-SCAIntroduction-scawire">SCA Wire</A></LI> + <LI><A href="#03-SCAIntroduction-scacomposite">SCA Composite</A></LI> + <LI><A href="#03-SCAIntroduction-scacontribution">SCA Contribution</A></LI> + <LI><A href="#03-SCAIntroduction-scadomain">SCA Domain</A></LI> + <LI><A href="#03-SCAIntroduction-scabinding">SCA Binding</A></LI> + <LI><A href="#03-SCAIntroduction-scapolicy">SCA Policy</A></LI> +</UL> + + +<H2><A name="03-SCAIntroduction-WhatisSCA%3F"></A><A name="03-SCAIntroduction-whatisSCA"></A>What is SCA?</H2> +<P>SCA is a standard programming model for abstracting business functions as components and using them as building blocks to assemble business solutions. An SCA component offers services and depends on functions that are called references. It also has an implementation associated it with it which is the business logic that can be implemented in any technology. </P> + +<P>SCA provides a declarative way to describe how the services in an assembly interact with one another and what quality of services (security, transaction, etc) is applied to the interaction. Since service interaction and quality of service is declarative, solution developers remain focus on business logic and therefore development cycle is simplified and shortened. This also promotes the development of reusable services that can be used in different contexts. For example, a shopping cart service can be used in a retail application or a travel application without changing. Services can interact with one another synchronously or asynchronously and can be implemented in any technology.</P> + +<P>SCA also brings flexibility to deployment. A solution assembled with SCA is deployed as a unit and can be distributed over one or more nodes in the network and can be reconfigured without programming changes. </P> + +<P>Applications that adopt SCA programming model can interact with non-SCA applications. Meaning non-SCA application can call into SCA enabled applications and SCA enabled applications can call out into non-SCA enabled applications.</P> + +<P>Now let's talk about SCA building blocks and concepts.</P> + +<H2><A name="03-SCAIntroduction-SCAComponent"></A><A name="03-SCAIntroduction-scacomponent"></A>SCA Component</H2> + +<P>The basic building block for SCA is a component. It is the abstraction of a given business function. A component is described with the following attributes:</P> + +<UL> + <LI><B>Service:</B> Describes the functions that this type of component provides. A component can offer one ore more services. A service is an interface.</LI> + <LI><B>Reference:</B> This describes the dependencies this type of component has in order to function. A reference is an interface.</LI> + <LI><B>Property:</B> This defines configuration parameters that can controls how the business function can behave. For example, what currency to use for an account component.</LI> + <LI><B>Intent policies:</B> This describes assumptions on how the component will behave. There are two types of policies. + <UL> + <LI>Implementation policy- Impact the behavior of an implementation. For example, transaction, monitor and logging</LI> + <LI>Interaction policy - defines how the components behave with one another. For example, security.</LI> + </UL> + </LI> + <LI><B>Implementation:</B> Every component has some implementation associated with it. This can be a new business logic or an existing one that is now being used in the assembly. A business logic can handle different operations and some of which are exposed externally as callable services. Component implementation can be in any technology, for example for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type.</LI> +</UL> + + +<P>This is demonstrated below.<BR> +<DIV align="center"><IMG src="03-sca-introduction.data/component.png" border="0"></DIV></P> + +<P>The implementation of a component can be in any language that is suitable for the user, for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type. </P> + +<H2><A name="03-SCAIntroduction-SCAWire"></A><A name="03-SCAIntroduction-scawire"></A>SCA Wire</H2> + +<P>As mentioned above, an SCA component may have zero or more references. Refrences in SCA define how SCA components invoke services. The relationship between a reference and a service is typically demonstrated through a line in a SCA diagrams and is referred to as a wire. </P> + +<P>The term wire can at the begining seem confusing because you may ask how a wire is realized. There is no physical definition for a wire, it is really derived from the relationship between a Service and its refrence(s) at runtime. This is realized through dependency injection in Tuscany. </P> + + +<H2><A name="03-SCAIntroduction-SCAComposite"></A><A name="03-SCAIntroduction-scacomposite"></A>SCA Composite</H2> + +<P>An SCA composite consists of components, services, references, and wires that connect them. A composite is the unit of deployment for SCA.<BR> +A composite can be viewed as a component whose implementation is not code but an aggregation of one or more components co-operating to provide higher level services. Think of composite as a solution, for example a credit check composite may consist of multiple components that together perform the credit checking work. A composite can also be used within a larger solution, for example credit check can be part of a order processing composite. A composite has the same charactersitics as a component. It provides Services, has References to other dependencies, and can be configured using Properties and can have intent policies in just the same way as an individual components can. In thise case, attributes of some of the components that are embedded in the composite get 'promoted' and becom the attribute of the composite. In the example below, you see a calculator composite which consists of 5 components, a calculator service has references to four components:Add, Subtract, Multiply and Divide.</P> + +<P><DIV align="center"><IMG src="03-sca-introduction.data/calc.jpg" border="0"></DIV><BR> +<IMG class="emoticon" src="http://cwiki.apache.org/confluence/images/icons/emoticons/lightbulb_on.gif" height="16" width="16" align="absmiddle" alt="" border="0"> The assembly or wiring is defined in .composite file through Service Component Definition Language (SCDL) that is in XML. For example, calculator.composite would define that calculator component references the other four components.</P> + +<H2><A name="03-SCAIntroduction-SCAContribution"></A><A name="03-SCAIntroduction-scacontribution"></A>SCA Contribution</H2> + +<P>The artifacts that make up a solution get packaged into what is called a contribution. A contribution can take a number of different forms. For example, it could be a jar file, or it could be a directory tree on the file system. A contribution can contain composites, java classes, BPEL processes, XSD files, wsdl files, etc. An SCA application can be divided into multiple contributions with dependencies between them. In general, some services depend closely on other services and it makes sense to package them together. If services are more independent it is best to package them separately so that they can be reused in different contexts. A contribution is a deployable unit. A solution may require multiple contributions that share artifacts and artifacts can be shared between (imported) between contributions.</P> + +<H2><A name="03-SCAIntroduction-SCADomain"></A><A name="03-SCAIntroduction-scadomain"></A>SCA Domain</H2> + +<P>Contribution packages get contributed to what is called SCA domain which is the scope of adminstration at runtime. An SCA Domain represents a complete runtime configuration, potentially distributed over a series of interconnected runtime nodes and is a logical view of the running applications or a coherent grouping of components that are working together. An SCA Domain typically represents an area of business functionality controlled by a single organization. For example, an SCA Domain may be the whole of a business, or it may be a department within a business.</P> + +<P>Therefore, an SCA domain consists of the definitions of composites, components, their implementations, <B>and the nodes</B> on which they run. Components deployed into a domain can directly wire to other components within the same domain. Communication with services outside of a domain is done through bindings. </P> + + +<P>SCA Domains can vary in size from the very small to the very large:</P> +<UL> + <LI>a very small domain could be one within a test environment inside an IDE</LI> + <LI>a medium sized domain could be a single server or small cluster supporting a single application</LI> + <LI>a large domain could describe all the services within a department or company</LI> +</UL> + + +<P>In a large domain there may be all sorts of policies about where components can run and how they connect to each other or to external services. However, during development one is not concerned with all this. The code is packaged and made available for deployment. Tuscany SCA Java supports contributions in the form of JAR or filesystem. </P> + +<P>Below is an example of domain with two contributions.<BR> +<DIV align="center"><IMG src="03-sca-introduction.data/domain.jpg" border="0"></DIV></P> + +<H2><A name="03-SCAIntroduction-SCABinding"></A><A name="03-SCAIntroduction-scabinding"></A>SCA Binding</H2> +<P>A binding is used as a means of communication between services and handles the protocols. It defines with what communication method a service can be accessed with or with what communication method it can will access other services. There can be different types of bindings depending on technologies used to develop a solution. For example JMS binding, Webservices binding, Atom binding for web20 interaction, etc. </P> + +<P>Services can be configured with different bindings and there can be multiple bindings for a service. Bindings for the services and references get defined declaratively in the .composite file. There is a default binding called binding.sca which when used leaves the choice of binding to the underlying infrastructure by default.</P> + +<P>The declarative bindings and the abstraction of protocols from business logic brings agility to SCA applications. This allows SCA applications to be purely focused on business logic and not be contaminated with protocol handling information. It also enables the SCA compositions to grow or change without code modification while also working with applications that are not enabled with SCA.</P> + + +<H2><A name="03-SCAIntroduction-SCAPolicy"></A><A name="03-SCAIntroduction-scapolciy"></A>SCA Policy</H2> +<P>An enterprise application requires control beyond the business functional capability which can include how security is handled in the enterprise or what transactional capability should be applied to services that are offered. SCA policies define the constraints or capabilities that get applied to services and their interaction. Two types of policies are defined in SCA.</P> +<UL> + <LI>Interaction Policies - Define the policies that influence interaction of services for example whether authentication is required or not.</LI> + <LI>Implementation Policies - Define how the components behave at runtime for example whether it is transactional or not.</LI> +</UL> + + +<P>SCA mechanisms for defining policies such as intents and policySets can only be used in the context of a single domain. The fact that policies can be defined declaratively make applications adaptive to the environment that they get deployed into or to changes in the business requirements. <BR> +For more information about policy check out the <A href="http://www.osoa.org/download/attachments/35/SCA_Policy_Framework_V100.pdf" rel="nofollow">sca policy framework specification</A>version=1]</P> + + </DIV> + + + </DIV> + </DIV> + <DIV class="footer"> + Generated by + <A href="http://www.atlassian.com/confluence/">Atlassian Confluence</A> (Version: 2.10.3 Build: 1519 Apr 15, 2009) + <A href="http://could.it/autoexport/">Auto Export Plugin</A> (Version: 1.0.0.beta1) + </DIV> + </BODY> +</HTML> diff --git a/site/trunk/site-publish/documentation-2x/03development-guides.data/guide_icon.jpeg b/site/trunk/site-publish/documentation-2x/03development-guides.data/guide_icon.jpeg Binary files differnew file mode 100644 index 0000000000..a0b9c3c248 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/03development-guides.data/guide_icon.jpeg diff --git a/site/trunk/site-publish/documentation-2x/03development-guides.data/guide_icon.jpeg.jpeg b/site/trunk/site-publish/documentation-2x/03development-guides.data/guide_icon.jpeg.jpeg Binary files differnew file mode 100644 index 0000000000..899edcb286 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/03development-guides.data/guide_icon.jpeg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/03development-guides.html b/site/trunk/site-publish/documentation-2x/03development-guides.html new file mode 100644 index 0000000000..a7bd32b146 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/03development-guides.html @@ -0,0 +1,221 @@ + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <LINK type="text/css" rel="stylesheet" href="resources/space.css"> + <STYLE type="text/css"> + .footer { + background-image: url('http://cwiki.apache.org/confluence/images/border/border_bottom.gif'); + background-repeat: repeat-x; + background-position: left top; + padding-top: 4px; + color: #666; + } + </STYLE> + <SCRIPT type="text/javascript" language="javascript"> + var hide = null; + var show = null; + var children = null; + + function init() { + /* Search form initialization */ + var form = document.forms['search']; + if (form != null) { + form.elements['domains'].value = location.hostname; + form.elements['sitesearch'].value = location.hostname; + } + + /* Children initialization */ + hide = document.getElementById('hide'); + show = document.getElementById('show'); + children = document.all != null ? + document.all['children'] : + document.getElementById('children'); + if (children != null) { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + } + + function showChildren() { + children.style.display = 'block'; + show.style.display = 'none'; + hide.style.display = 'inline'; + } + + function hideChildren() { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + </SCRIPT> + <TITLE>03.Development Guides</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + <BODY onload="init()"> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap=""> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="03.Development Guides">03.Development Guides</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="/wiki/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">03.Development Guides</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=109130"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=109130">Edit Page</A> + + <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109130"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109130">Add Page</A> + + <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109130"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109130">Add News</A> + </DIV> + </DIV> + <DIV class="pagesubheading" style="margin: 0px 10px 0px 10px;"> + Added by <A href="http://cwiki.apache.org/confluence/users/viewuserprofile.action?username=lresende@apache.org">Luciano Resende</A>, last edited by <A href="http://cwiki.apache.org/confluence/users/viewuserprofile.action?username=lresende@apache.org">Luciano Resende</A> on Feb 03, 2009 + (<A href="http://cwiki.apache.org/confluence/pages/diffpages.action?pageId=109130&originalId=109144">view change</A>) + + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <STYLE type="text/css"> + table.lozenge { + border: none; + border-collapse: collapse; + height: 75px; + } + table.lozenge td.icon { + width: 91px; + height: 75px; + text-align: center; + vertical-align: middle; + } + table.lozenge td.top { + height: 8px; + width: 8px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_top.gif"); + } + table.lozenge td.topRight, table.lozenge img.border { + height: 8px; + width: 8px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_tright.gif"); + } + table.lozenge td.body, table.lozenge td.breaker { + height: 59px; + vertical-align: top; + background-color: #F3F3E9; + } + table.lozenge td.breaker { + width: 8px; + } + table.lozenge td.right { + width: 8px; + height: 59px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_right.gif"); + } + table.lozenge td.bottom { + height: 8px; + width: 8px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_bot.gif"); + } + table.lozenge td.bottomRight { + height: 8px; + width: 8px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_bright.gif"); + } +</STYLE><TABLE style="width:100%;cursor: pointer" cellspacing="0" cellpadding="0" class="lozenge" onclick="document.location.href="/confluence/display/TUSCANYxDOCx2x/SCA+Java+Development+Guide";" onkeypress="document.location.href="/confluence/display/TUSCANYxDOCx2x/SCA+Java+Development+Guide";"> + <TR> + <TD style="background-image: url('/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_blue_blue.gif')" class="icon" rowspan="3"> + <B><A onclick="return false;" href="sca-java-development-guide.html" title="View Development Guide"><IMG src="03development-guides.data/guide_icon.jpeg" align="absmiddle" border="0"></A></B> + </TD> + <TD class="top" colspan="2"></TD> + <TD class="topRight"></TD> + </TR> + <TR> + <TD class="breaker"> </TD> + <TD style="width:auto" class="body" height="59" align="left" valign="top" bgcolor="#F3F3E9"> + <B><A onclick="return false;" href="sca-java-development-guide.html" title="View Development Guide">Development Guide</A></B> <BR> +If you would like to contribute to the project, this guide explains how to build Java SCA and how to contribute code back to the project. + </TD> + <TD class="right"> </TD> + </TR> + <TR> + <TD class="bottom" colspan="2"></TD> + <TD class="bottomRight"></TD> + </TR> +</TABLE> + +<TABLE style="width:100%;cursor: pointer" cellspacing="0" cellpadding="0" class="lozenge" onclick="document.location.href="/confluence/display/TUSCANYxDOCx2x/OSGi+Aware+Programming+in+Tuscany";" onkeypress="document.location.href="/confluence/display/TUSCANYxDOCx2x/OSGi+Aware+Programming+in+Tuscany";"> + <TR> + <TD style="background-image: url('/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_blue_blue.gif')" class="icon" rowspan="3"> + <B><A onclick="return false;" href="osgi-aware-programming-in-tuscany.html" title="View OSGi Aware Programming in Tuscany"><IMG src="03development-guides.data/guide_icon.jpeg" align="absmiddle" border="0"></A></B> + </TD> + <TD class="top" colspan="2"></TD> + <TD class="topRight"></TD> + </TR> + <TR> + <TD class="breaker"> </TD> + <TD style="width:auto" class="body" height="59" align="left" valign="top" bgcolor="#F3F3E9"> + <B><A onclick="return false;" href="osgi-aware-programming-in-tuscany.html" title="View OSGi Aware Programming in Tuscany">OSGi Aware Programming in Tuscany</A></B> <BR> +This guide shows the Tuscany developer how to write code and extension code that would comply to some of the OSGi modularity concepts + </TD> + <TD class="right"> </TD> + </TR> + <TR> + <TD class="bottom" colspan="2"></TD> + <TD class="bottomRight"></TD> + </TR> +</TABLE> + </DIV> + + <DIV class="tabletitle"> + Children + <SPAN class="smalltext" id="show" style="display: inline;"> + <A href="javascript:showChildren()">Show Children</A></SPAN> + <SPAN class="smalltext" id="hide" style="display: none;"> + <A href="javascript:hideChildren()">Hide Children</A></SPAN> + </DIV> + <DIV class="greybox" id="children" style="display: none;"> + <A href="sca-java-development-guide.html" title="SCA Java Development Guide">SCA Java Development Guide</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="osgi-aware-programming-in-tuscany.html" title="OSGi Aware Programming in Tuscany">OSGi Aware Programming in Tuscany</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + </DIV> + + </DIV> + </DIV> + <DIV class="footer"> + Generated by + <A href="http://www.atlassian.com/confluence/">Atlassian Confluence</A> (Version: 2.2.9 Build: 527 Sep 07, 2006) + <A href="http://could.it/autoexport/">AutoExport Plugin</A> (Version: Unknown - PluginManager Error) + </DIV> + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/04-development-guides.data/guide_icon.jpeg b/site/trunk/site-publish/documentation-2x/04-development-guides.data/guide_icon.jpeg Binary files differnew file mode 100644 index 0000000000..a0b9c3c248 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/04-development-guides.data/guide_icon.jpeg diff --git a/site/trunk/site-publish/documentation-2x/04-development-guides.data/guide_icon.jpeg.jpeg b/site/trunk/site-publish/documentation-2x/04-development-guides.data/guide_icon.jpeg.jpeg Binary files differnew file mode 100644 index 0000000000..899edcb286 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/04-development-guides.data/guide_icon.jpeg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/04-development-guides.html b/site/trunk/site-publish/documentation-2x/04-development-guides.html new file mode 100644 index 0000000000..7e53a8c0c5 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/04-development-guides.html @@ -0,0 +1,223 @@ + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <LINK type="text/css" rel="stylesheet" href="resources/space.css"> + <STYLE type="text/css"> + .footer { + background-image: url('http://cwiki.apache.org/confluence/images/border/border_bottom.gif'); + background-repeat: repeat-x; + background-position: left top; + padding-top: 4px; + color: #666; + } + </STYLE> + <SCRIPT type="text/javascript" language="javascript"> + var hide = null; + var show = null; + var children = null; + + function init() { + /* Search form initialization */ + var form = document.forms['search']; + if (form != null) { + form.elements['domains'].value = location.hostname; + form.elements['sitesearch'].value = location.hostname; + } + + /* Children initialization */ + hide = document.getElementById('hide'); + show = document.getElementById('show'); + children = document.all != null ? + document.all['children'] : + document.getElementById('children'); + if (children != null) { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + } + + function showChildren() { + children.style.display = 'block'; + show.style.display = 'none'; + hide.style.display = 'inline'; + } + + function hideChildren() { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + </SCRIPT> + <TITLE>04-Development Guides</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + <BODY onload="init()"> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="04-Development Guides">04-Development Guides</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="/wiki/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">04-Development Guides</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=109130"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=109130">Edit Page</A> + + <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109130"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109130">Add Page</A> + + <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109130"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109130">Add News</A> + </DIV> + </DIV> + <DIV class="pagesubheading" style="margin: 0px 10px 0px 10px;"> + Added by <A href="http://cwiki.apache.org/confluence/users/viewuserprofile.action?username=lresende@apache.org">Luciano Resende</A>, last edited by <A href="http://cwiki.apache.org/confluence/users/viewuserprofile.action?username=lresende@apache.org">Luciano Resende</A> on Feb 03, 2009 + (<A class="noprint" href="http://cwiki.apache.org/confluence/pages/diffpages.action?pageId=109130&originalId=109154">view change</A>) + + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <STYLE type="text/css"> + table.lozenge { + border: none; + border-collapse: collapse; + height: 75px; + } + table.lozenge td.icon { + width: 91px; + height: 75px; + text-align: center; + vertical-align: middle; + } + table.lozenge td.top { + height: 8px; + width: 8px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_top.gif"); + } + table.lozenge td.topRight, table.lozenge img.border { + height: 8px; + width: 8px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_tright.gif"); + } + table.lozenge td.body, table.lozenge td.breaker { + height: 59px; + vertical-align: top; + background-color: #F3F3E9; + } + table.lozenge td.breaker { + width: 8px; + } + table.lozenge td.right { + width: 8px; + height: 59px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_right.gif"); + } + table.lozenge td.bottom { + height: 8px; + width: 8px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_bot.gif"); + } + table.lozenge td.bottomRight { + height: 8px; + width: 8px; + background-image: url("/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_bright.gif"); + } +</STYLE> +<TABLE style="width:100%;cursor: pointer" cellspacing="0" cellpadding="0" class="lozenge" onclick="document.location.href="/confluence/display/TUSCANYxDOCx2x/SCA+Java+Development+Guide";" onkeypress="document.location.href="/confluence/display/TUSCANYxDOCx2x/SCA+Java+Development+Guide";"> + <TR> + <TD style="background-image: url('/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_red_blue.gif')" class="icon" rowspan="3"><B><A onclick="return false;" href="sca-java-development-guide.html" title="View Development Guide"><IMG src="04-development-guides.data/guide_icon.jpeg" align="absmiddle" border="0"></A></B></TD> + <TD class="top" colspan="2"></TD> + <TD class="topRight"></TD> + </TR> + <TR> + <TD class="breaker"> </TD> + <TD style="width:auto" class="body" height="59" align="left" valign="top" bgcolor="#F3F3E9"> + <B><A onclick="return false;" href="sca-java-development-guide.html" title="View Development Guide">Development Guide</A></B> <BR> +If you would like to contribute to the project, this guide explains how to build Java SCA and how to contribute code back to the project. + </TD> + <TD class="right"> </TD> + </TR> + <TR> + <TD class="bottom" colspan="2"></TD> + <TD class="bottomRight"></TD> + </TR> +</TABLE> + + +<TABLE style="width:100%;cursor: pointer" cellspacing="0" cellpadding="0" class="lozenge" onclick="document.location.href="/confluence/display/TUSCANYxDOCx2x/OSGi+Aware+Programming+in+Tuscany";" onkeypress="document.location.href="/confluence/display/TUSCANYxDOCx2x/OSGi+Aware+Programming+in+Tuscany";"> + <TR> + <TD style="background-image: url('/confluence/download/resources/com.adaptavist.confluence.contentFormattingMacros:lozenge/gfx/lozenge/loz_red_blue.gif')" class="icon" rowspan="3"><B><A onclick="return false;" href="osgi-aware-programming-in-tuscany.html" title="View OSGi Aware Programming in Tuscany"><IMG src="04-development-guides.data/guide_icon.jpeg" align="absmiddle" border="0"></A></B></TD> + <TD class="top" colspan="2"></TD> + <TD class="topRight"></TD> + </TR> + <TR> + <TD class="breaker"> </TD> + <TD style="width:auto" class="body" height="59" align="left" valign="top" bgcolor="#F3F3E9"> + <B><A onclick="return false;" href="osgi-aware-programming-in-tuscany.html" title="View OSGi Aware Programming in Tuscany">OSGi Aware Programming in Tuscany</A></B> <BR> +This guide shows the Tuscany developer how to write code and extension code that would comply to some of the OSGi modularity concepts + </TD> + <TD class="right"> </TD> + </TR> + <TR> + <TD class="bottom" colspan="2"></TD> + <TD class="bottomRight"></TD> + </TR> +</TABLE> + + </DIV> + + <DIV class="tabletitle"> + Children + <SPAN class="smalltext" id="show" style="display: inline;"> + <A href="javascript:showChildren()">Show Children</A></SPAN> + <SPAN class="smalltext" id="hide" style="display: none;"> + <A href="javascript:hideChildren()">Hide Children</A></SPAN> + </DIV> + <DIV class="greybox" id="children" style="display: none;"> + <A href="sca-java-development-guide.html" title="SCA Java Development Guide">SCA Java Development Guide</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="osgi-aware-programming-in-tuscany.html" title="OSGi Aware Programming in Tuscany">OSGi Aware Programming in Tuscany</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="osgi-enablement-for-tuscany-runtime.html" title="OSGi Enablement for Tuscany Runtime">OSGi Enablement for Tuscany Runtime</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + </DIV> + + </DIV> + </DIV> + <DIV class="footer"> + Generated by + <A href="http://www.atlassian.com/confluence/">Atlassian Confluence</A> (Version: 2.10.3 Build: 1519 Apr 15, 2009) + <A href="http://could.it/autoexport/">Auto Export Plugin</A> (Version: 1.0.0.beta1) + </DIV> + </BODY> +</HTML> diff --git a/site/trunk/site-publish/documentation-2x/20-beta-samples-documentation.html b/site/trunk/site-publish/documentation-2x/20-beta-samples-documentation.html new file mode 100644 index 0000000000..112b2faee3 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/20-beta-samples-documentation.html @@ -0,0 +1,1740 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>2.0-beta-Samples documentation : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="getting-started.html" title="Getting Started">Getting Started</A> > <A href="samples.html" title="Samples">Samples</A> > <A href="" title="2.0-beta-Samples documentation">2.0-beta-Samples documentation</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="getting-started.html" title="Getting Started">Getting Started</A> > <A href="samples.html" title="Samples">Samples</A> > <A href="" title="2.0-beta-Samples documentation">2.0-beta-Samples documentation</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">2.0-beta-Samples documentation</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=23338770"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=23338770">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=23338770"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=23338770">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=23338770"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=23338770">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + + +<H1><A name="2.0-beta-Samplesdocumentation-"></A><FONT color="#003366"><B>Tuscany 2.0-Beta1 Samples</B></FONT></H1> + +<P>The Tuscany samples are shipped with Tuscany binary and source releases (see the /samples directory). If you are using Tuscany from a release distribution then make sure you are looking at the documentation that corresponds to the samples as they stood at the time of the release. </P> + +<P>The contents of the <A href="samples.html" title="Samples">Samples</A> page contains links to the various different versions of samples documentation.</P> + +<P>In a distribution, the samples source code is found in the samples directory, directly under the root directory. The following sections are laid out to match the structure of the samples directory and its subdirectories.</P> + +<P>If you're new to Tuscany SCA start with the getting-started. Samples are generally presented in the form on an SCA contribution (look for directories ending in "-contribution") or as a webapp (look for directories ending in "-webapp"). The directories getting-started, learning-more and applications all contain sample SCA contributions of increasing complexity. The running-tuscany directory describes the various different ways you can start the Tuscany runtime and install contributions. The extending-tuscany directory contains some examples of how to build new binding and implementation extensions for using in Tuscany.</P> + +<P>In the following text we use <some_text> to mean you have to replace it with whatever is appropriate in your environment. For example <tuscany_bin_distro> means the directory in which you install the Tuscany binary distribution.</P> + +<P>Instructions are colour coded as follows:</P> + +<DIV class="panel" style="background-color: pink;border-width: 1px;"><DIV class="panelContent" style="background-color: pink;"> +<P>Instructions in pink boxes are for the Ant user</P> +</DIV></DIV> +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>Instructions in silver boxes are for the Maven user</P> +</DIV></DIV> + +<P>Note. As some of these samples create and use local network connections you may need to configure your firewall, if you are running one, to allow the test to run successfully. </P> + +<DIV> +<UL> + <LI><SPAN class="TOCOutline">1</SPAN> <A href="#2.0-beta-Samplesdocumentation-gettingstarted">getting-started</A></LI> +<UL> + <LI><SPAN class="TOCOutline">1.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-helloworldcontribution">helloworld-contribution</A></LI> + <LI><SPAN class="TOCOutline">1.2</SPAN> <A href="#2.0-beta-Samplesdocumentation-helloworldwebapp">helloworld-webapp</A></LI> + <LI><SPAN class="TOCOutline">1.3</SPAN> <A href="#2.0-beta-Samplesdocumentation-callbackapi">callback-api</A></LI> + <LI><SPAN class="TOCOutline">1.4</SPAN> <A href="#2.0-beta-Samplesdocumentation-scascopes">sca-scopes</A></LI> + <LI><SPAN class="TOCOutline">1.5</SPAN> <A href="#2.0-beta-Samplesdocumentation-scaincludecontribution">sca-include-contribution</A></LI> +</UL> + <LI><SPAN class="TOCOutline">2</SPAN> <A href="#2.0-beta-Samplesdocumentation-learningmore">learning-more</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-async">async</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.1.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-calculatorcontribution">calculator-contribution</A></LI> +</UL> + <LI><SPAN class="TOCOutline">2.2</SPAN> <A href="#2.0-beta-Samplesdocumentation-bindingcomet">binding-comet</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.2.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-weatherwebapp">weather-webapp</A></LI> +</UL> + <LI><SPAN class="TOCOutline">2.3</SPAN> <A href="#2.0-beta-Samplesdocumentation-bindingjms">binding-jms</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.3.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-helloworldwebapp">helloworld-webapp</A></LI> +</UL> + <LI><SPAN class="TOCOutline">2.4</SPAN> <A href="#2.0-beta-Samplesdocumentation-bindingjsonrpc">binding-jsonrpc</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.4.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-calculatorcontribution">calculator-contribution</A></LI> + <LI><SPAN class="TOCOutline">2.4.2</SPAN> <A href="#2.0-beta-Samplesdocumentation-calculatorwebapp">calculator-webapp</A></LI> +</UL> + <LI><SPAN class="TOCOutline">2.5</SPAN> <A href="#2.0-beta-Samplesdocumentation-bindingrmi">binding-rmi</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.5.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-calculatorservicecontribution">calculator-service-contribution</A></LI> + <LI><SPAN class="TOCOutline">2.5.2</SPAN> <A href="#2.0-beta-Samplesdocumentation-calculatorreferencecontribution">calculator-reference-contribution</A></LI> +</UL> + <LI><SPAN class="TOCOutline">2.6</SPAN> <A href="#2.0-beta-Samplesdocumentation-bindingsca">binding-sca</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.6.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-calculatorcontribution">calculator-contribution</A></LI> +</UL> + <LI><SPAN class="TOCOutline">2.7</SPAN> <A href="#2.0-beta-Samplesdocumentation-bindingws">binding-ws</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.7.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-calculatorcontribution">calculator-contribution</A></LI> + <LI><SPAN class="TOCOutline">2.7.2</SPAN> <A href="#2.0-beta-Samplesdocumentation-contributionhelloworldwssdo">contribution-helloworld-ws-sdo</A></LI> +</UL> + <LI><SPAN class="TOCOutline">2.8</SPAN> <A href="#2.0-beta-Samplesdocumentation-distributedosgi">distributed-osgi</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.8.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-dosgidynamiccalculatoroperations">dosgi-dynamic-calculator-operations</A></LI> + <LI><SPAN class="TOCOutline">2.8.2</SPAN> <A href="#2.0-beta-Samplesdocumentation-dosgidynamiccalculator">dosgi-dynamic-calculator</A></LI> +</UL> + <LI><SPAN class="TOCOutline">2.9</SPAN> <A href="#2.0-beta-Samplesdocumentation-implementationbpel">implementation-bpel</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.9.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-contributionhelloworldbpel">contribution-helloworld-bpel</A></LI> + <LI><SPAN class="TOCOutline">2.9.2</SPAN> <A href="#2.0-beta-Samplesdocumentation-helloworldbpelwebapp">helloworld-bpel-webapp</A></LI> +</UL> + <LI><SPAN class="TOCOutline">2.10</SPAN> <A href="#2.0-beta-Samplesdocumentation-implementationcomposite">implementation-composite</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.10.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-helloworldrecursive">helloworld-recursive</A></LI> + <LI><SPAN class="TOCOutline">2.10.2</SPAN> <A href="#2.0-beta-Samplesdocumentation-helloworldrecursivews">helloworld-recursive-ws</A></LI> +</UL> + <LI><SPAN class="TOCOutline">2.11</SPAN> <A href="#2.0-beta-Samplesdocumentation-implementationjava">implementation-java</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.11.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-contributioncalculator">contribution-calculator</A></LI> +</UL> + <LI><SPAN class="TOCOutline">2.12</SPAN> <A href="#2.0-beta-Samplesdocumentation-implementation.osgi">implementation.osgi</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.12.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-dosgicalculator">dosgi-calculator</A></LI> + <LI><SPAN class="TOCOutline">2.12.2</SPAN> <A href="#2.0-beta-Samplesdocumentation-dosgicalculatoroperations">dosgi-calculator-operations</A></LI> +</UL> + <LI><SPAN class="TOCOutline">2.13</SPAN> <A href="#2.0-beta-Samplesdocumentation-implementationscript">implementation-script</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.13.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-contributioncalculator">contribution-calculator</A></LI> +</UL> + <LI><SPAN class="TOCOutline">2.14</SPAN> <A href="#2.0-beta-Samplesdocumentation-implementationspring">implementation-spring</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.14.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-contributionhelloworldspring">contribution-helloworld-spring</A></LI> + <LI><SPAN class="TOCOutline">2.14.2</SPAN> <A href="#2.0-beta-Samplesdocumentation-helloworldspringwebapp">helloworld-spring-webapp</A></LI> +</UL> + <LI><SPAN class="TOCOutline">2.15</SPAN> <A href="#2.0-beta-Samplesdocumentation-implementationweb">implementation-web</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.15.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-helloworldjaxrswebapp">helloworld-jaxrs-webapp</A></LI> + <LI><SPAN class="TOCOutline">2.15.2</SPAN> <A href="#2.0-beta-Samplesdocumentation-helloworldjsclientwebapp">helloworld-js-client-webapp</A></LI> + <LI><SPAN class="TOCOutline">2.15.3</SPAN> <A href="#2.0-beta-Samplesdocumentation-helloworldjsfwebapp">helloworld-jsf-webapp</A></LI> + <LI><SPAN class="TOCOutline">2.15.4</SPAN> <A href="#2.0-beta-Samplesdocumentation-helloworldjspwebapp">helloworld-jsp-webapp</A></LI> + <LI><SPAN class="TOCOutline">2.15.5</SPAN> <A href="#2.0-beta-Samplesdocumentation-helloworldservletwebapp">helloworld-servlet-webapp</A></LI> + <LI><SPAN class="TOCOutline">2.15.6</SPAN> <A href="#2.0-beta-Samplesdocumentation-helloworldstripeswebapp">helloworld-stripes-webapp</A></LI> +</UL> + <LI><SPAN class="TOCOutline">2.16</SPAN> <A href="#2.0-beta-Samplesdocumentation-loggingscribe">logging-scribe</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.16.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-GettingtherequiresApacheThriftlibrary">Getting the requires Apache Thrift library</A></LI> + <LI><SPAN class="TOCOutline">2.16.2</SPAN> <A href="#2.0-beta-Samplesdocumentation-StartingaScribeserver">Starting a Scribe server</A></LI> + <LI><SPAN class="TOCOutline">2.16.3</SPAN> <A href="#2.0-beta-Samplesdocumentation-RunningtheLoggingTestsampletestprogram">Running the LoggingTest sample test program</A></LI> + <LI><SPAN class="TOCOutline">2.16.4</SPAN> <A href="#2.0-beta-Samplesdocumentation-CheckingtheScribelogoutput">Checking the Scribe log output</A></LI> +</UL> + <LI><SPAN class="TOCOutline">2.17</SPAN> <A href="#2.0-beta-Samplesdocumentation-mavenosgijunit">maven-osgi-junit</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.17.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-calculatorosgi">calculator-osgi</A></LI> + <LI><SPAN class="TOCOutline">2.17.2</SPAN> <A href="#2.0-beta-Samplesdocumentation-calculatorrestosgi">calculator-rest-osgi</A></LI> +</UL> + <LI><SPAN class="TOCOutline">2.18</SPAN> <A href="#2.0-beta-Samplesdocumentation-scaclient">sca-client</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.18.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-calculatorscaclient">calculator-scaclient</A></LI> + <LI><SPAN class="TOCOutline">2.18.2</SPAN> <A href="#2.0-beta-Samplesdocumentation-helloworldscaclient">helloworld-scaclient</A></LI> +</UL> +</UL> + <LI><SPAN class="TOCOutline">3</SPAN> <A href="#2.0-beta-Samplesdocumentation-runningtuscany">running-tuscany</A></LI> +<UL> + <LI><SPAN class="TOCOutline">3.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-commandline">command-line</A></LI> + <LI><SPAN class="TOCOutline">3.2</SPAN> <A href="#2.0-beta-Samplesdocumentation-eclipse">eclipse</A></LI> + <LI><SPAN class="TOCOutline">3.3</SPAN> <A href="#2.0-beta-Samplesdocumentation-embeddedjse">embedded-jse</A></LI> + <LI><SPAN class="TOCOutline">3.4</SPAN> <A href="#2.0-beta-Samplesdocumentation-embeddedosgi">embedded-osgi</A></LI> + <LI><SPAN class="TOCOutline">3.5</SPAN> <A href="#2.0-beta-Samplesdocumentation-maven">maven</A></LI> + <LI><SPAN class="TOCOutline">3.6</SPAN> <A href="#2.0-beta-Samplesdocumentation-mavenjunit">maven-junit</A></LI> + <LI><SPAN class="TOCOutline">3.7</SPAN> <A href="#2.0-beta-Samplesdocumentation-mavenjunitosgi">maven-junit-osgi</A></LI> + <LI><SPAN class="TOCOutline">3.8</SPAN> <A href="#2.0-beta-Samplesdocumentation-osgi">osgi</A></LI> + <LI><SPAN class="TOCOutline">3.9</SPAN> <A href="#2.0-beta-Samplesdocumentation-shell">shell</A></LI> + <LI><SPAN class="TOCOutline">3.10</SPAN> <A href="#2.0-beta-Samplesdocumentation-webapp">webapp</A></LI> +</UL> + <LI><SPAN class="TOCOutline">4</SPAN> <A href="#2.0-beta-Samplesdocumentation-extendingtuscany">extending-tuscany</A></LI> +<UL> + <LI><SPAN class="TOCOutline">4.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-bindingextension">binding-extension</A></LI> + <LI><SPAN class="TOCOutline">4.2</SPAN> <A href="#2.0-beta-Samplesdocumentation-implementationextension">implementation-extension</A></LI> +</UL> + <LI><SPAN class="TOCOutline">5</SPAN> <A href="#2.0-beta-Samplesdocumentation-applications">applications</A></LI> +<UL> + <LI><SPAN class="TOCOutline">5.1</SPAN> <A href="#2.0-beta-Samplesdocumentation-store">store</A></LI> + <LI><SPAN class="TOCOutline">5.2</SPAN> <A href="#2.0-beta-Samplesdocumentation-storewebapp">store-webapp</A></LI> +</UL> +</UL></DIV> + +<H2><A name="2.0-beta-Samplesdocumentation-gettingstarted"></A>getting-started</H2> + +<P>SCA defines a concept called a Contribution which is the way that SCA composite applications are packed for deployment. See <A href="sca-introduction.html" title="SCA Introduction">SCA Introduction</A> for more information on SCA concepts.</P> + +<P>The getting-started samples consist of simple SCA contributions that you can build and run as your first step to getting up and running with the Tuscany SCA Java runtime.</P> + +<P>You can build the sample contributions with either Maven or Ant and the running-tuscany directory contains information about the various ways you can start Tuscany and run these contributions.</P> + +<H3><A name="2.0-beta-Samplesdocumentation-helloworldcontribution"></A>helloworld-contribution</H3> + +<P>This is a simple SCA contribution. It describes a composite application with a single component, HelloWorldComponent, implemented in Java. The component's Java implementation provides service "business logic" for saying hello to a person whose name is supplied as input to the service. The component is described in a composite called helloworld.composite as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<composite xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//docs.oasis-open.org/ns/opencsa/sca/200912"</SPAN> +</SPAN> xmlns:tuscany=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/xmlns/sca/1.1"</SPAN> +</SPAN> targetNamespace=<SPAN class="code-quote">"http:<SPAN class="code-comment">//sample"</SPAN> +</SPAN> name=<SPAN class="code-quote">"helloworld"</SPAN>> + + <component name=<SPAN class="code-quote">"HelloworldComponent"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"sample.HelloworldImpl"</SPAN>/> + </component> + +</composite> +</PRE> +</DIV></DIV> + +<P>The contribution also contains a composite called helloworldws.composite which describes a component, HelloworldWSComponent, that uses the same implementation but uses a web services binding:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<composite xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//docs.oasis-open.org/ns/opencsa/sca/200912"</SPAN> +</SPAN> xmlns:tuscany=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/xmlns/sca/1.1"</SPAN> +</SPAN> targetNamespace=<SPAN class="code-quote">"http:<SPAN class="code-comment">//sample"</SPAN> +</SPAN> name=<SPAN class="code-quote">"helloworldws"</SPAN>> + + <component name=<SPAN class="code-quote">"HelloworldWSComponent"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"sample.HelloworldImpl"</SPAN>/> + <service name=<SPAN class="code-quote">"Helloworld"</SPAN>> + <binding.ws /> + </service> + </component> + +</composite> +</PRE> +</DIV></DIV> + +<P>This gives us a number of options for interacting with the components in this application. </P> + +<P>Firstly there is a JUnit test inside this project called HelloworldTestCase.java. This starts the Tuscany runtime and loads the contribution. It then talks to the HelloworldComponent over the default SCA binding (binding.sca) using a local Java proxy.</P> + +<P>Secondly the HelloworldWSComponent exposes a service with a web services binding. You can talk to this component using your favourite web services client. You can retrieve the WSDL for the web service automatically (see later)</P> + +<DIV class="panel" style="background-color: pink;border-width: 1px;"><DIV class="panelContent" style="background-color: pink;"> +<P>To build this contribution using Ant do the following:</P> + +<P>TODO</P> +</DIV></DIV> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>To build this contribution using Maven do the following:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd helloworld-contribution +mvn +</PRE> +</DIV></DIV> +</DIV></DIV> + +<P>This will produce the contribution as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +helloworld-contribution/target/helloworld-contribution.jar +</PRE> +</DIV></DIV> + +<P>As the JUnit test deploys and runs the contribution we can use it as a first simple example of a running SCA application. </P> + +<DIV class="panel" style="background-color: pink;border-width: 1px;"><DIV class="panelContent" style="background-color: pink;"> +<P>To run the JUnit test using Ant do the following:</P> + +<P>TODO</P> +</DIV></DIV> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The contribution will be run automatically during the Maven build step and you will see the output from the JUnit test printed on the console in amongst the other output:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +Response from helloworld.sayHello(<SPAN class="code-quote">"Petra"</SPAN>) = Hello Petra +</PRE> +</DIV></DIV> +</DIV></DIV> + +<P>To access the web service that the HelloworldWSComponent exposes we have to keep the runtime runntime running. </P> + +<DIV class="panel" style="background-color: pink;border-width: 1px;"><DIV class="panelContent" style="background-color: pink;"> +<P>To run the sample Ant so that you can access the web service do the following:</P> + +<P>TODO</P> +</DIV></DIV> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>We have a Maven plugin that will run SCA contributions. You use it in Maven as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd helloworld-contribution +mvn tuscany:run +</PRE> +</DIV></DIV> + +<P>You will note that in the console output you can see a web service being exposed by the binding.ws JAXWS provider:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +Binding.ws JAXWS provider - Service URI: http:<SPAN class="code-comment">//localhost:8085/HelloworldWSComponent/Helloworld</SPAN> +</PRE> +</DIV></DIV> + +<P>If you point you web browser at this address and add ?wsdl on the end:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +http:<SPAN class="code-comment">//localhost:8085/HelloworldWSComponent/Helloworld?wsdl</SPAN> +</PRE> +</DIV></DIV> + +<P>You'll see the WSDL for the service returned. Using you're favourite web services client, for example, the Web Services Explorer in Eclipse, you can send messages to this web service. </P> + +<P>When you're done use CTRL-C to stop the sample. </P> +</DIV></DIV> + +<P>For more information on getting started with the Apache Tuscany SCA Java runtime see the <A href="getting-started.html" title="Getting Started">Getting Started</A> page.</P> + +<H3><A name="2.0-beta-Samplesdocumentation-helloworldwebapp"></A>helloworld-webapp</H3> + +<P>This sample is not a contribution in it's own right but demonstrates how to run the helloworld-contribution inside a web application. As it's the same contribution the same two components, HelloworldComponent and HelloworldWSComponnet, will be started. </P> + +<DIV class="panel" style="background-color: pink;border-width: 1px;"><DIV class="panelContent" style="background-color: pink;"> +<P>To build this contribution using Ant do the following:</P> + +<P>TODO</P> +</DIV></DIV> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>To build this contribution using Maven do the following:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd helloworld-webapp +mvn +</PRE> +</DIV></DIV> +</DIV></DIV> + +<P>This will produce a webapp as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +helloworld-webapp/target/helloworld.war +</PRE> +</DIV></DIV> + + +<P>You can run this webapp by deploying it to you're favourite webapp container. For example, you can deploy to Tomcat and run as follows:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cp helloworld-webapp/target/helloworld.war my_tomcat_install/webapps +my_tomcat_install/bin/catalina run +</PRE> +</DIV></DIV> + +<P>Once running point your web browser at:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +http:<SPAN class="code-comment">//localhost:8080/helloworld/hello.html</SPAN> +</PRE> +</DIV></DIV> + +<P>You'll see a link there to the WSDL that's automatically generated for the web service binding of the HelloworldWSComponent. Again you can use your favourite web services client to send messages to the service. </P> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR>There is no example of accessing binding.sca from within the webapp. Do we want to include this?</TD></TR></TABLE></DIV> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR>For more information on creating webapps to run SCA contributions with Tuscany see - ?</TD></TR></TABLE></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-callbackapi"></A>callback-api</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">This feels like a learning-more sample. I wouldn't focus on callbacks with the first time user</FONT></TD></TR></TABLE></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-scascopes"></A>sca-scopes</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">This feels like a learning-more sample. I wouldn't focus on scopes with the first time user</FONT></TD></TR></TABLE></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-scaincludecontribution"></A>sca-include-contribution</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">This feels like a learning-more sample. I wouldn't focus on inclusion with the first time user</FONT></TD></TR></TABLE></DIV> + +<H2><A name="2.0-beta-Samplesdocumentation-learningmore"></A>learning-more</H2> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR>All of the run instructions here are subject to change. I just picked ones that works but ideally we'd use the command line consistently when that is operating correctly. Also Mike commented that it's unnatural and confusing to "cd running-tuscany/xyz" to run a sample. This should also be solved if we can go with the command line.</TD></TR></TABLE></DIV> + +<P>The samples found in the contributions below illustrate more of SCA and Tuscany's features in action. The contributions here are primarily focused on demonstrating the various SCA extensions that the Tuscany runtime supports, for example, bindings and implementations. The directories are named to let you easily find a sample of the extension you're interested in.</P> + +<P>You can identify contributions here as the name of the directory from which they are built ends with "-contribution". There are also webapp samples here. The names of these directories end with "-webapp".</P> + +<H3><A name="2.0-beta-Samplesdocumentation-async"></A>async</H3> + +<P>This sample demonstrates the SCA asynchronous progamming model in action as typified by services that are configured with the asyncInvocation intent. For example, from calculator-contribution</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +@Remotable +@AsyncInvocation +<SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">interface</SPAN> CalculatorServiceAsync { + void calculateAsync(<SPAN class="code-object">Integer</SPAN> n1, ResponseDispatch<<SPAN class="code-object">String</SPAN>> response); +} +</PRE> +</DIV></DIV> + +<P>A client component can access an asynchronous service either synchronously or asynchronously. Asynchronous reference interfaces also have a special form, again from calculator-contribution:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +@Remotable +<SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">interface</SPAN> CalculateReferenceAsync { + <SPAN class="code-comment">// Sync +</SPAN> <SPAN class="code-keyword">public</SPAN> <SPAN class="code-object">String</SPAN> calculate(<SPAN class="code-object">Integer</SPAN> i1); + + <SPAN class="code-comment">// Aysnc Poll +</SPAN> <SPAN class="code-keyword">public</SPAN> Response<<SPAN class="code-object">String</SPAN>> calculateAsync(<SPAN class="code-object">Integer</SPAN> i1); + + <SPAN class="code-comment">// Async Callback +</SPAN> <SPAN class="code-keyword">public</SPAN> Future<<SPAN class="code-object">String</SPAN>> calculateAsync(<SPAN class="code-object">Integer</SPAN> i1, AsyncHandler<<SPAN class="code-object">String</SPAN>> handler); +} +</PRE> +</DIV></DIV> + +<H4><A name="2.0-beta-Samplesdocumentation-calculatorcontribution"></A>calculator-contribution</H4> + +<P>This contribution defines synchronous and asynchronous component services and a client component which references both. During the test the client component exercise all three styles of reference interface operation against both the synchronous and asynchronous service.</P> + +<DIV class="panel" style="background-color: pink;border-width: 1px;"><DIV class="panelContent" style="background-color: pink;"> +<P>The contribution can be built using Ant as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/async/calculator-contribution +ant +</PRE> +</DIV></DIV> + +<P>The contribution can be installed and the composite it contains run using Ant as follows</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd running-tuscany/embedded-jse +ant sample-implementation-java-calculator-async-contribution +</PRE> +</DIV></DIV> +</DIV></DIV> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The contribution can be built using Maven as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/async/calculator-contribution +mvn +</PRE> +</DIV></DIV> + +<P>The contribution can be installed and the composite it contains run using Maven as follows</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd running-tuscany/embedded-jse +mvn +</PRE> +</DIV></DIV> + +<P>This will run several contributions including the sample-implementation-java-calculator-async-contribution.</P> +</DIV></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-bindingcomet"></A>binding-comet</H3> + +<P>The Comet protocol allows a servlet to process IO asynchronously, receiving events when data is available for reading on the connection (rather than always using a blocking read), and writing data back on connections asynchronously (most likely responding to some event raised from some other source).</P> + +<H4><A name="2.0-beta-Samplesdocumentation-weatherwebapp"></A>weather-webapp</H4> + +<P>Executing the command "mvn" in this sample project creates a web archive suitable for deployment to Tomcat. It makes use of the tuscany comet binding.</P> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The webapp can be built using Maven as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/binding-commet/weather-webapp +mvn +</PRE> +</DIV></DIV> +</DIV></DIV> + +<P>The webapp can be installed and run as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/binding-commet/weather-webapp +cp target/sample-binding-comet-1.0.war <your_container_deployment-dir> +start the container as appropriate +</PRE> +</DIV></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-bindingjms"></A>binding-jms</H3> + +<P>This binding supports message orient communication via the JMS API.</P> + +<H4><A name="2.0-beta-Samplesdocumentation-helloworldwebapp"></A>helloworld-webapp</H4> + +<P>This contribution packages an SCA application inside a webapp. The application has two components which exchange helloworld style messages over the JMS binding. </P> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The webapp can be built using Maven as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/binding-jms/helloworld-webapp +mvn +</PRE> +</DIV></DIV> +</DIV></DIV> + +<P>The webapp can be installed and run as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/binding-jms/helloworld-webapp +cp target/helloworld-jms.war <your_container_deployment-dir> +start the container as appropriate +</PRE> +</DIV></DIV> + +<DIV class="panelMacro"><TABLE class="warningMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR>By rights the webapp should be called sample-binding-jms-helloworld-webapp.war</TD></TR></TABLE></DIV> + +<P>Once the webapp is deployed point your browser at:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +http:<SPAN class="code-comment">//localhost:8080/helloworld-jms/</SPAN> +</PRE> +</DIV></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-bindingjsonrpc"></A>binding-jsonrpc</H3> + +<P>This binding supports communication over the JSON-RPC protocol.</P> + +<H4><A name="2.0-beta-Samplesdocumentation-calculatorcontribution"></A>calculator-contribution</H4> + +<P>This sample demonstrates using the simple calculator service component which makes use of four other services for add, subtract, multiply and divide functions. In this variant of the calculator sample the AddService is configured to be invoked using the JSON-RPC protocol. You can see the configuration by looking in the src/main/resources/Calculator.composite xml file.</P> + +<DIV class="panel" style="background-color: pink;border-width: 1px;"><DIV class="panelContent" style="background-color: pink;"> +<P>The contribution Jar can be built using Ant as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/binding-jsonrpc/calculator-contribution +ant +</PRE> +</DIV></DIV> + +<P>The contribution can be installed and the composite it contains run using Ant as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd running-tuscany/embedded-jse +ant sample-implementation-java-calculator-async-contribution +</PRE> +</DIV></DIV> +</DIV></DIV> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The contribution Jar can be built using Maven as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/binding-jsonrpc/calculator-contribution +mvn +</PRE> +</DIV></DIV> + +<P>The contribution can be installed and the composite it contains run using Maven as follows</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd running-tuscany/embedded-jse +mvn +</PRE> +</DIV></DIV> + +<P>This will run several contributions including the sample-implementation-java-calculator-async-contribution.</P> +</DIV></DIV> + +<H4><A name="2.0-beta-Samplesdocumentation-calculatorwebapp"></A>calculator-webapp</H4> + +<P>This contribution packages the same calculator-contribution inside a webapp. </P> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The webapp can be built using Maven as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/binding-jsonrpc/calculator-webapp +mvn +</PRE> +</DIV></DIV> +</DIV></DIV> + +<P>The webapp can be installed and run as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/binding-jsonrpc/calculator-webapp +cp target/sample-binding-jsonrpc-calculator-webapp.war <your_container_deployment-dir> +start the container as appropriate +</PRE> +</DIV></DIV> + +<P>Once the webapp is deployed point your browser at:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +http:<SPAN class="code-comment">//localhost:8080/sample-binding-jsonrpc-calculator-webapp/</SPAN> +</PRE> +</DIV></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-bindingrmi"></A>binding-rmi</H3> + +<P>In this example the calculator function is split over two contributions in order to demonstrate the remote method invocation binding (binding.rmi). The calculator-service-contribution contains a composite which defines a CalculatorServiceComponent which exposes a CalculatorService using binding.rmi. The calculator-reference-contribution contains a composite which also defines a CalculatorServiceComponent but which in this case calls the add, subtract, multiple and divide operations offered by the component in the calculator-service-contribution. The two contributions are run using separate Tuscany nodes and the resulting components communicate over RMI. Both contributions must be deployed and started for the sample to work;</P> + +<DIV class="panel" style="background-color: pink;border-width: 1px;"><DIV class="panelContent" style="background-color: pink;"> +<P>The contributions can be installed and the composite they contain run using Ant as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd running-tuscany/embedded-jse +ant sample-binding-rmi-calculator-contribution +</PRE> +</DIV></DIV> +</DIV></DIV> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The contributions can be installed and the composite they contain run using Ant as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd running-tuscany/embedded-jse +mvn +</PRE> +</DIV></DIV> + +<P>This will run several contributions including the binding-rmi sample contributions</P> +</DIV></DIV> + +<H4><A name="2.0-beta-Samplesdocumentation-calculatorservicecontribution"></A>calculator-service-contribution</H4> + +<P>This contribution defines a CalculatorServiceComponent whose add, subtract, multiply and divide operations are available over RMI. </P> + +<DIV class="panel" style="background-color: pink;border-width: 1px;"><DIV class="panelContent" style="background-color: pink;"> +<P>The contribution Jar can be built using Ant as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/binding-rmi/calculator-service-contribution +ant +</PRE> +</DIV></DIV> +</DIV></DIV> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The contribution Jar can be built using Maven as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/binding-rmi/calculator-service-contribution +mvn +</PRE> +</DIV></DIV> +</DIV></DIV> + + +<H4><A name="2.0-beta-Samplesdocumentation-calculatorreferencecontribution"></A>calculator-reference-contribution</H4> + +<P>This sample extends the calculator sample by replacing the local wired connections with RMI bindings. Instead of local add, subtract, multiply and divide components, an RMI service implementation now provides the add, subtract, multiply and divide interfaces and is hosted as an RMI server. References specified in the .composite file include an RMI binding which targets<BR> +this RMI server.</P> + + + +<DIV class="panel" style="background-color: pink;border-width: 1px;"><DIV class="panelContent" style="background-color: pink;"> +<P>The contribution Jar can be built using Ant as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/binding-rmi/calculator-reference-contribution +ant +</PRE> +</DIV></DIV> +</DIV></DIV> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The contribution Jar can be built using Maven as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/binding-rmi/calculator-reference-contribution +mvn +</PRE> +</DIV></DIV> +</DIV></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-bindingsca"></A>binding-sca</H3> + +<P>This sample is the simplest sample other than that shown in the getting starting section. It uses the default SCA protocol for communicating between the various components of the caluclator application.</P> + +<H4><A name="2.0-beta-Samplesdocumentation-calculatorcontribution"></A>calculator-contribution</H4> +<P>The service and reference definitions in the Calculator.composite and CalculatorClient.composite files have no binding attributes, thereby defaulting to the SCA binding for communication between the running instances of the components.</P> + +<DIV class="panel" style="background-color: pink;border-width: 1px;"><DIV class="panelContent" style="background-color: pink;"> +<P>The contribution Jar can be built using Ant as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/binding-sca/calculator-contribution +ant +</PRE> +</DIV></DIV> + +<P>The contribution can be installed and the composite it contains run using Ant as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd running-tuscany/embedded-jse +ant sample-binding-sca-calculator-contribution +</PRE> +</DIV></DIV> +</DIV></DIV> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The contribution Jar can be built using Maven as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/binding-sca/calculator-contribution +mvn +</PRE> +</DIV></DIV> + +<P>The contribution can be installed and the composite it contains run using Maven as follows</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd running-tuscany/embedded-jse +mvn +</PRE> +</DIV></DIV> + +<P>This will run several contributions including the sample-binding-sca-calculator-contribution.</P> +</DIV></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-bindingws"></A>binding-ws</H3> + +<P>The web service binding allows components to expose and call services using SOAP formatted messages primarily over HTTP. </P> + +<H4><A name="2.0-beta-Samplesdocumentation-calculatorcontribution"></A>calculator-contribution</H4> + +<P>This contribution provides the four arithmetic operations in the calculator service, with the AddService being accessible as a web service via the URL <A href="http://localhost:8085/AddServiceComponent" class="external-link" rel="nofollow">http://localhost:8085/AddServiceComponent</A>, as configured in the Calculator.composite file.</P> + +<DIV class="panel" style="background-color: pink;border-width: 1px;"><DIV class="panelContent" style="background-color: pink;"> +<P>The contribution Jar can be built using Ant as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/binding-ws/calculator-contribution +ant +</PRE> +</DIV></DIV> + +<P>The contribution can be installed and the composite it contains run using Ant as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd running-tuscany/embedded-jse +ant sample-binding-ws-calculator-contribution +</PRE> +</DIV></DIV> +</DIV></DIV> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The contribution Jar can be built using Maven as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/binding-ws/calculator-contribution +mvn +</PRE> +</DIV></DIV> + +<P>The contribution can be installed and the composite it contains run using Maven as follows</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd running-tuscany/embedded-jse +mvn +</PRE> +</DIV></DIV> + +<P>This will run several contributions including the sample-binding-sca-calculator-contribution.</P> +</DIV></DIV> + +<H4><A name="2.0-beta-Samplesdocumentation-contributionhelloworldwssdo"></A>contribution-helloworld-ws-sdo</H4> + +<P>This sample demonstrates an SCA reference that uses a web service binding which works with SDO. Instead if using JAXB style Java beans in the service interface they are replaced with SDO object. </P> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Sample not currently enabled - awaiting SDO support</FONT></TD></TR></TABLE></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-distributedosgi"></A>distributed-osgi</H3> + +<P>These samples demonstrate the execution of Tuscany contributions in a OSGI environment. In particular the two bundle project in this directory define calculator objects that communicate with one another using the mechanisms defined in the OSGi remote services specifications. Here the Tuscany SCA runtime provides dynamic service discovery functionality. The calculator objects are registered as services directly with the OSGi bundle context by the bundle activator. Under the covers SCA provides the remote service disovery features that allow OSGi registered service to discover and communicate with one another across two JVMs. </P> + +<P>To run the sample each bundle must be build using maven and then loaded into a separate OSGi environment into which the Tuscany SCA runtime has already been installed (See "osgi" under running-tuscany)</P> + +<H4><A name="2.0-beta-Samplesdocumentation-dosgidynamiccalculatoroperations"></A>dosgi-dynamic-calculator-operations</H4> + +<P>This bundle provides the calculator add, subtract, multiple, divide operations services.</P> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The bundle Jar can be built using Maven as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/distributed-osgi/dosgi-dynamic-calculator-operations +mvn +</PRE> +</DIV></DIV> +</DIV></DIV> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR>projects should be called dosgi-dynamic-calculator-operations-bundle</TD></TR></TABLE></DIV> + +<P>To run the bundle see "osgi" under running-tuscany. In short do the following:</P> + +<P>On Windows, run</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +java -jar ..\..\..\..\modules\osgi-3.5.0-v20090520.jar -configuration ..\..\..\..\features\configuration -clean -console +</PRE> +</DIV></DIV> + +<P>You should see the osgi console. You can run "ss" command under the osgi> to see the status of the bundles.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +osgi> ss +</PRE> +</DIV></DIV> + +<P>Then you can install and start the bundle that's just been built:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +osgi> install file:./target/sample-dosgi-dynamic-calculator-operations.jar +</PRE> +</DIV></DIV> + +<H4><A name="2.0-beta-Samplesdocumentation-dosgidynamiccalculator"></A>dosgi-dynamic-calculator</H4> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The bundle Jar can be built using Maven as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/distributed-osgi/dosgi-dynamic-calculator +mvn +</PRE> +</DIV></DIV> +</DIV></DIV> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR>projects should be called dosgi-dynamic-calculator-bundle</TD></TR></TABLE></DIV> + +<P>To run the bundle see "osgi" under running-tuscany. In short do the following:</P> + +<P>On Windows, run</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +java -jar ..\..\..\..\modules\osgi-3.5.0-v20090520.jar -configuration ..\..\..\..\features\configuration -clean -console +</PRE> +</DIV></DIV> + +<P>You should see the osgi console. You can run "ss" command under the osgi> to see the status of the bundles.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +osgi> ss +</PRE> +</DIV></DIV> + +<P>Then you can install and start the bundle that's just been built:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +osgi> install file:./target/sample-dosgi-dynamic-calculator.jar +</PRE> +</DIV></DIV> + +<P>You should see the calculator service start. </P> + + +<H3><A name="2.0-beta-Samplesdocumentation-implementationbpel"></A>implementation-bpel</H3> + +<P>BPEL component implementations will be useful to those who wish to describe a sequence of calls that must be made to other component services. </P> + +<H4><A name="2.0-beta-Samplesdocumentation-contributionhelloworldbpel"></A>contribution-helloworld-bpel</H4> + +<DIV class="panel" style="background-color: pink;border-width: 1px;"><DIV class="panelContent" style="background-color: pink;"> +<P>The contribution Jar can be built using Ant as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/implementation-bpel/helloworld-bpel-contribution +ant +</PRE> +</DIV></DIV> + +<P>The contribution can be installed and the composite it contains run using Ant as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +???? +</PRE> +</DIV></DIV> +</DIV></DIV> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The contribution Jar can be built using Maven as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/implementation-bpel/helloworld-bpel-contribution +mvn +</PRE> +</DIV></DIV> + +<P>The contribution can be installed and the composite it contains run using Maven as follows</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +???? +</PRE> +</DIV></DIV> +</DIV></DIV> + +<H4><A name="2.0-beta-Samplesdocumentation-helloworldbpelwebapp"></A>helloworld-bpel-webapp</H4> + +<H3><A name="2.0-beta-Samplesdocumentation-implementationcomposite"></A>implementation-composite</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H4><A name="2.0-beta-Samplesdocumentation-helloworldrecursive"></A>helloworld-recursive</H4> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR>Understand and Document</TD></TR></TABLE></DIV> + +<H4><A name="2.0-beta-Samplesdocumentation-helloworldrecursivews"></A>helloworld-recursive-ws</H4> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-implementationjava"></A>implementation-java</H3> +<P>The sample provides a single calculator service with a default SCA binding. The CalculatorClient exercises this interface by calling add, subtract, multiply and divide operations. This results in messages passing to the appropriate components in the composite across the local wires.</P> + +<H4><A name="2.0-beta-Samplesdocumentation-contributioncalculator"></A>contribution-calculator</H4> +<DIV class="panel" style="background-color: pink;border-width: 1px;"><DIV class="panelContent" style="background-color: pink;"> +<P>The contribution Jar can be built using Ant as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/implementation-java/calculator-contribution +ant +</PRE> +</DIV></DIV> + +<P>The contribution can be installed and the composite it contains run using Ant as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd running-tuscany/embedded-jse +ant sample-implementation-java-calculator-contribution +</PRE> +</DIV></DIV> +</DIV></DIV> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The contribution Jar can be built using Maven as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/implementation-java/calculator-contribution +mvn +</PRE> +</DIV></DIV> + +<P>The contribution can be installed and the composite it contains run using Maven as follows</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd running-tuscany/embedded-jse +mvn +</PRE> +</DIV></DIV> + +<P>This will run several contributions including the sample-implementation-java-calculator-contribution.</P> +</DIV></DIV> + + +<H3><A name="2.0-beta-Samplesdocumentation-implementation.osgi"></A>implementation.osgi</H3> + +<H4><A name="2.0-beta-Samplesdocumentation-dosgicalculator"></A>dosgi-calculator</H4> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The bundle Jar can be built using Maven as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/implementation-osgi/dosgi-calculator +mvn +</PRE> +</DIV></DIV> +</DIV></DIV> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR>projects should be called dosgi-calculator-bundle</TD></TR></TABLE></DIV> + +<P>To run the bundle see "osgi" under running-tuscany. In short do the following:</P> + +<P>On Windows, run</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +java -jar ..\..\..\..\modules\osgi-3.5.0-v20090520.jar -configuration ..\..\..\..\features\configuration -clean -console +</PRE> +</DIV></DIV> + +<P>You should see the osgi console. You can run "ss" command under the osgi> to see the status of the bundles.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +osgi> ss +</PRE> +</DIV></DIV> + +<P>Then you can install and start the bundle that's just been built:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +osgi> install file:./target/sample-dosgi-calculator.jar +</PRE> +</DIV></DIV> + +<P>You should see the calculator service start. </P> + + + +<H4><A name="2.0-beta-Samplesdocumentation-dosgicalculatoroperations"></A>dosgi-calculator-operations</H4> +<P>This bundle provides the calculator add, subtract, multiple, divide operations services.</P> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The bundle Jar can be built using Maven as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/distributed-osgi/dosgi-calculator-operations +mvn +</PRE> +</DIV></DIV> +</DIV></DIV> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR>projects should be called dosgi-calculator-operations-bundle</TD></TR></TABLE></DIV> + +<P>To run the bundle see "osgi" under running-tuscany. In short do the following:</P> + +<P>On Windows, run</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +java -jar ..\..\..\..\modules\osgi-3.5.0-v20090520.jar -configuration ..\..\..\..\features\configuration -clean -console +</PRE> +</DIV></DIV> + +<P>You should see the osgi console. You can run "ss" command under the osgi> to see the status of the bundles.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +osgi> ss +</PRE> +</DIV></DIV> + +<P>Then you can install and start the bundle that's just been built:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +osgi> install file:./target/sample-dosgi-calculator-operations.jar +</PRE> +</DIV></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-implementationscript"></A>implementation-script</H3> + +<P>This sample provides a simple calculator service whose operations are implemented using four different script languages. </P> + +<H4><A name="2.0-beta-Samplesdocumentation-contributioncalculator"></A>contribution-calculator</H4> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The bundle Jar can be built using Maven as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/implementation-script/calculator-contribution +mvn +</PRE> +</DIV></DIV> +</DIV></DIV> + +<DIV class="panel" style="background-color: pink;border-width: 1px;"><DIV class="panelContent" style="background-color: pink;"> +<P>The contribution Jar can be built using Ant as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/implementation-script/calculator-contribution +ant +</PRE> +</DIV></DIV> + +<P>The contribution can be installed and the composite it contains run using Ant as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +???? +</PRE> +</DIV></DIV> +</DIV></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-implementationspring"></A>implementation-spring</H3> + +<P>The Spring implementation sample contains a simple Hello World service and client using implementation.spring. </P> + +<H4><A name="2.0-beta-Samplesdocumentation-contributionhelloworldspring"></A>contribution-helloworld-spring</H4> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The bundle Jar can be built using Maven as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/implementation-spring/helloworld-spring-contribution +mvn +</PRE> +</DIV></DIV> +</DIV></DIV> + + +<H4><A name="2.0-beta-Samplesdocumentation-helloworldspringwebapp"></A>helloworld-spring-webapp</H4> + +<P>The HelloWorld Spring WebApp sample contains a simple Hello World service implemented using Spring and wrapped in a webApp. </P> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>The bundle Jar can be built using Maven as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd learning-more/implementation-spring/helloworld-spring-webapp +mvn +</PRE> +</DIV></DIV> +</DIV></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-implementationweb"></A>implementation-web</H3> + +<P>The Web implementation samples contain examples of a HelloWorld service implemented using implementation.web and accessed with various different technologies. </P> + +<H4><A name="2.0-beta-Samplesdocumentation-helloworldjaxrswebapp"></A>helloworld-jaxrs-webapp</H4> + +<P>The HelloWorld JAX-RS WebApp sample uses implementation.web with JAX-RS to display a simple "Hello World" message from a webapp. </P> + +<H4><A name="2.0-beta-Samplesdocumentation-helloworldjsclientwebapp"></A>helloworld-js-client-webapp</H4> + +<P>The HelloWorld JavaScript client Webapp sample uses implementation.web and a javascript client to call a simple "Hello World" service and display the results. </P> + +<H4><A name="2.0-beta-Samplesdocumentation-helloworldjsfwebapp"></A>helloworld-jsf-webapp</H4> +<P>The HelloWorld JSF WebApp sample shows a simple "Hello World" service implemented in a webapp and accessed using Java Server Faces. </P> + +<H4><A name="2.0-beta-Samplesdocumentation-helloworldjspwebapp"></A>helloworld-jsp-webapp</H4> +<P>The HelloWorld JSP WebApp sample uses implementation.web and a JSP client to invoke a simple "Hello World" service and display the results. </P> + +<H4><A name="2.0-beta-Samplesdocumentation-helloworldservletwebapp"></A>helloworld-servlet-webapp</H4> + +<P>The HelloWorld Servlet WebApp sample uses implementation.web with a servlet to return a simple "Hello World" message in response to a request.</P> + +<H4><A name="2.0-beta-Samplesdocumentation-helloworldstripeswebapp"></A>helloworld-stripes-webapp</H4> +<P>The HelloWorld Stripes WebApp sample uses implementation.web with Stripes to display a simple "Hello World" message from a webapp. </P> + +<H3><A name="2.0-beta-Samplesdocumentation-loggingscribe"></A>logging-scribe</H3> + +<P>This Tuscany sample shows how to implement and use a simple Logger component that logs string messages to a Scribe logging server. </P> + +<P>Scribe is an open source server for aggregating streaming log data. It is designed to scale to a very large number of nodes and be robust to network and node failures.</P> + +<P>See the Scribe Wiki <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=1&linkCreation=true&fromPageId=23338770" class="createlink">1</A> for more information on Scribe.</P> + +<H4><A name="2.0-beta-Samplesdocumentation-GettingtherequiresApacheThriftlibrary"></A>Getting the requires Apache Thrift library</H4> + +<P>This sample uses Apache Thrift's libthrift.jar to communicate with Scribe servers. Libthrift is not yet available in a Maven repository, so before building the sample with maven you need to download libthrift <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=2&linkCreation=true&fromPageId=23338770" class="createlink">2</A> and install it in your local maven repository like this:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +mvn install:install-file -DgroupId=org.apache.thrift -DartifactId=libthrift -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=libthrift-r917130.jar +</PRE> +</DIV></DIV> + +<H4><A name="2.0-beta-Samplesdocumentation-StartingaScribeserver"></A>Starting a Scribe server</H4> +<P>Before running the LoggingTest sample test program, you need to start a Scribe server for the sample program to connect to.</P> + +<P>Steps to start a Scribe server are described in the Scribe examples README <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=3&linkCreation=true&fromPageId=23338770" class="createlink">3</A>. A simple scribe server configuration can be found in the Scribe examples <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=4&linkCreation=true&fromPageId=23338770" class="createlink">4</A>. </P> + +<P>LoggingTest will try to connect to a Scribe server at localhost:1463. To use a Scribe server at a different host or port, configure the host and port properties in scribe.composite to match your server. </P> + +<H4><A name="2.0-beta-Samplesdocumentation-RunningtheLoggingTestsampletestprogram"></A>Running the LoggingTest sample test program</H4> + +<P>To run the LoggingTest sample test program, do this:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +mvn -Dtest=LoggingTest test +</PRE> +</DIV></DIV> + +<H4><A name="2.0-beta-Samplesdocumentation-CheckingtheScribelogoutput"></A>Checking the Scribe log output</H4> +<P>After running LoggingTest, you should find the logged string "Hello There" in file sample/sample_current under your Scribe log store directory.</P> + +<P>If you've used the example1.conf Scribe configuration from the Scribe examples <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=4&linkCreation=true&fromPageId=23338770" class="createlink">4</A>, you should find your log message in /tmp/scribetest/sample/sample_current.</P> + +<P><A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=1&linkCreation=true&fromPageId=23338770" class="createlink">1</A> <A href="http://wiki.github.com/facebook/scribe/" class="external-link" rel="nofollow">http://wiki.github.com/facebook/scribe/</A><BR> +<A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=2&linkCreation=true&fromPageId=23338770" class="createlink">2</A> <A href="http://svn.apache.org/repos/asf/cassandra/trunk/lib/libthrift-r917130.jar" class="external-link" rel="nofollow">http://svn.apache.org/repos/asf/cassandra/trunk/lib/libthrift-r917130.jar</A><BR> +<A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=3&linkCreation=true&fromPageId=23338770" class="createlink">3</A> <A href="http://github.com/facebook/scribe/blob/master/examples/README" class="external-link" rel="nofollow">http://github.com/facebook/scribe/blob/master/examples/README</A><BR> +<A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=4&linkCreation=true&fromPageId=23338770" class="createlink">4</A> <A href="http://github.com/facebook/scribe/blob/master/examples/example1.conf" class="external-link" rel="nofollow">http://github.com/facebook/scribe/blob/master/examples/example1.conf</A></P> + + +<H3><A name="2.0-beta-Samplesdocumentation-mavenosgijunit"></A>maven-osgi-junit</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H4><A name="2.0-beta-Samplesdocumentation-calculatorosgi"></A>calculator-osgi</H4> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H4><A name="2.0-beta-Samplesdocumentation-calculatorrestosgi"></A>calculator-rest-osgi</H4> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-scaclient"></A>sca-client</H3> + +<P>Samples that demonstrate the OASIS defined SCA Client API being used in simple Java applications to access SCA components running in the domain.</P> + +<H4><A name="2.0-beta-Samplesdocumentation-calculatorscaclient"></A>calculator-scaclient</H4> + +<P>Disabled in this Beta1 release pending some up-coming changes in <BR> +the way that domains are addressed and accessed.</P> + +<H4><A name="2.0-beta-Samplesdocumentation-helloworldscaclient"></A>helloworld-scaclient</H4> + +<P>Disabled in this Beta1 release pending some up-coming changes in <BR> +the way that domains are addressed and accessed.</P> + +<H2><A name="2.0-beta-Samplesdocumentation-runningtuscany"></A>running-tuscany</H2> + +<P>Running something in Tuscany requires one or more contributions, and a method of launching the contributions to make the services they provide available. The sections below describes various means of launching contributions with the Tuscany SCA Java runtime. It's not important that you try all of these but they show you what's possible and hopefully show you how to use Tuscany in an environment that makes sense to you.</P> + +<P>Some of the running-tuscany sub-directories just contain a README that gives you instructions. For example, maven just tells you how to configure and run contributions using the maven-tuscany-plugin. Others contain code. For example, embedded-jse contains simple Java launchers that show you how to start some of the sample contributions from a Java program.</P> + +<P>The sample contributions in getting-started and learning-more should work regardless of which approach you adopt. However some approaches, like embedded-jse, don't have launchers for every single sample contribution.</P> + +<H3><A name="2.0-beta-Samplesdocumentation-commandline"></A>command-line</H3> + +<P>You can execute a sample contribution from the command line on Windows or Linux.</P> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR>Waiting for tuscany.bat to be reworked before correcting</TD></TR></TABLE></DIV> + +<P>To execute a sample contribution from the command line</P> + +<P>on Windows, from a command prompt in the samples directory, run the command ...</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<tuscany_din_distro>\bin\tuscany.bat <SPAN class="code-quote">"contribution-name"</SPAN> +</PRE> +</DIV></DIV> + +<P>for example</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd <tuscany_din_distro>\samples\learning-more\binding-sca\calculator-contribution +<tuscany_din_distro>\bin\tuscany.bat sample-binding-sca-calculator-contribution.jar +</PRE> +</DIV></DIV> + +<P>or on *nix platforms, from a shell prompt in the samples directory, run the command ...</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd <tuscany_din_distro>/samples/learning-more/binding-sca/calculator-contribution +<tuscany_din_distro>/bin/tuscany.sh sample-binding-sca-calculator-contribution.jar +</PRE> +</DIV></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-eclipse"></A>eclipse</H3> + +<P>To import sample contributions into Eclipse you first need to import the Tuscany runtime. You then need to import the sample contribution into Eclipse as a project. Instructions for doing both of these things can be found here</P> + +<P><A href="http://tuscany.apache.org/import-existing-tuscany-sca-projects-into-eclipse.html" class="external-link" rel="nofollow">http://tuscany.apache.org/import-existing-tuscany-sca-projects-into-eclipse.html</A></P> + + + +<P>Note. these instructions refer to our 1.x code base but it holds true for our 2.x code base.</P> + +<P>Once you have a contribution imported into Eclipse and cleanly compiling against the Tuscany runtime jars you probably want to be able to run and debug it. The easiest way to do this is with a simple Java launcher. If you import the running-tuscany/embedded-jse project into Eclipse you'll see a number of such launcher programs which you can copy to launch the contribution(s) of your choice. Alternatively you can add a JUnit test case to the contribution that starts Tuscany and launches the contribution. See maven-junit as an example of how to do this.</P> + +<H3><A name="2.0-beta-Samplesdocumentation-embeddedjse"></A>embedded-jse</H3> + +<P>This directory contains sample java launchers for the some of the Tuscany sample contributions from the learning-more directory. It shows you how to embed the Tuscany runtime in a Java program. To make you're own launchers simply copy and existing one and change the details of the contribution being loaded. You'll note that the same launcher code is used inside the contribution unit test demonstrated by maven-junit.</P> + +<DIV class="panel" style="background-color: pink;border-width: 1px;"><DIV class="panelContent" style="background-color: pink;"> +<P>To use the sample JSE launchers with ant execute the command</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +ant <contributionname> +</PRE> +</DIV></DIV> + +<P>where <contributionname> is one of the targets in the provided build.xml file</P> +</DIV></DIV> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>To use the sample JSE launchers from Maven do the following:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd embedded-jse +mvn +</PRE> +</DIV></DIV> +<P>This runs a JUnit test case that runs all the launchers in turn.</P> +</DIV></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-embeddedosgi"></A>embedded-osgi</H3> + +<P>The Tuscany runtime jars will also work within an OSGi enviroment. If you want to load them into a vanilla OSGi environment see the osgi directory. If you want Tuscany to create an OSGi environment for you this directory contains launchers that do just that.</P> + +<DIV class="panel" style="background-color: pink;border-width: 1px;"><DIV class="panelContent" style="background-color: pink;"> +<P>To use the sample OSGI launchers with ant do the following:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd embedded-osgi +ant <contributionname> +</PRE> +</DIV></DIV> + +<P>where <contributionname> is one of the targets in the build.xml file</P> +</DIV></DIV> + +<DIV class="panel" style="background-color: silver;border-width: 1px;"><DIV class="panelContent" style="background-color: silver;"> +<P>To use the sample JSE launchers from Maven do the following:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd embedded-osgi +mvn +</PRE> +</DIV></DIV> +<P>This runs a JUnit test case that runs all the launchers in turn.</P> +</DIV></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-maven"></A>maven</H3> + +<P>Maven can be used to install contributions. Tuscany has a special plugin (maven-tuscany-plugin) that makes this happen. Look for contributions that have the following configuration in their pom.xml file:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<plugin> +<groupId>org.apache.tuscany.maven.plugins</groupId> +<artifactId>maven-tuscany-plugin</artifactId> +<version>2.0-SNAPSHOT</version> +</plugin> +</PRE> +</DIV></DIV> + +<P>For contributions that have this, for example, learning-more/binding-sca/contribution-calculator, do the following</P> + +<P>cd samples/learning-more/binding-sca/contribution-calculator<BR> +mvn tuscany:run</P> + +<P>This will install the contribution in the Tuscany runtime, start the composite it contains, and then wait. At this point you can use<BR> +other clients to send messages to services that the running SCA applcation exposes, for example, try learning-more/sca-client/calculator-scaclient.</P> + +<H3><A name="2.0-beta-Samplesdocumentation-mavenjunit"></A>maven-junit</H3> + +<P>Maven will run JUnit tests found in a module's src/test/java directory automatically. If you use embedded-jse style code in the JUnit test to install a contribution and start any composites it contains they you can unit test your contributions. This directory contains a contribution and a unit test which installs the contribution using very similar code to that found in embedded-jse.</P> + +<P>To run the contributions unit test do the following:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd maven-junit/calculator-contribution +mvn +</PRE> +</DIV></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-mavenjunitosgi"></A>maven-junit-osgi</H3> + +<P>You can use a special Tuscany Maven plugin (maven-osgi-junit-plugin) to unit test contributions in a JUnit environment. This relies on adding some configuration to the Maven pom.xml. For example, if you look in maven-junit-osgi/calculator-osgi you'll see:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <plugin> + <groupId>org.apache.tuscany.maven.plugins</groupId> + <artifactId>maven-osgi-junit-plugin</artifactId> + <version>1.0</version> + <dependencies> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-node-launcher-equinox</artifactId> + <version>${pom.version}</version> + </dependency> + </dependencies> + <executions> + <execution> + <id>osgi-test</id> + <phase>test</phase> + <goals> + <goal>test</goal> + </goals> + <configuration> + <systemProperties> + <property> + <name>osgi.configuration.area</name> + <value>${project.build.directory}/equinox</value> + </property> + </systemProperties> + </configuration> + </execution> + </executions> + </plugin> +</PRE> +</DIV></DIV> + +<P>This configures the maven-osgi-junit-plugin to use the tuscany-node-launcher-equinox to install the contribution represented by the calculator-osgi directory. As an alternative to this configuration you could use the contents of tuscany-node-launcher-equinox directly in your JUnit test to launch the Tuscany runtime using OSGi.</P> + +<P>To run the contributions unit test do the following:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd maven-junit/calculator-contribution +mvn +</PRE> +</DIV></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-osgi"></A>osgi</H3> + +<P>The Tuscany runtime can be run in a vanilla OSGi container such as Equinox. To do this you have to:</P> + +<UL class="alternate" type="square"> + <LI>launch the OSGi container itself</LI> + <LI>load the Tuscany runtime bundles (all our jars are bundles) into the container</LI> + <LI>install a contribution packaged as an OSGi bundle</LI> +</UL> + + +<P>For example, to install a contribution in Equinox do the following</P> + +<P>On Windows, run</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +java -jar ..\..\..\modules\osgi-3.5.0-v20090520.jar -configuration ..\..\..\features\configuration -clean -console +</PRE> +</DIV></DIV> + +<P>On *Unix, run</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +java -jar ../../../modules/osgi-3.5.0-v20090520.jar -configuration ../../../features/configuration -clean -console +</PRE> +</DIV></DIV> + +<P>You should see the osgi console:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +osgi> + +osgi> Jun 22, 2009 1:32:27 PM org.apache.tuscany.sca.extensibility.equinox.EquinoxServiceDiscoveryActivator start + +INFO: Equinox-based service discoverer is now configured. + +</PRE> +</DIV></DIV> + +<P>You can run "ss" command under the osgi> to see the status of the bundles.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +osgi> ss +</PRE> +</DIV></DIV> + +<P>Then you can install and start contributions as bundles by doing the following:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +osgi> install file:./path/to/<contribution_bundle.jar> +</PRE> +</DIV></DIV> + +<P>Note that <contribution_bundle.jar> will need an activator in order to register the bundle as a SCA contribution</P> + +<P>Running on Felix</P> + +<P>See <A href="http://tuscany.apache.org/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.html" class="external-link" rel="nofollow">http://tuscany.apache.org/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.html</A></P> + + +<H3><A name="2.0-beta-Samplesdocumentation-shell"></A>shell</H3> + +<P>This directory contains a sample shell program supporting simple commands to start and stop SCA composites.</P> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR>We currently have two similar approaches available (see command-line). We need to merge the two together.</TD></TR></TABLE></DIV> + +<P>To build the sample shell do this:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +mvn install +</PRE> +</DIV></DIV> +<P>To run it:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +./sca +</PRE> +</DIV></DIV> + +<P>at the prompt:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +start myNode ../../applications/store/target/sample-store.jar +</PRE> +</DIV></DIV> +<P>or:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +start myNode http:<SPAN class="code-comment">//people.apache.org/~jsdelfino/tuscany/java/test/sample-store.jar</SPAN> +</PRE> +</DIV></DIV> +<P>also try:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +status +stop myNode +bye +</PRE> +</DIV></DIV> +<P>Starting and stopping composites is pretty fast. To see that, try the following<BR> +two scripts, which start/stop the sample store composite 10 times.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +./sca <scripts/test.txt +</PRE> +</DIV></DIV> +<P>or</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +./sca <scripts/test-remote.txt +</PRE> +</DIV></DIV> + +<P>The shell can also run as a Webapp. To try it install target/scashell.war in<BR> +a Web container, point your Web browser to <A href="http://localhost:8080/scashell" class="external-link" rel="nofollow">http://localhost:8080/scashell</A><BR> +and try the links on that page.</P> + +<H3><A name="2.0-beta-Samplesdocumentation-webapp"></A>webapp</H3> + +<P>Tuscany can be embedded inside a webapp alongside one or more SCA contributions. To execute sample webapp based contributions (contributions that have webapp at the end of their name) you can build the contribution using maven and then copy the resulting war file to your container of choice</P> + +<P>For example, for binding-jsonrpc/contribution-calculator-webapp, do the following:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd samples/binding-jsonrpc/contribution-calculator-webapp +mvn +cp target/sample-contribution-binding-jsonrpc-calculator-webapp.war <your_container_deployment-dir> +</PRE> +</DIV></DIV> + +<P>As an alternative, sample webapp based contributions can be run within Jetty directly from Maven, look for webapp contributions that have the following configuration in their pom.xml file:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<plugin> + <groupId>org.mortbay.jetty</groupId> + <artifactId>maven-jetty-plugin</artifactId> + <version>6.1.18</version> +</plugin> +</PRE> +</DIV></DIV> + +<P>For contributions that have this, for example, binding-jsonrpc/contribution-calculator-webapp, do the following</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd samples/binding-sca/contribution-calculator +mvn jetty:run +</PRE> +</DIV></DIV> + +<P>This will launch the contribution in the Jetty runtime and then wait. At this point you can use HTTP clients to send messages to services that the running SCA applcation exposes. For this example try pointing your browser at:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +http:<SPAN class="code-comment">//localhost:8080/sample-binding-jsonrpc-calculator-webapp/</SPAN> +</PRE> +</DIV></DIV> + +<H2><A name="2.0-beta-Samplesdocumentation-extendingtuscany"></A>extending-tuscany</H2> + +<H3><A name="2.0-beta-Samplesdocumentation-bindingextension"></A>binding-extension</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-implementationextension"></A>implementation-extension</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H2><A name="2.0-beta-Samplesdocumentation-applications"></A>applications</H2> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-store"></A>store</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H3><A name="2.0-beta-Samplesdocumentation-storewebapp"></A>store-webapp</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : 2.0- beta- Samples documentation'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/20-release-notes.html b/site/trunk/site-publish/documentation-2x/20-release-notes.html new file mode 100644 index 0000000000..fa3d9b1da2 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/20-release-notes.html @@ -0,0 +1,281 @@ + + + + + + + + + + + + + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + + <LINK rel="SHORTCUT ICON" href="http://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + + <TITLE>2.0 Release Notes : Apache Tuscany</TITLE> + + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + + + <BODY onload="init()"> + + + + + <TABLE valign="top" border="0" cellspacing="0" cellpadding="0" width="100%" background="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg"> + + <TR> + + <TD valing="top" align="left"> + + <A href="http://cwiki.apache.org/confluence/pages/viewpage.action?spaceKey=TUSCANYxDOCx2x&title=$siteroot"><IMG src="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg" height="91" width="25" border="0"></A> + + </TD> + + <TD> + + <A href="http://tuscany.apache.org/"><IMG src="http://tuscany.apache.org/images/TuscanyLogo.jpg" border="0"></A> + + </TD> + + + + <TD width="100%"> + + + + </TD> + + <!--td align="right"> + + <img src="http://incubator.apache.org/tuscany/images/apache- incubator- logo.png" border="0"> + + </td--> + + + + <!-- Adds the edit page link to the top banner--> + + <TD valign="bottom"> + + <DIV style="padding: 2px 10px; margin: 0px;"> + + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=108928"> + + <IMG src="http://tuscany.apache.org/images/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + + </DIV> + + </TD> + + + + </TR> + + </TABLE> + + + + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + + <TR class="topBar"> + + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="" title="2.0 Release Notes">2.0 Release Notes</A> + + </TD> + + + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + + <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + + </TD> + + </TR> + + </TABLE> + + + + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + + <TR> + + <TD align="left" valign="top"> + + + <DIV id="PageContent"> + + + + + <DIV class="pagecontent"> + + <DIV class="wiki-content"> + + <H3><A name="2.0ReleaseNotes-2.0ReleaseNotes"></A>2.0 Release Notes</H3> + +<P>The OASIS SCA specification are going to be released around June/July 2009 so we're <A href="http://apache.markmail.org/message/2nvxv4xlrkva6jku" rel="nofollow">planning </A> on having a 2.0 release ready at the same time. To help work out what we need to do this is a draft of the release notes:</P> + +<P>Apache Tuscany SCA 2.0 June 2009 Release Notes<BR> +==============================================</P> + +<P>Apache Tuscany provides a runtime based on the Service Component<BR> +Architecture. SCA is a set of specifications aimed at simplifying SOA<BR> +Application Development which are being standardized at OASIS as part<BR> +of Open Composite Services Architecture (Open CSA) - <A href="http://www.oasis-opencsa.org/" rel="nofollow">http://www.oasis-opencsa.org/</A>.</P> + +<P>Overview<BR> +--------</P> + +<P> The Apache Tuscany SCA 2.0 release includes implementations of the<BR> + main SCA specifications including:</P> + +<P> SCA Assembly Model V1.1<BR> + SCA Policy Framework V1.1<BR> + SCA Java Common Annotations and APIs V1.1<BR> + SCA Java Component Implementation V1.1<BR> + SCA Spring Component Implementation V1.1<BR> + SCA BPEL Client and Implementation V1.1<BR> + SCA JMS Binding Specification V1.1<BR> + SCA Web Services Binding V1.1<BR> + SCA EJB Session Bean Binding V1.1<BR> + SCA Java EE Integration Specification V1.1</P> + +<P> It also includes implementations of many features not yet defined<BR> + by SCA specifications, including:</P> + +<UL class="alternate" type="square"> + <LI>SCA bindings for CORBA, Direct Web Remoting, RSS and ATOM Feeds,<BR> + HTTP resources, JSONP, JSON-RPC, Hessian, and RMI.</LI> + <LI>SCA implementation types for OSGI, XQuery, and various dynamic<BR> + languages including Groovy, Javascript, Python and Ruby</LI> + <LI>Databindings for Service Data Objects (SDO), JAXB, XmlBeans,<BR> + Axis2's AXIOM, JSON, SAXON, XStream, DOM, SAX and StAX</LI> +</UL> + + +<P> The Tuscany SCA Runtime can be configured as a single node SCA domain or <BR> + as an SCA domain distributed across multiple nodes. <BR> + In addition Tuscany SCA supports the following host-deployment options: -</P> +<UL class="alternate" type="square"> + <LI>running standalone in JSE or OSGi</LI> + <LI>running with distributed nodes across multiple JVMs</LI> + <LI>running with embedded Jetty or Tomcat</LI> + <LI>running as a standard web application</LI> + <LI>running as a module in Geronimo</LI> +</UL> + + +<P>See the CHANGES file for a detailed list of the features in this release.</P> + +<P>Support<BR> +-------</P> + +<P>For more information on Apache Tuscany visit the website at:</P> + +<P> <A href="http://tuscany.apache.org/" rel="nofollow">http://tuscany.apache.org/</A></P> + +<P>Any issues with this release can be reported to Apache Tuscany<BR> +using the mailing lists or in the JIRA issue tracker.</P> + +<P> Mailing list archives:</P> + +<P> <A href="http://mail-archives.apache.org/mod_mbox/ws-tuscany-user/" rel="nofollow">http://mail-archives.apache.org/mod_mbox/ws-tuscany-user/</A><BR> + <A href="http://mail-archives.apache.org/mod_mbox/ws-tuscany-dev/" rel="nofollow">http://mail-archives.apache.org/mod_mbox/ws-tuscany-dev/</A></P> + +<P> Jira:</P> + +<P> <A href="http://issues.apache.org/jira/browse/TUSCANY" rel="nofollow">http://issues.apache.org/jira/browse/TUSCANY</A></P> + +<P>To join the project's mailing lists follow the instructions at:</P> + +<P> <A href="http://tuscany.apache.org/mailing-lists.html" rel="nofollow">http://tuscany.apache.org/mailing-lists.html</A></P> + +<P>To find out more about OASIS Open CSA go to: </P> + +<P> <A href="http://www.oasis-opencsa.org/" rel="nofollow">http://www.oasis-opencsa.org</A>.</P> + +<P>Apache Tuscany welcomes your help. Any contribution, including code,<BR> +testing, improving the documentation, or bug reporting is always<BR> +appreciated. </P> + +<P>Thank you for using Apache Tuscany!</P> + +<UL class="alternate" type="square"> + <LI>The Tuscany Team.</LI> +</UL> + + + </DIV> + + </DIV> + + </DIV> + + + </TD> + + </TR> + + </TABLE> + + + + + + <SCRIPT src="http://www.google-analytics.com/urchin.js" type="text/javascript"> + + </SCRIPT> + + <SCRIPT type="text/javascript"> + + _uacct = "UA-1174707-5"; + + urchinTracker(); + + </SCRIPT> + + + + + <A href="http://www.statcounter.com/" target="_blank"><IMG src="http://c26.statcounter.com/counter.php?sc_project=2619156&java=0&security=94bd7e7d&invisible=0" alt="website stats" border="0"></A> + + + + <DIV class="footer"> + + Copyright © 2003-2008, The Apache Software Foundation + + </DIV> + + + + + </BODY> + +</HTML> diff --git a/site/trunk/site-publish/documentation-2x/classloading.html b/site/trunk/site-publish/documentation-2x/classloading.html new file mode 100644 index 0000000000..aa51c96265 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/classloading.html @@ -0,0 +1,351 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Classloading : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="sca-java-runtime-overview.html" title="SCA Java Runtime Overview">SCA Java Runtime Overview</A> > <A href="" title="Classloading">Classloading</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="sca-java-runtime-overview.html" title="SCA Java Runtime Overview">SCA Java Runtime Overview</A> > <A href="" title="Classloading">Classloading</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Classloading</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=20644728"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=20644728">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=20644728"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=20644728">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=20644728"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=20644728">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <P>Need to detail the various ways the Tuscany runtime loads classes and the issues involved. Here are some notes to kick of this document</P> + +<H1><A name="Classloading-ClassloadingObjectives"></A>Classloading Objectives</H1> + +<P>The runtime must work in both OSGi and non-OSGI environments. I.e. we can't rely on the OSGi service registry for extensibility<BR> +The runtime must not be generally environment specific. I.e. no buddy classloading<BR> +...</P> + +<H1><A name="Classloading-GeneralPatterns"></A>General Patterns</H1> + +<H2><A name="Classloading-ExtensionloadingJSE"></A>Extension loading - JSE</H2> + +<P>tuscany-extensibility<BR> +Tuscany finds extensions by looking for META-INF/services files on the classpath.</P> + +<H2><A name="Classloading-ExtensionloadingOSGi"></A>Extension loading - OSGi</H2> + +<P>tuscany-extensibility-equinox<BR> +It's a bit more complicated here. The extensibility-equinox bundle is given the entire OSGi context at start up and from there is looks in all of the loaded bundles looking for META-INF/services files. It caches them against the bundle in which they are found.</P> + +<P>The tuscany-extensibility-equinox bundle also has a dynamic import</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +DynamicImport-Package: org.apache.tuscany.sca.extensibility.equinox, + javax.transaction;version=<SPAN class="code-quote">"1.1"</SPAN>, + javax.transaction.xa;version=<SPAN class="code-quote">"1.1"</SPAN>, +</PRE> +</DIV></DIV> + +<P>Which allows it to generally load any classes in the runtime</P> + +<H2><A name="Classloading-SplitPackagesJSE"></A>Split Packages - JSE</H2> + +<P>We don't take any special account of this in JSE <IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/help_16.gif" height="16" width="16" align="absmiddle" alt="" border="0"><BR> +We avoid split packages across the JARs we create as it messes OSGi up.</P> + +<H2><A name="Classloading-SplitPackagesOSGI"></A>Split Packages - OSGI</H2> + +<P>We avoid split packages across the bundles we create<BR> +They may exist in third party bundles (or jars that we turn into bundles) so we need a way round it</P> + +<P>The Tuscany eclipse plugin is used to generate bundles manifest for jars which don't have them. This is done automatically with all packages exported <IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/help_16.gif" height="16" width="16" align="absmiddle" alt="" border="0"> and the resulting bundle it in the distribution modules directory in the following form</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +bundle-name + META-INF + MANIFEST.MF + bundle-name.jar +</PRE> +</DIV></DIV> + +<P>The MANIFEST.MF is generated and will have a bundle classpath pointing to the jar (which doesn't itself have a manifest</P> + +<P>The runtime (node-launcher-equinox) has code to load these directories as bundles.</P> + +<P>There is a way of overriding these automatically generated bundles so that split packages (or any other manifest problems) can be worked round. Generate the manifest manually and put it in</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +distribution/all/manifests +</PRE> +</DIV></DIV> + +<P>Update distribution/pom.xml to configure the Tuscany version of the maven bundle plugin to apply this manifest</P> + +<DIV class="preformatted panel" style="border-width: 1px;"><DIV class="preformattedContent panelContent"> +<PRE> <plugin> + <groupId>org.apache.tuscany.maven.plugins</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <version>1.0.6</version> + <executions> + <execution> + <id>distribution-modules</id> + <phase>generate-resources</phase> + <goals> + <goal>generate-modules</goal> + </goals> + <configuration> + <targetDirectory>target/modules</targetDirectory> + <useDistributionName>${useDistributionName}</useDistributionName> + <generateAggregatedBundle>${generateAggregatedBundle}</generateAggregatedBundle> + <generateManifestJar>true</generateManifestJar> + <artifactManifests> + <artifactManifest> + <groupId>org.apache.ws.commons.axiom</groupId> + <artifactId>axiom-api</artifactId> + <version>1.2.8</version> + <manifestFile>${basedir}/manifests/axiom-api-1.2.8.MF</manifestFile> + </artifactManifest> + <artifactManifest> + <groupId>org.apache.woden</groupId> + <artifactId>woden-impl-dom</artifactId> + <version>1.0M8</version> + <manifestFile>${basedir}/manifests/woden-impl-dom-1.0M8.MF</manifestFile> + </artifactManifest> + <!--artifactManifest> + <groupId>org.apache.tuscany.sdo</groupId> + <artifactId>tuscany-sdo-api-r2.1</artifactId> + <version>1.1.1</version> + <manifestFile>${basedir}/manifests/tuscany-sdo-api-r2.1-1.1.1.MF</manifestFile> + </artifactManifest--> + <!-- artifactAggregations (below) is the right approach to solving the split + package between axis-kernel and axis2-transport-http however the Tuscany + runtime doesn't take any notice of it so using a fragment at the moment --> + <artifactManifest> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2-kernel</artifactId> + <version>1.5.1</version> + <manifestFile>${basedir}/manifests/axis2-kernel-1.5.1.MF</manifestFile> + </artifactManifest> + <artifactManifest> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2-transport-http</artifactId> + <version>1.5.1</version> + <manifestFile>${basedir}/manifests/axis2-transport-http-1.5.1.MF</manifestFile> + </artifactManifest> + <artifactManifest> + <groupId>org.apache.axis2</groupId> + <artifactId>*</artifactId> + <version>*</version> + </artifactManifest> + </artifactManifests> + <!--artifactAggregations> + <artifactAggregation> + <symbolicName>org.apache.tuscany.sca.axis2-kernel</symbolicName> + <version>1.5.1</version> + <artifactMembers> + <artifactMember> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2-kernel</artifactId> + <version>1.5.1</version> + </artifactMember> + <artifactMember> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2-transport-http</artifactId> + <version>1.5.1</version> + </artifactMember> + </artifactMembers> + </artifactAggregation> + </artifactAggregations--> + </configuration> + </execution> + </executions> + <dependencies> + <dependency> + <groupId>org.eclipse</groupId> + <artifactId>osgi</artifactId> + <version>3.3.0-v20070530</version> + </dependency> + </dependencies> + </plugin> +</PRE> +</DIV></DIV> + +<P>You'll note that there is an artifact aggregation element that doesn't work at the moment. This should aggregate the two bundles together so that a split package isn't an issue. As this doesn't work at the moment another way to achieve the same result is to make one package a fragement of the other by configuring separate manifests manually.</P> + +<P>NOTE!!!!! you also need to put the manually generated manifest in node-launcher-equinox\src\main\resources\org\apache\tuscany\sca\node\equinox\launcher otherwise you'll spend a lot of time trying to get this to work. (we need to fix this!)</P> + +<H2><A name="Classloading-ThirdpartylibrariesJSE"></A>Third-party libraries - JSE</H2> + +<P>TBD</P> + +<H2><A name="Classloading-ThirdpartylibrariesOSGI"></A>Third-party libraries - OSGI</H2> + +<P>Third-party libraries often rely on TCCL to load implementation classes in an extensible way. For example, the SDO API loads the HelperContext implementation in this way. In an OSGi environment there will not be a static dependency between the api bundle and the impl bundle so we need to fake it. Typically we do this by setting up the TCCL appropriately before the library us called.</P> + +<P>See ClassLoaderContext which help us to set up a multi-classloader configurations.</P> + +<P>Typically in OSGi one of the classloaders we pass in here will be the extensibiliy-equinox bundle classloader (the ServiceDiscoverer) as this bundles has a dynamic import which allows it to load any class in the runtime.</P> + + +<H2><A name="Classloading-TuscanyNodeAPIJSE"></A>Tuscany Node API - JSE</H2> + +<P>TBD</P> + +<H2><A name="Classloading-TuscanyNodeAPIOSGi"></A>Tuscany Node API - OSGi</H2> + +<P>There are a small number of Tuscany Jars you need to use in the app launcher in the OSGi environment</P> + +<P>tuscany-sca-api<BR> +tuscany-node-api<BR> +tuscany-node-launcher-equinox</P> + +<P>The node API has to load the node implementation and has a dynamic import in its manifest</P> + +<P>DynamicImport-Package: org.apache.tuscany.sca.node.impl,org.apache.tuscany.sca.extensibility</P> + + + +<H2><A name="Classloading-SCAClientAPIJSE"></A>SCA Client API - JSE</H2> + +<P>Factory finder impl is injected into the API class by the implementation</P> + +<H2><A name="Classloading-SCAClientAPIOSGi"></A>SCA Client API - OSGi</H2> + +<P>NodeFactory maintains a NodeProxy inner class that supports cross-classloader calls. The calling client api will have been loaded by the app classloader but the underlying node will have been loaded by a bundle classloader. We need to bridge that gap.</P> + +<H2><A name="Classloading-%23ContributionClassLoading"></A><A href="#Classloading-Contribution">Contribution</A> Class Loading </H2> + +<P>When a contribution is read, containing an implementation.java element, a ClassReference is instantiated, which contains the name of the class. ClassReference instances are resolved by a ClassLoaderModelResolver, by virtue of the entry in [2]</P> + +<P>The ClassLoaderModelResolver (CLMR) specializes java.net.URL.URLClassLoader and implements o.a.t.s....ModelResolver. Each contribution is associated with a single CLMR . On construction the CLMR is endowed with a set of URLs that allow it to find all classes in its contribution via the URLClassLoader behaviour.</P> + +<P>The itest project <EM>import-export-tests</EM> has a class TestTestCase with method testOneNode which demonstrates a more complex scenario where a cross contribution import/export of a java package exists between the contributions. In this example a node is created using 2 composite URIs for contributions ... "../exports/target/classes", "../imports/target/classes". An imported class is resolved using the CLMR of the exporting contribution. The exporter's CLMR is made available to the importing CLMR by deployment [1] code which traverses all contributions, identifying cross contribution dependencies (see buildDependencies at [1]) and using the set of remaining contributions to resolve the import, potentially more than once.</P> + +<P>[<A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=1&linkCreation=true&fromPageId=20644728" class="createlink">1</A>] <A href="http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java?view=markup&pathrev=948564" class="external-link" rel="nofollow">http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java?view=markup&pathrev=948564</A>|http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java?view=markup&pathrev=948564]</P> + +<P>[2] <A href="http://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/contribution/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.resolver.ModelResolver" class="external-link" rel="nofollow">http://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/contribution/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.resolver.ModelResolver</A></P> + + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Classloading'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/converting-tuscany-1x-applications.html b/site/trunk/site-publish/documentation-2x/converting-tuscany-1x-applications.html new file mode 100644 index 0000000000..2540d77245 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/converting-tuscany-1x-applications.html @@ -0,0 +1,226 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Converting Tuscany 1.x Applications : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="Converting Tuscany 1.x Applications">Converting Tuscany 1.x Applications</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="Converting Tuscany 1.x Applications">Converting Tuscany 1.x Applications</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Converting Tuscany 1.x Applications</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=23336783"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=23336783">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=23336783"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=23336783">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=23336783"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=23336783">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" height="16" width="16" align="absmiddle" alt="" border="0"> under construction</P> +<H1><A name="ConvertingTuscany1.xApplications-Overview"></A>Overview</H1> +<P>There are not huge differences in the SCA that Tuscany 1.x implements (OSOA v1.0) and the SCA that Tuscany 2.x implements (OASIS v1.1). However there are detailed differences that you need to be aware of in SCA and in the Tuscany runtime in order to get your 1.x application to work in 2.x. </P> + +<H1><A name="ConvertingTuscany1.xApplications-ConvertingcompositesandotherSCAXMLartifacts"></A>Converting composites and other SCA XML artifacts</H1> +<H2><A name="ConvertingTuscany1.xApplications-Namespaces"></A>Namespaces</H2> +<P>The SCA and Tuscany namespaces may be used in the following files</P> + +<UL class="alternate" type="square"> + <LI>*.composite</LI> + <LI>sca-contribution.xml</LI> + <LI>defintions.xml</LI> +</UL> + + +<P>Each occurrence needs changing for 2.x </P> + +<DIV class="table-wrap"> +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> 1.x Namespace</TH> +<TH class="confluenceTh"> </TH> +<TH class="confluenceTh"> 2.x Namespace </TH> +</TR> +<TR> +<TD class="confluenceTd"> <A href="http://www.osoa.org/xmlns/sca/1.0" class="external-link" rel="nofollow">http://www.osoa.org/xmlns/sca/1.0</A> </TD> +<TD class="confluenceTd"> ===> </TD> +<TD class="confluenceTd"> <A href="http://docs.oasis-open.org/ns/opencsa/sca/200912" class="external-link" rel="nofollow">http://docs.oasis-open.org/ns/opencsa/sca/200912</A> </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="http://tuscany.apache.org/xmlns/sca/1.0" class="external-link" rel="nofollow">http://tuscany.apache.org/xmlns/sca/1.0</A> </TD> +<TD class="confluenceTd"> ===> </TD> +<TD class="confluenceTd"> <A href="http://tuscany.apache.org/xmlns/sca/1.1" class="external-link" rel="nofollow">http://tuscany.apache.org/xmlns/sca/1.1</A> </TD> +</TR> +</TBODY></TABLE> +</DIV> + + +<H1><A name="ConvertingTuscany1.xApplications-Features"></A>Features</H1> +<H2><A name="ConvertingTuscany1.xApplications-Featuresthatarein1.xbutnotin2.x"></A>Features that are in 1.x but not in 2.x</H2> + +<UL class="alternate" type="square"> + <LI>Support for conversational interfaces<BR> +-</LI> +</UL> + + +<H2><A name="ConvertingTuscany1.xApplications-Featuresthatarein2.xbutnotin1.x"></A>Features that are in 2.x but not in 1.x</H2> + +<UL class="alternate" type="square"> + <LI>Asynchronous reference and service APIs</LI> + <LI></LI> +</UL> + + +<H1><A name="ConvertingTuscany1.xApplications-Buildingandlaunchingcontributions"></A>Building and launching contributions</H1> +<H2><A name="ConvertingTuscany1.xApplications-Convertingdependencies"></A>Converting dependencies</H2> + +<P>You need to re-configure the project pom.xml</P> + +<DIV class="table-wrap"> +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> 1.x Dependencies </TH> +<TH class="confluenceTh"> </TH> +<TH class="confluenceTh"> 2.x Dependencies </TH> +</TR> +<TR> +<TD class="confluenceTd"> <dependency> <BR class="atl-forced-newline"> +<groupId>org.apache.tuscany.sca</groupId> <BR class="atl-forced-newline"> +<artifactId>tuscany-assembly</artifactId> <BR class="atl-forced-newline"> +<version>1.6-SNAPSHOT</version> <BR class="atl-forced-newline"> +</dependency> </TD> +<TD class="confluenceTd"> ===> </TD> +<TD class="confluenceTd"> <dependency> <BR class="atl-forced-newline"> +<groupId>org.apache.tuscany.sca</groupId> <BR class="atl-forced-newline"> +<artifactId>tuscany-assembly</artifactId> <BR class="atl-forced-newline"> +<version>2.0-SNAPSHOT</version> <BR class="atl-forced-newline"> +</dependency> </TD> +</TR> +</TBODY></TABLE> +</DIV> + + +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" height="16" width="16" align="absmiddle" alt="" border="0"> TODO - need to note what the final Tuscany feature grouping solution is for 2.x</P> + + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Converting Tuscany 1.x Applications'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/converting-tuscany-1x-extensions.html b/site/trunk/site-publish/documentation-2x/converting-tuscany-1x-extensions.html new file mode 100644 index 0000000000..152bf98fdc --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/converting-tuscany-1x-extensions.html @@ -0,0 +1,486 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Converting Tuscany 1.x Extensions : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="Converting Tuscany 1.x Extensions">Converting Tuscany 1.x Extensions</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="Converting Tuscany 1.x Extensions">Converting Tuscany 1.x Extensions</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Converting Tuscany 1.x Extensions</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=3475132"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=3475132">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=3475132"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=3475132">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=3475132"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=3475132">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H1><A name="ConvertingTuscany1.xExtensions-Converting1.xdependencies"></A>Converting 1.x dependencies</H1> + +<P>You should configure the project pom.xml and</P> + +<DIV class="table-wrap"> +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> 1.x Dependencies </TH> +<TH class="confluenceTh"> </TH> +<TH class="confluenceTh"> 2.x Dependencies </TH> +</TR> +<TR> +<TD class="confluenceTd"> <dependency> <BR class="atl-forced-newline"> +<groupId>org.apache.tuscany.sca</groupId> <BR class="atl-forced-newline"> +<artifactId>tuscany-assembly</artifactId> <BR class="atl-forced-newline"> +<version>1.6-SNAPSHOT</version> <BR class="atl-forced-newline"> +</dependency> </TD> +<TD class="confluenceTd"> ===> </TD> +<TD class="confluenceTd"> <dependency> <BR class="atl-forced-newline"> +<groupId>org.apache.tuscany.sca</groupId> <BR class="atl-forced-newline"> +<artifactId>tuscany-assembly</artifactId> <BR class="atl-forced-newline"> +<version>2.0-SNAPSHOT</version> <BR class="atl-forced-newline"> +</dependency> </TD> +</TR> +</TBODY></TABLE> +</DIV> + + +<P>The following core modules are not ported yet :</P> + +<UL> + <LI>some policies</LI> +</UL> + + +<P>The following modules are deprecated :</P> + +<UL> + <LI>host-embedded + <UL> + <LI>use the new Node APIs</LI> + </UL> + </LI> +</UL> + + +<H1><A name="ConvertingTuscany1.xExtensions-ConvertingCompositesandotherSCAXMLArtifacts"></A>Converting Composites and other SCA XML Artifacts</H1> + +<DIV class="table-wrap"> +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> 1.x Namespace</TH> +<TH class="confluenceTh"> </TH> +<TH class="confluenceTh"> 2.x Namespace </TH> +</TR> +<TR> +<TD class="confluenceTd"> <A href="http://www.osoa.org/xmlns/sca/1.0" class="external-link" rel="nofollow">http://www.osoa.org/xmlns/sca/1.0</A> </TD> +<TD class="confluenceTd"> ===> </TD> +<TD class="confluenceTd"> <A href="http://docs.oasis-open.org/ns/opencsa/sca/200912" class="external-link" rel="nofollow">http://docs.oasis-open.org/ns/opencsa/sca/200912</A> </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="http://tuscany.apache.org/xmlns/sca/1.0" class="external-link" rel="nofollow">http://tuscany.apache.org/xmlns/sca/1.0</A> </TD> +<TD class="confluenceTd"> ===> </TD> +<TD class="confluenceTd"> <A href="http://tuscany.apache.org/xmlns/sca/1.1" class="external-link" rel="nofollow">http://tuscany.apache.org/xmlns/sca/1.1</A> </TD> +</TR> +</TBODY></TABLE> +</DIV> + + +<H1><A name="ConvertingTuscany1.xExtensions-GeneratingOSGiManifest"></A>Generating OSGi Manifest</H1> + +<P>Configure pom to use Apache Felix <A href="http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html" class="external-link" rel="nofollow">maven-bundle-plugin</A></P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <build> + <plugins> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + + <configuration> + <instructions> + <Bundle-Version>${tuscany.version}</Bundle-Version> + <Bundle-SymbolicName>org.apache.tuscany.sca.binding.atom</Bundle-SymbolicName> + <Bundle-Description>${pom.name}</Bundle-Description> + <Export-Package>org.apache.tuscany.sca.binding.atom*</Export-Package> + <Import-Package>org.apache.tuscany.sca.assembly.xml;version=<SPAN class="code-quote">"2.0.0"</SPAN>, *</Import-Package> + </instructions> + </configuration> + </plugin> + </plugins> + </build> + +</PRE> +</DIV></DIV> + +<P>Generate the manifest</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +mvn org.apache.felix:maven-bundle-plugin:manifest +</PRE> +</DIV></DIV> + +<P>Copy the generated manifest from target folder to</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<module-root>/META_INF/manifest.mf +</PRE> +</DIV></DIV> + +<P>Add manifest to source control</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +git add META-INF +or +svn add META-INF +</PRE> +</DIV></DIV> + +<P>Make any manual modifications as necessary</P> + +<H1><A name="ConvertingTuscany1.xExtensions-Convertingyourextensionmodel"></A>Converting your extension model</H1> + +<P>Your extension model needs to provide a new getType method</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">interface</SPAN> AtomCBinding <SPAN class="code-keyword">extends</SPAN> Binding { + QName TYPE = <SPAN class="code-keyword">new</SPAN> QName(SCA11_TUSCANY_NS, <SPAN class="code-quote">"binding.atom"</SPAN>); + ... +} + +<SPAN class="code-keyword">public</SPAN> class AtomBindingImpl <SPAN class="code-keyword">implements</SPAN> AtomBinding { + <SPAN class="code-keyword">private</SPAN> <SPAN class="code-object">String</SPAN> name; + <SPAN class="code-keyword">private</SPAN> <SPAN class="code-object">String</SPAN> uri; + + <SPAN class="code-keyword">public</SPAN> QName getType() { + <SPAN class="code-keyword">return</SPAN> TYPE; + } + + ... +} +</PRE> +</DIV></DIV> + +<H1><A name="ConvertingTuscany1.xExtensions-ConvertingArtifactProcessors"></A>Converting Artifact Processors</H1> + +<P>Make sure you update your META-INF\services\org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor with new namespace and any other necessary changes to reflect the current 2.x structure.</P> + +<H1><A name="ConvertingTuscany1.xExtensions-ConvertingyouBindingruntimeartifacts"></A>Converting you Binding runtime artifacts</H1> + +<H3><A name="ConvertingTuscany1.xExtensions-ProviderFactory"></A>Provider Factory</H3> + +<UL> + <LI>The provider factory interface has changed to accommodate the new Endpoint/EndPointReference support + <UL> + <LI>Although the interface has changed, all the previous available information are encapsulated and available from the Endpoint and EndpointReference object</LI> + </UL> + </LI> +</UL> + + + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">interface</SPAN> BindingProviderFactory<M <SPAN class="code-keyword">extends</SPAN> Binding> <SPAN class="code-keyword">extends</SPAN> ProviderFactory<M> { + + /** + * Creates a <SPAN class="code-keyword">new</SPAN> reference binding provider <SPAN class="code-keyword">for</SPAN> the given endpoint reference + * + * @param endpointReference defines the component/reference/binding against which to create the provider + * @<SPAN class="code-keyword">return</SPAN> The binding provider + */ + ReferenceBindingProvider createReferenceBindingProvider(EndpointReference endpointReference); + + /** + * Creates a <SPAN class="code-keyword">new</SPAN> service binding provider <SPAN class="code-keyword">for</SPAN> the given component and + * service. + * + * @param endpoint defines the component/service/binding against which to create the provider + * @<SPAN class="code-keyword">return</SPAN> The binding provider + */ + ServiceBindingProvider createServiceBindingProvider(Endpoint endpoint); + +} +</PRE> +</DIV></DIV> + +<UL> + <LI>If you are using ModelFactoryExtensionPoint, it was renamed to FactoryExtensionPoint</LI> +</UL> + + + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +FactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(FactoryExtensionPoint.class); +</PRE> +</DIV></DIV> + + +<H3><A name="ConvertingTuscany1.xExtensions-ReferenceBindingProviderandServiceBindingProvider"></A>ReferenceBindingProvider and ServiceBindingProvider</H3> + +<P>The previous SCA Models that were previously passed directly to these SPIs, is now available via Endpoint and EndpointReference as described in the code below:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">public</SPAN> class AtomReferenceBindingProvider <SPAN class="code-keyword">implements</SPAN> ReferenceBindingProvider { + + <SPAN class="code-keyword">private</SPAN> RuntimeComponentReference reference; + <SPAN class="code-keyword">private</SPAN> AtomBinding binding; + + <SPAN class="code-keyword">public</SPAN> AtomReferenceBindingProvider(EndpointReference endpointReference, + AtomBinding binding) { + + <SPAN class="code-keyword">this</SPAN>.reference = (RuntimeComponentReference) endpointReference.getReference(); + <SPAN class="code-keyword">this</SPAN>.binding = (AtomBinding) endpointReference.getBinding(); + } + + ... +} + +<SPAN class="code-keyword">public</SPAN> class AtomServiceBindingProvider <SPAN class="code-keyword">implements</SPAN> ServiceBindingProvider { + + + <SPAN class="code-keyword">private</SPAN> MessageFactory messageFactory; + + <SPAN class="code-keyword">private</SPAN> Endpoint endpoint; + <SPAN class="code-keyword">private</SPAN> RuntimeComponent component; + <SPAN class="code-keyword">private</SPAN> RuntimeComponentService service; + <SPAN class="code-keyword">private</SPAN> InterfaceContract serviceContract; + <SPAN class="code-keyword">private</SPAN> AtomBinding binding; + <SPAN class="code-keyword">private</SPAN> ServletHost servletHost; + + ... + + <SPAN class="code-keyword">public</SPAN> AtomServiceBindingProvider(Endpoint endpoint, + MessageFactory messageFactory, + ServletHost servletHost) { + <SPAN class="code-keyword">this</SPAN>.endpoint = endpoint; + <SPAN class="code-keyword">this</SPAN>.component = (RuntimeComponent)endpoint.getComponent(); + <SPAN class="code-keyword">this</SPAN>.service = (RuntimeComponentService)endpoint.getService(); + <SPAN class="code-keyword">this</SPAN>.binding = (AtomBinding) endpoint.getBinding(); + <SPAN class="code-keyword">this</SPAN>.messageFactory = messageFactory; + <SPAN class="code-keyword">this</SPAN>.servletHost = servletHost; + + } + + .... + +</PRE> +</DIV></DIV> + +<H1><A name="ConvertingTuscany1.xExtensions-ConvertingyouImplementationruntimeartifacts"></A>Converting you Implementation runtime artifacts</H1> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +... +</PRE> +</DIV></DIV> + +<H1><A name="ConvertingTuscany1.xExtensions-Convertingtestcases"></A>Converting test cases</H1> + +<P>In 2.x we removed the Host-Embedded module and the SCADomain, and the recommended way is to use the Node SPI to build your test cases. We also are recommending using JUnit 4.5 test styles. See below a quick</P> + +<P><B>1.x Style</B></P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">public</SPAN> class AtomTestCase { + + <SPAN class="code-keyword">private</SPAN> SCADomain domain; + + @Before + <SPAN class="code-keyword">public</SPAN> void setUp() <SPAN class="code-keyword">throws</SPAN> Exception { + domain = SCADomain.newInstance(<SPAN class="code-quote">"AtomBinding.composite"</SPAN>); + } + + @After + <SPAN class="code-keyword">public</SPAN> void tearDown() <SPAN class="code-keyword">throws</SPAN> Exception { + domain.close(); + } + + .... +} +</PRE> +</DIV></DIV> + +<P><B>2.x Style</B></P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">public</SPAN> class AtomTestCase { + + <SPAN class="code-keyword">private</SPAN> <SPAN class="code-keyword">static</SPAN> Node node; + + @BeforeClass + <SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">static</SPAN> void setUp() <SPAN class="code-keyword">throws</SPAN> Exception { + <SPAN class="code-keyword">try</SPAN> { + <SPAN class="code-comment">// use the contribution helper to find the location of the contribution directory +</SPAN> <SPAN class="code-comment">// based on a class that is know to be in the contribution +</SPAN> <SPAN class="code-object">String</SPAN> contribution = ContributionLocationHelper.getContributionLocation(AtomTestCase.class); + + <SPAN class="code-comment">// create a note to load the contribution and run the named composite +</SPAN> node = NodeFactory.newInstance().createNode(<SPAN class="code-quote">"AtomBinding.composite"</SPAN>, <SPAN class="code-keyword">new</SPAN> Contribution(<SPAN class="code-quote">"test"</SPAN>, contribution)); + + <SPAN class="code-comment">// as an alternative to using the helper you can of course specify the location of the +</SPAN> <SPAN class="code-comment">// contribution directly, <SPAN class="code-keyword">for</SPAN> example, +</SPAN> <SPAN class="code-comment">// +</SPAN> <SPAN class="code-comment">// node = NodeFactory.newInstance().createNode(<SPAN class="code-keyword">new</SPAN> Contribution(<SPAN class="code-quote">"test"</SPAN>, +</SPAN> <SPAN class="code-comment">// <SPAN class="code-quote">"my/directory/structure/atom-contribution.zip"</SPAN>)); +</SPAN> <SPAN class="code-comment">// +</SPAN> <SPAN class="code-comment">// Note also that no composite is named here. It is assumed that the contribution +</SPAN> <SPAN class="code-comment">// specifies a deployable composite in the sca-contribution.xml file +</SPAN> + <SPAN class="code-comment">// start the node to make SCA services available +</SPAN> node.start(); + } <SPAN class="code-keyword">catch</SPAN> (Exception e) { + e.printStackTrace(); + } + } + + @AfterClass + <SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">static</SPAN> void tearDown() <SPAN class="code-keyword">throws</SPAN> Exception { + node.stop(); + node.destroy(); + } + + ... +} +</PRE> +</DIV></DIV> + +<P><B>NOTE</B> You will need to add the node-impl as test dependency to your modules</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-node-impl</artifactId> + <version>2.0-SNAPSHOT</version> + <scope>test</scope> + </dependency> +</PRE> +</DIV></DIV> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Converting Tuscany 1.x Extensions'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/create-signing-key.html b/site/trunk/site-publish/documentation-2x/create-signing-key.html new file mode 100644 index 0000000000..bdbbb23108 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/create-signing-key.html @@ -0,0 +1,196 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Create Signing Key : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="making-releases.html" title="Making Releases">Making Releases</A> > <A href="" title="Create Signing Key">Create Signing Key</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="making-releases.html" title="Making Releases">Making Releases</A> > <A href="" title="Create Signing Key">Create Signing Key</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Create Signing Key</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=21791356"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=21791356">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21791356"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21791356">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21791356"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21791356">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <TABLE class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><TBODY><TR><TD class="confluenceTd" valign="top" width="15%"><P></P> +<DIV class="error"><SPAN class="error">Unable to render {include}</SPAN> Couldn't find a page to include called: <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=Menus&linkCreation=true&fromPageId=21791356" class="createlink">Menus</A></DIV></TD><TD class="confluenceTd" valign="top" width="85%"> + +<H3><A name="CreateSigningKey-Createacodesigningkey"></A>Create a code signing key</H3> + +<P>Install <A href="http://www.gnupg.org/" class="external-link" rel="nofollow">GNU GPG</A></P> + +<P>Create a gpg config file eg c:\gpg\conf\gpg.conf with the following contents:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +utf8-strings +keyserver x-hkp:<SPAN class="code-comment">//pgp.surfnet.nl/ +</SPAN><SPAN class="code-keyword">default</SPAN>-cert-check-level 3 +keyserver-options auto-key-retrieve include-subkeys +no-mangle-dos-filenames +no-secmem-warning +</PRE> +</DIV></DIV> + +<P>Set the GNUPGHOME environment var to point to that: set GNUPGHOME=\gpg\conf</P> + +<P>gpg --gen-key</P> + +<P>accept all defaults, use your apache email and a comment like "Code Signing Key", eg:</P> + +<P>Real name: Ant Elder<BR> +Email address: antelder@apache.org<BR> +Comment: Code Signing Key</P> + +<P>Use long hard to guess passphrase with numbers and miss spellings etc</P> + +<P>now should be able to show that key with: gpg --list-keys</P> + +<P>C:\>gpg --list-keys<BR> +/gpgtest/conf\pubring.gpg<BR> +-------------------------<BR> +pub 1024D/481240F5 2007-06-28<BR> +uid Ant Elder (Code Signing Key) <antelder@apache.org><BR> +sub 2048g/F6F122B8 2007-06-28</P> + +<P>Upload that to a key server using the keyid, eg gpg --send-key 481240F5</P> + +<P>Now if you go to <A href="http://pgp.surfnet.nl/" class="external-link" rel="nofollow">http://pgp.surfnet.nl/</A> you should be able to search for you name and find the uploaded key</P> + + +<P>Add this key to the KEYS file in the Tuscany SVN: <A href="https://svn.apache.org/repos/asf/incubator/tuscany/KEYS" class="external-link" rel="nofollow">https://svn.apache.org/repos/asf/incubator/tuscany/KEYS</A><BR> +eg, check out the KEYS file then update with:</P> + +<P>(gpg --list-sigs antelder@apache.org && gpg --armor --export antelder@apache.org) >> KEYS</P> + + + + + + +</TD></TR></TBODY></TABLE> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Create Signing Key'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/development-guides.data/OSGi Enablement for Tuscany.ppt b/site/trunk/site-publish/documentation-2x/development-guides.data/OSGi Enablement for Tuscany.ppt Binary files differnew file mode 100644 index 0000000000..6a5f78362a --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/development-guides.data/OSGi Enablement for Tuscany.ppt diff --git a/site/trunk/site-publish/documentation-2x/development-guides.data/OSGi Remote Services with Tuscany SCA.ppt b/site/trunk/site-publish/documentation-2x/development-guides.data/OSGi Remote Services with Tuscany SCA.ppt Binary files differnew file mode 100644 index 0000000000..5714aaa4a3 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/development-guides.data/OSGi Remote Services with Tuscany SCA.ppt diff --git a/site/trunk/site-publish/documentation-2x/development-guides.data/Tuscany 2.x Extensibility and SPIs.ppt b/site/trunk/site-publish/documentation-2x/development-guides.data/Tuscany 2.x Extensibility and SPIs.ppt Binary files differnew file mode 100644 index 0000000000..1a162041bf --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/development-guides.data/Tuscany 2.x Extensibility and SPIs.ppt diff --git a/site/trunk/site-publish/documentation-2x/development-guides.data/Tuscany SCA Domain Node.odp b/site/trunk/site-publish/documentation-2x/development-guides.data/Tuscany SCA Domain Node.odp Binary files differnew file mode 100644 index 0000000000..60ab97bd3f --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/development-guides.data/Tuscany SCA Domain Node.odp diff --git a/site/trunk/site-publish/documentation-2x/development-guides.data/guide_icon.jpeg b/site/trunk/site-publish/documentation-2x/development-guides.data/guide_icon.jpeg Binary files differnew file mode 100644 index 0000000000..a0b9c3c248 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/development-guides.data/guide_icon.jpeg diff --git a/site/trunk/site-publish/documentation-2x/development-guides.data/guide_icon.jpeg.jpeg b/site/trunk/site-publish/documentation-2x/development-guides.data/guide_icon.jpeg.jpeg Binary files differnew file mode 100644 index 0000000000..899edcb286 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/development-guides.data/guide_icon.jpeg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/development-guides.html b/site/trunk/site-publish/documentation-2x/development-guides.html new file mode 100644 index 0000000000..0a4efceaa7 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/development-guides.html @@ -0,0 +1,212 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Development Guides : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="Development Guides">Development Guides</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="Development Guides">Development Guides</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Development Guides</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=109130"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=109130">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109130"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109130">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109130"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109130">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <DIV class="panel" style="background-color: #ffffff;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>SCA Java Runtime Overview</B></DIV><DIV class="panelContent" style="background-color: #ffffff;"> +<P><A href="sca-java-runtime-overview.html" title="SCA Java Runtime Overview">Runtime Overview</A> This guide explains various pieces of the Java SCA Runtime, the module structure, and the internals of the runtime.</P> +</DIV></DIV> + +<DIV class="panel" style="background-color: #ffffff;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>SCA Java Development Guide</B></DIV><DIV class="panelContent" style="background-color: #ffffff;"> +<P><A href="sca-java-development-guide.html" title="SCA Java Development Guide">Development Guide</A> This guide explains how to checkout the Java SCA 2.x source code, build it and how to contribute code back to the project.</P> +</DIV></DIV> + + +<DIV class="panel" style="background-color: #ffffff;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>OSGi Aware Programming in Tuscany</B></DIV><DIV class="panelContent" style="background-color: #ffffff;"> +<P><A href="osgi-aware-programming-in-tuscany.html" title="OSGi Aware Programming in Tuscany">OSGi Aware Programming in Tuscany</A> This guide shows the Tuscany developer how to write code and extension code that would comply to some of the OSGi modularity concepts</P> + +<P><A href="osgi-enablement-for-tuscany-runtime.html" title="OSGi Enablement for Tuscany Runtime">OSGi Enablement for Tuscany Runtime</A> This guide shows the Tuscany developer how to OSGi enable the Tuscany runtime.</P> +</DIV></DIV> + +<DIV class="panel" style="background-color: #ffffff;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>Other...</B></DIV><DIV class="panelContent" style="background-color: #ffffff;"> +<P><A href="running-tuscany-sca-2x-with-equinox-and-felix.html" title="Running Tuscany SCA 2.x with Equinox and Felix">Running Tuscany SCA 2.x with Equinox and Felix</A> This guide shows the Tuscany developer how to start a Tuscany application on the Equinox or Felix OSGi runtime.</P> + +<P><A href="converting-tuscany-1x-extensions.html" title="Converting Tuscany 1.x Extensions">Converting Tuscany 1.x Extensions</A> This guide shows the Tuscany developer how to convert 1.x extensions to 2.x</P> + +<P><A href="converting-tuscany-1x-applications.html" title="Converting Tuscany 1.x Applications">Converting Tuscany 1.x Applications</A> This guide shows the Tuscany application developer how to convert 1.x applications to 2.x</P> + +<P><A href="logging-tracing-and-timing.html" title="Logging, Tracing and Timing">Logging, Tracing and Timing</A> in Tuscany 2.X</P> +</DIV></DIV> + +<DIV class="panel" style="background-color: #ffffff;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>Presentations</B></DIV><DIV class="panelContent" style="background-color: #ffffff;"> +<UL> + <LI><A href="development-guides.data/OSGi%20Enablement%20for%20Tuscany.ppt">OSGi Enablement for Tuscany</A></LI> + <LI><A href="development-guides.data/Tuscany%202.x%20Extensibility%20and%20SPIs.ppt">Tuscany 2.x Extensibility and SPIs</A></LI> + <LI><A href="development-guides.data/Tuscany%20SCA%20Domain%20Node.odp">Tuscany 2.x Domain and Node</A></LI> + <LI><A href="development-guides.data/OSGi%20Remote%20Services%20with%20Tuscany%20SCA.ppt">OSGi Remote Services with Tuscany SCA</A></LI> +</UL> +</DIV></DIV> + </DIV> + + <DIV class="tabletitle"> + Children + <SPAN class="smalltext" id="show" style="display: inline;"> + <A href="javascript:showChildren()">Show Children</A></SPAN> + <SPAN class="smalltext" id="hide" style="display: none;"> + <A href="javascript:hideChildren()">Hide Children</A></SPAN> + </DIV> + <DIV class="greybox" id="children" style="display: none;"> + <A href="sca-java-development-guide.html" title="SCA Java Development Guide">SCA Java Development Guide</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="osgi-aware-programming-in-tuscany.html" title="OSGi Aware Programming in Tuscany">OSGi Aware Programming in Tuscany</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="osgi-enablement-for-tuscany-runtime.html" title="OSGi Enablement for Tuscany Runtime">OSGi Enablement for Tuscany Runtime</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="converting-tuscany-1x-extensions.html" title="Converting Tuscany 1.x Extensions">Converting Tuscany 1.x Extensions</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="running-tuscany-sca-2x-with-equinox-and-felix.html" title="Running Tuscany SCA 2.x with Equinox and Felix">Running Tuscany SCA 2.x with Equinox and Felix</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-java-runtime-overview.html" title="SCA Java Runtime Overview">SCA Java Runtime Overview</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-java-deployment.html" title="SCA Java Deployment">SCA Java Deployment</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="running-oasis-spec-tests-in-a-osgi-environment.html" title="Running OASIS Spec Tests in a OSGi environment">Running OASIS Spec Tests in a OSGi environment</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="logging-tracing-and-timing.html" title="Logging, Tracing and Timing">Logging, Tracing and Timing</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="converting-tuscany-1x-applications.html" title="Converting Tuscany 1.x Applications">Converting Tuscany 1.x Applications</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + </DIV> + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Development Guides'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/extension-reference.html b/site/trunk/site-publish/documentation-2x/extension-reference.html new file mode 100644 index 0000000000..8912704558 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/extension-reference.html @@ -0,0 +1,242 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="http://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Extension Reference : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <BODY onload="init()"> + <TABLE valign="top" border="0" cellspacing="0" cellpadding="0" width="100%" background="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg"> + <TR> + <TD valing="top" align="left"> + <A href="http://cwiki.apache.org/confluence/pages/viewpage.action?spaceKey=TUSCANYxDOCx2x&title=$siteroot"><IMG src="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg" height="91" width="25" border="0"></A> + </TD> + <TD> + <A href="http://tuscany.apache.org/"><IMG src="http://tuscany.apache.org/images/TuscanyLogo.jpg" border="0"></A> + </TD> + + <TD width="100%"> + + </TD> + + + <!-- Adds the edit page link to the top banner--> + <TD valign="bottom"> + <DIV style="padding: 2px 10px; margin: 0px;"> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964351"> + <IMG src="http://tuscany.apache.org/images/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + </DIV> + </TD> + </TR> + </TABLE> + + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="Extension Reference">Extension Reference</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A>|<A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD align="left" valign="top"> + <DIV id="PageContent"> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H3><A name="ExtensionReference-TuscanyExtensions"></A>Tuscany Extensions</H3> + +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> Type </TH> +<TH class="confluenceTh"> Release Introduced </TH> +<TH class="confluenceTh"> OASIS Spec </TH> +<TH class="confluenceTh"> Status </TH> +<TH class="confluenceTh"> Description </TH> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-implementationjava.html" title="SCA Java implementation.java">implementation.java</A> </TD> +<TD class="confluenceTd"> 2.0-M1 </TD> +<TD class="confluenceTd"> Pass </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> Support for SCA components implemented with Java classes </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-implementationspring.html" title="SCA Java implementation.spring">implementation.spring</A> </TD> +<TD class="confluenceTd"> 2.0-M3 </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> ? </TD> +<TD class="confluenceTd"> Support for Spring Framework </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-implementationbpel.html" title="SCA Java implementation.bpel">implementation.bpel</A> </TD> +<TD class="confluenceTd"> 2.0-M1 </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> Support for components implemented in BPEL </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-implementationosgi.html" title="SCA Java implementation.osgi">implementation.osgi</A> </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> Support for osgi </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Widget%20Implementation.widget&linkCreation=true&fromPageId=5964351" class="createlink">implementation.widget</A> </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> Work in progress </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-implementationweb.html" title="SCA Java implementation.web">implementation.web</A> </TD> +<TD class="confluenceTd"> 2.0-M4 <BR clear="all"> </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> ? </TD> +<TD class="confluenceTd"> Support JEE web apps as implementation types </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-bindingws.html" title="SCA Java binding.ws">binding.ws</A> </TD> +<TD class="confluenceTd"> 2.0-M1 </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> SOAP/HTTP web services </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-bindingrmi.html" title="SCA Java binding.rmi">binding.rmi</A> </TD> +<TD class="confluenceTd"> 2.0-M1 </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> The Java RMI protocol </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-bindingjms.html" title="SCA Java binding.jms">binding.jms</A> </TD> +<TD class="confluenceTd"> 2.0-M4<BR clear="all"> </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> ? </TD> +<TD class="confluenceTd"> Asynchronous JMS messaging </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-bindingejb.html" title="SCA Java binding.ejb">binding.ejb</A> </TD> +<TD class="confluenceTd"> 2.0-M4<BR clear="all"> </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> ? </TD> +<TD class="confluenceTd"> EJB Binding </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-bindinghttp.html" title="SCA Java binding.http">binding.http</A> </TD> +<TD class="confluenceTd"> 2.0-M4 </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> ? </TD> +<TD class="confluenceTd"> Supports binding of methods over standard Hyper Text Transfer Protocol (HTTP), allowing you to create, retrieve, update, delete items. Also supports conditional creates, retrieves, updates, and deletes using the ETag and LastModified caching protocol described in HTTP. </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Java%20binding.jsonp&linkCreation=true&fromPageId=5964351" class="createlink">binding.jsonp</A> </TD> +<TD class="confluenceTd"> ? </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> ? </TD> +<TD class="confluenceTd"> The JSON protocol over HTTP </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-bindingjsonrpc.html" title="SCA Java binding.jsonrpc">binding.jsonrpc</A> </TD> +<TD class="confluenceTd"> 2.0-M4 </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> The JSON-RPC protocol </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-bindingatom.html" title="SCA Java binding.atom">binding.atom</A> </TD> +<TD class="confluenceTd"> 2.0-M4 </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> supports Atom-publishing protocol, allowing you to create, retrieve, update, delete Atom entries </TD> +</TR> +<TR> +<TD class="confluenceTd"> databinding-axiom </TD> +<TD class="confluenceTd"> ? </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> Support for AXIOM data binding </TD> +</TR> +<TR> +<TD class="confluenceTd"> databinding-jaxb </TD> +<TD class="confluenceTd"> ? </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> Support for JAXB data binding </TD> +</TR> +<TR> +<TD class="confluenceTd"> databinding-json </TD> +<TD class="confluenceTd"> 2.0-M4<BR clear="all"> </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> Support for JSON data binding </TD> +</TR> +<TR> +<TD class="confluenceTd"> interface-java </TD> +<TD class="confluenceTd"> 2.0-M1 </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> Interfaces described with java interfaces </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-interfacewsdl.html" title="SCA Java interface.wsdl">interface.wsdl</A> </TD> +<TD class="confluenceTd">2.0-M1 </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> Interfaces described with WSDL definitions </TD> +</TR> +<TR> +<TD class="confluenceTd"> http-jetty </TD> +<TD class="confluenceTd"> 2.0-M2<BR clear="all"> </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> The integration between Tuscany and the Jetty web container </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-definitionsxml.html" title="SCA Java definitions.xml">definitions.xml</A> </TD> +<TD class="confluenceTd"> 2.0-M4<BR clear="all"> </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> Work in Progress </TD> +<TD class="confluenceTd"> Defined intents, policy sets and binding defaults </TD> +</TR> +</TBODY></TABLE> + </DIV> + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <SCRIPT src="http://www.google-analytics.com/urchin.js" type="text/javascript"> + </SCRIPT> + <SCRIPT type="text/javascript"> + _uacct = "UA-1174707-5"; + urchinTracker(); + </SCRIPT> + + <A href="http://www.statcounter.com/" target="_blank"><IMG src="http://c26.statcounter.com/counter.php?sc_project=2619156&java=0&security=94bd7e7d&invisible=0" alt="website stats" border="0"></A> + <DIV class="footer"> + Copyright © 2003-2008, The Apache Software Foundation + </DIV> + + </BODY> +</HTML> diff --git a/site/trunk/site-publish/documentation-2x/get-hold-of-rat.html b/site/trunk/site-publish/documentation-2x/get-hold-of-rat.html new file mode 100644 index 0000000000..9901ba89f1 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/get-hold-of-rat.html @@ -0,0 +1,141 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Get hold of RAT : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="making-releases.html" title="Making Releases">Making Releases</A> > <A href="" title="Get hold of RAT">Get hold of RAT</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="making-releases.html" title="Making Releases">Making Releases</A> > <A href="" title="Get hold of RAT">Get hold of RAT</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Get hold of RAT</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=21791375"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=21791375">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21791375"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21791375">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21791375"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21791375">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <P>Download the latest release from <A href="http://incubator.apache.org/rat" class="external-link" rel="nofollow">http://incubator.apache.org/rat/</A> (It's moved back to Apache incubation now).</P> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Get hold of RAT'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/getting-started.html b/site/trunk/site-publish/documentation-2x/getting-started.html new file mode 100644 index 0000000000..8c91fb666b --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/getting-started.html @@ -0,0 +1,182 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Getting Started : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="Getting Started">Getting Started</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="Getting Started">Getting Started</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Getting Started</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=109152"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=109152">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109152"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109152">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109152"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109152">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <DIV class="panelMacro"><TABLE class="infoMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>In Progress</TD></TR></TABLE></DIV> + +<P>(start with notes and then turn it into more eloquent text)</P> + +<P>Tuscany runs SCA contributions.<BR> +An SCA contribution is something like a zip, jar, or folder.<BR> +To run SCA contributions you start a Tuscany runtime and tell it about the contributions.<BR> +(need something about domains)</P> + +<P>As a very quick example, go to samples/helloworld and do mvn tuscany:run will to the helloworld contribution in a Tuscany runtime </P> + +<P>Ways to create a Tuscany runtime:<BR> +-mvn tuscany:run<BR> +-ant run <BR> +-tuscany.bat/tuscany.sh <BR> +-Nodefactory.newInstance<BR> +-webapp embedded<BR> +-webapp shallow integration<BR> +-tomcat deep integration</P> + +<P>A Tuscany runtime may be standalone or distributed. A standalone runtime knows only about the contributions in that one runtime instance, a distributed runtime also knows about contributions in runtimes which may be in other JVMs and/or machines. By default the runtime created using NodeFactory.newInstance or webapp embedded will run in standalone mode, all the others by default start in distributed mode.</P> + +<P>You can configure the Tuscany runtime by passing in configuration properties when creating the runtime. When creating the runtime programatically you can use a Java Properties object, otherwise you can use a config uri string. The uri string has the following formats:<BR> +properties:<url to a properties file><BR> +uri:<defaultDomainName>?propertyName=value&propertyName=value&...</P> + + + + + + </DIV> + + <DIV class="tabletitle"> + Children + <SPAN class="smalltext" id="show" style="display: inline;"> + <A href="javascript:showChildren()">Show Children</A></SPAN> + <SPAN class="smalltext" id="hide" style="display: none;"> + <A href="javascript:hideChildren()">Hide Children</A></SPAN> + </DIV> + <DIV class="greybox" id="children" style="display: none;"> + <A href="samples.html" title="Samples">Samples</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + </DIV> + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Getting Started'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/glossary.html b/site/trunk/site-publish/documentation-2x/glossary.html new file mode 100644 index 0000000000..20f19001c8 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/glossary.html @@ -0,0 +1,229 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Glossary : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="Glossary">Glossary</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="Glossary">Glossary</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Glossary</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=21790793"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=21790793">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21790793"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21790793">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21790793"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21790793">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <DIV class="table-wrap"> +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> Term </TH> +<TH class="confluenceTh"> description </TH> +</TR> +<TR> +<TD class="confluenceTd"> <A name="Glossary-contribution"></A> contribution </TD> +<TD class="confluenceTd"> an SCA term for a deployable package of artifacts that contribute to an application (see also <A href="sca-introduction.html" title="SCA Introduction">SCA Introduction</A>) </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A name="Glossary-launcher"></A> launcher </TD> +<TD class="confluenceTd"> A tuscany term for a program used to start Tuscany in situations where the environment doesn't provide a main() program. For example, a launcher is not required for a webapp, since the container provides the main() </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +</TBODY></TABLE> +</DIV> + + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Glossary'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/index.html b/site/trunk/site-publish/documentation-2x/index.html new file mode 100644 index 0000000000..a0cd7f2a15 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/index.html @@ -0,0 +1,189 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Index : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="" title="Index">Index</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="" title="Index">Index</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Index</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=108808"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=108808">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=108808"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=108808">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=108808"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=108808">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <DIV class="panel" style="background-color: #ffffff;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>Getting Started with Tuscany</B></DIV><DIV class="panelContent" style="background-color: #ffffff;"> +<P><A href="getting-started.html" title="Getting Started">Getting Started</A> These guides help you to get setup in Tuscany, develop and run a simple application using comand line or Eclipse.</P> +</DIV></DIV> + +<DIV class="panel" style="background-color: #ffffff;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>SCA Introduction</B></DIV><DIV class="panelContent" style="background-color: #ffffff;"> +<P><A href="sca-introduction.html" title="SCA Introduction">SCA Introduction</A> Provides a quick introduction to SCA and links to the SCA Specifications.</P> +</DIV></DIV> + +<DIV class="panel" style="background-color: #ffffff;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>Tuscany Samples</B></DIV><DIV class="panelContent" style="background-color: #ffffff;"> +<P><A href="samples.html" title="Samples">SCA Samples</A> A description of the Tuscany SCA sample contributions</P> +</DIV></DIV> + +<DIV class="panel" style="background-color: #ffffff;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>SCA Java Extensions Guide</B></DIV><DIV class="panelContent" style="background-color: #ffffff;"> +<P><A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> Provides a guide for all the SCA Java and Tuscany extensions.</P> +</DIV></DIV> + +<DIV class="panel" style="background-color: #ffffff;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>Development Guides</B></DIV><DIV class="panelContent" style="background-color: #ffffff;"> +<P><A href="development-guides.html" title="Development Guides">Development Guides</A> These guides help you learn more about Tuscany architecture and how to get involved in the development of Tuscany. We look forward to your help.</P> +</DIV></DIV> + </DIV> + + <DIV class="tabletitle"> + Children + <SPAN class="smalltext" id="show" style="display: inline;"> + <A href="javascript:showChildren()">Show Children</A></SPAN> + <SPAN class="smalltext" id="hide" style="display: none;"> + <A href="javascript:hideChildren()">Hide Children</A></SPAN> + </DIV> + <DIV class="greybox" id="children" style="display: none;"> + <A href="overview.html" title="Overview">Overview</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-introduction.html" title="SCA Introduction">SCA Introduction</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="development-guides.html" title="Development Guides">Development Guides</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="getting-started.html" title="Getting Started">Getting Started</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="glossary.html" title="Glossary">Glossary</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="making-releases.html" title="Making Releases">Making Releases</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + </DIV> + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Index'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/logging-tracing-and-timing.html b/site/trunk/site-publish/documentation-2x/logging-tracing-and-timing.html new file mode 100644 index 0000000000..2f555cf79e --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/logging-tracing-and-timing.html @@ -0,0 +1,266 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Logging, Tracing and Timing : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="Logging, Tracing and Timing">Logging, Tracing and Timing</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="Logging, Tracing and Timing">Logging, Tracing and Timing</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Logging, Tracing and Timing</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=20645145"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=20645145">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=20645145"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=20645145">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=20645145"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=20645145">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H1><A name="Logging%2CTracingandTiming-TuscanyLogging%2CTracing%2CTimingInformationinTuscany2.X"></A>Tuscany Logging, Tracing, Timing Information in Tuscany 2.X</H1> + +<P>This page describes the logging, tracing, and timing features of Tuscany. These features can be used to debug problems with the Tuscany runtime, understand code flow, and provide timing metrics for competitive analysis or performance claims.</P> + +<H2><A name="Logging%2CTracingandTiming-JavaLoggingversusAspectOrientedProgramming%28AOP%29Approach"></A>Java Logging versus Aspect Oriented Programming (AOP) Approach</H2> + +<P>There are two types of logging embeded in the Tuscany runtime: explicit and implicit. The explicit logging is implemented by the Java 2 SE core logging facilities such as java.util.logging.Logger. This is the logging that many Java programmers are familiar with, and the logging requires calls to the Logger programming interface. Throughout the Tuscany code base you see calls to this facility such as this call in Tuscany org.apache.tuscany.sca.node.launcher.NodeLauncher.</P> +<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Java Logging in Tuscany</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java"> logger.info(<SPAN class="code-quote">"Apache Tuscany SCA Node is starting..."</SPAN>); +</PRE> +</DIV></DIV> +<P>Calls to this facility by default go to the standard output of the program. This is the typical result that one sees in the console:</P> +<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Java Logging Output</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java">INFO: Apache Tuscany SCA Node is starting... +</PRE> +</DIV></DIV> +<P>The Java SE core logging works well as a general purpose logger and gives a general idea of the important phases in the Tuscany runtime. However, one drawback is that this logging system only publishes predetermined messages created by the developers. If you wish to change the logging points, you must change the Tuscany source code, build, and run again with your private code base.</P> + +<P>Another logging and tracing facility is available in Tuscany that gives the user a bit of flexibility in what gets logged and requires no source code modifications to run. This is an Aspect Oriented Programming (AOP) approach that runs via a Java agent at runtime. Just like a debugger can start and stop and inspect a Tuscany Java program, so too can an AOP agent inspect and report on a Tuscany Java program. Tuscany employs the AspectJ implementation, and its runtime agent is contained in the aspectjweaver.jar file. The AOP agent is specified from a command line option or runtime options:</P> +<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Java AOP Agent</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java">java -javaagent:<SPAN class="code-quote">"<path to aspectjweaver.jar>"</SPAN> calculator.CalculatorClient +</PRE> +</DIV></DIV> +<P>The AOP logging and tracing agent can be run with any Tuscany program. No additional calls or log statements need be added to the Tuscany code. The results of running a timing for example, look like this:</P> +<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Tuscany AOP Output</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java">Running org.apache.tuscany.sca.aspectj.TracingTestCase +Timing Around timedSection jp=call(void java.util.logging.Logger.info(<SPAN class="code-object">String</SPAN>)) +Oct 21, 2008 9:26:36 AM org.apache.tuscany.sca.aspectj.TracingTestCase info_aroundBody0 +Timing Around timedSection Roundtrip is 32ms <SPAN class="code-keyword">for</SPAN> jp.getSignature=void java.util.logging.Logger.info(<SPAN class="code-object">String</SPAN>) +</PRE> +</DIV></DIV> +<P>Full documentation on AspectJ is available at the <A href="http://www.eclipse.org/aspectj/doc/released" class="external-link" rel="nofollow">AspectJ web site</A>. Tuscany provides example usage in the module tracing-aspectj in the build tree and the released code.</P> + +<H2><A name="Logging%2CTracingandTiming-BriefApectOrientedProgrammingIntroduction"></A>Brief Apect Oriented Programming Introduction</H2> + +<P>In order to understand the aspect oriented approach to logging in Tuscany, one must understand a few basic concepts.</P> + +<P>A <EM>join point</EM> is well defined point in the program flow. An example join point is the entry to a Java method. Another is after an exception is thrown. These join points contain useful information when running a program such as the argument list, the call stack, and the signature of the point that is executing.</P> + +<P>A <EM>point cut</EM> is a subset of all the program join points. For instance, a point cut might be only the join points from exceptions thrown by the Tuscany runtime. Or only the set of calls to a Tuscany API org.apache.tuscany.sca.node.launcher.NodeLauncher.</P> + +<P><EM>Advice</EM> is the code that is run when a point cut is reached. For instance, your advice might want to print out all the arguments when entering a given method. Or your advice might show the call stack of an exception and print the original cause of the exception.</P> + +<P>Finally, an <EM>aspect</EM> is a module that bundles up a particular set of point cuts and advice. Here is an example aspect that is marked with Java 5 annotations. The name of the aspect is <EM>LoggingAspect</EM>, there is a point cut defined at Tuscany calls to org.apache.tuscany.sca.* classes (but not inside of Aspect classes), and when the point cut is run, the advice for this point cut prints out the join point signature.</P> +<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Example Aspect</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java">@Aspect +<SPAN class="code-keyword">public</SPAN> class LoggingAspect { + @Pointcut(<SPAN class="code-quote">"call(* org.apache.tuscany.sca..*(..)) && (!within(org.apache.tuscany.sca.aspectj.*Aspect))"</SPAN>) + <SPAN class="code-keyword">public</SPAN> void anyMethodCall() { + } + + @Before(<SPAN class="code-quote">"anyMethodCall()"</SPAN>) + <SPAN class="code-keyword">public</SPAN> void before(JoinPoint jp) { + <SPAN class="code-object">System</SPAN>.out.println(<SPAN class="code-quote">"Logging Before anyMethodCall jp.getSignature="</SPAN> + jp.getSignature()); + } +} +</PRE> +</DIV></DIV> +<P>Full explanation of these concepts are in the AspectJ documents. The purpose here is to provide enough information to allow a user to run or modify the Tuscany aspects to one's liking.</P> + +<H2><A name="Logging%2CTracingandTiming-LoggingandTracinginTuscany"></A>Logging and Tracing in Tuscany</H2> + +<P>Following the approach of AspectJ, Tuscany provides two concrete aspects for logging and tracing. org.apache.tuscany.sca.aspectj.LoggingAspect provides logging for methods, constructors, and static initializers in Tuscany. org.apache.tuscany.sca.aspectj.SimpleTracingAspect provide tracing into user methods, constructors, and static initializers. Both provide detailed information when an Exception or Throwable is thrown by the Tuscany runtime or user SCA program.</P> + +<P>Both LoggingAspect and SimpleTracingAspect are run by naming the AspectJ runtime agent aspectjweaver.jar at launch. This is shown in the command line example above, and an example is provided in launcher.bat in the tracing-aspectj module, and a further example is provded by running the command "ant runtraced" on the calculator sample in a binary distribution.</P> + +<P>The runtime configuration file aop.xml has references to these aspects. Uncomment one or both of these in aop.xml to run with this logging enabled. Following is an example logging run with the verbose weaver option specified. Note the verbose output of class names, build times, etc. The logging statements too are quite verbose stating the name of the join point, the point cut, and various signatures and arguments.</P> +<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Example Logging in Tuscany</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java">[INFO] Configured Artifact: org.aspectj:aspectjweaver:1.6.1:jar +[INFO] Copying aspectjweaver-1.6.1.jar to E:\t\java\sca\modules\tracing-aspectj\target\dependency\aspectjweaver-1.6.1.jar +[AppClassLoader@92e78c] info AspectJ Weaver Version 1.6.1 built on Thursday Jul 3, 2008 at 18:35:41 GMT +[AppClassLoader@92e78c] info register classloader sun.misc.Launcher$AppClassLoader@92e78c +[AppClassLoader@92e78c] info using configuration /E:/t/java/sca/modules/tracing-aspectj/target/classes/META-INF/aop.xml +[AppClassLoader@92e78c] info register aspect org.apache.tuscany.sca.aspectj.LoggingAspect +[AppClassLoader@92e78c] info define aspect org.apache.tuscany.sca.aspectj.UserTimingAspect + +------------------------------------------------------- + T E S T S +------------------------------------------------------- +Logging Before anyMethodCall jp.getSignature=SCANodeFactory org.apache.tuscany.sca.node.SCANodeFactory.newInstance() +Logging Before anyConstructor jp.getSignature=org.apache.tuscany.sca.extensibility.ServiceDiscovery() +Logging Before anyConstructor jp.getSignature=org.apache.tuscany.sca.extensibility.ServiceDiscovery.1(ServiceDiscovery, <SPAN class="code-object">Class</SPAN>) +Logging Before anyConstructor jp.getArgs=[org.apache.tuscany.sca.extensibility.ServiceDiscovery@ceb6dd, + class org.apache.tuscany.sca.node.SCANodeFactory] +Logging Before anyMethodCall jp.getSignature=ServiceDiscoverer org.apache.tuscany.sca.extensibility.ServiceDiscovery.getServiceDiscoverer() +Logging Before anyConstructor jp.getSignature=org.apache.tuscany.sca.extensibility.ContextClassLoaderServiceDiscoverer() +Logging AfterReturning anyMethodCall jp=call(ServiceDiscoverer org.apache.tuscany.sca.extensibility.ServiceDiscovery.getServiceDiscoverer()), + result=org.apache.tuscany.sca.extensibility.ContextClassLoaderServiceDiscoverer@17574b9 +Logging Before anyMethodCall jp.getSignature=Set org.apache.tuscany.sca.extensibility.ServiceDiscoverer.discover(<SPAN class="code-object">String</SPAN>, <SPAN class="code-object">boolean</SPAN>) +Logging Before anyMethodCall jp.getArgs=[org.apache.tuscany.sca.node.SCANodeFactory, <SPAN class="code-keyword">true</SPAN>] +</PRE> +</DIV></DIV> +<P>These aspects provide static point cuts and advice. That is, the various methods, constructors, and exception points are constrained by the source code of the aspects. You can change these items via editing LoggingAspect or SimpleTracingAspect and rerunning the application.</P> + +<H2><A name="Logging%2CTracingandTiming-Timing"></A>Timing</H2> + +<P>Timing of various calls is also available via the AOP logging and tracing facility in Tuscany. The apsect UserTimingAspect is provided to time certain point cuts. As shown above, this AOP timing feature can be used for timing metrics for competitive analysis of performance gauges. The output of the timing is shown here, as a Logger.info method is called and timed.</P> +<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Tuscany AOP Timing Output</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java">Running org.apache.tuscany.sca.aspectj.TracingTestCase +Timing Around timedSection jp=call(void java.util.logging.Logger.info(<SPAN class="code-object">String</SPAN>)) +Oct 21, 2008 9:26:36 AM org.apache.tuscany.sca.aspectj.TracingTestCase info_aroundBody0 +Timing Around timedSection Roundtrip is 32ms <SPAN class="code-keyword">for</SPAN> jp.getSignature=void java.util.logging.Logger.info(<SPAN class="code-object">String</SPAN>) +</PRE> +</DIV></DIV> +<P>Unlike LoggingAspect and SimpleTracingAspect, the pointcut for UserTimingAspect is settable at runtime via the aop.xml runtime configuration file. Look for the UserTimingAspect name, and note the expression in the pointcut element. You may change the name of expression to any valid AspectJ pointcut expression. Here calls to any Logger.info methods, regardless of arguments or return types are logged. For instance you may change this to "call( * calculator.CalculatorServiceImpl.multiply(..))" to time calls in your SCA application.</P> +<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Dynamic PointCut for UserTimingAspect</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java"> <concrete-aspect name=<SPAN class="code-quote">"org.apache.tuscany.sca.aspectj.UserTimingAspect"</SPAN> + <SPAN class="code-keyword">extends</SPAN>=<SPAN class="code-quote">"org.apache.tuscany.sca.aspectj.TimingAspect"</SPAN> + precedence=<SPAN class="code-quote">"org.apache.tuscany.sca.aspectj.UserTimingAspect, *"</SPAN>> + <pointcut name=<SPAN class="code-quote">"timedCall"</SPAN> + expression=<SPAN class="code-quote">"call(* java.util.logging.Logger.info(..))"</SPAN>/> + </concrete-aspect> +</PRE> +</DIV></DIV> + +<H2><A name="Logging%2CTracingandTiming-LoggingandTracinginAlternateContainers"></A>Logging and Tracing in Alternate Containers</H2> + +<P>So far this article discussed logging and tracing for Tuscany applications. Often Tuscany applications are run standalone in a Java 2 SE environment. You can also turn on logging and tracing in various application servers that support Tuscany SCA applications.</P> + +<H3><A name="Logging%2CTracingandTiming-ApacheTomcatExample"></A>Apache Tomcat Example</H3> + +<P>Show Apache Tomcat J2EE application server plus Tuscany bundled SCA application.</P> + +<H3><A name="Logging%2CTracingandTiming-WebSphereExample"></A>WebSphere Example</H3> + +<P>Show WebSphere 7.0.0.1 plus SOA Feature Pack based on Tuscany output.</P> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Logging, Tracing and Timing'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/making-releases.html b/site/trunk/site-publish/documentation-2x/making-releases.html new file mode 100644 index 0000000000..7afa58581f --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/making-releases.html @@ -0,0 +1,718 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Making Releases : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="Making Releases">Making Releases</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="Making Releases">Making Releases</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Making Releases</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=21791342"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=21791342">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21791342"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21791342">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21791342"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21791342">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <TABLE class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><TBODY><TR> +<TD class="confluenceTd" valign="top" width="15%"> +<DIV class="error"><SPAN class="error">Unable to render {include}</SPAN> Couldn't find a page to include called: <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=Menus&linkCreation=true&fromPageId=21791342" class="createlink">Menus</A></DIV></TD> +<TD class="confluenceTd" valign="top" width="85%"> + +<H3><A name="MakingReleases-GettingReady"></A>Getting Ready</H3> + +<P><A href="setting-up-ssh.html" title="Setting up ssh">Setting up ssh</A></P> + +<P><A href="create-signing-key.html" title="Create Signing Key">Create Signing Key</A></P> + +<P><A href="get-hold-of-rat.html" title="Get hold of RAT">Get hold of RAT</A></P> + +<H3><A name="MakingReleases-UsefulResources"></A>Useful Resources</H3> + +<P><A href="http://incubator.apache.org/guides/releasemanagement.html#best-practice" class="external-link" rel="nofollow">Incubator release best practice </A><BR> +<A href="http://incubator.apache.org/incubation/Incubation_Policy.html" class="external-link" rel="nofollow">Incubator Policy </A><BR> +<A href="http://www.apache.org/dev/" class="external-link" rel="nofollow">ASF Developer Guide </A><BR> +<A href="http://www.apache.org/dev/release.html" class="external-link" rel="nofollow">ASF Release FAQ </A><BR> +<A href="http://www.apache.org/dev/release.html#license" class="external-link" rel="nofollow">ASF Release Licensing FAQ </A><BR> +<A href="http://www.apache.org/dev/release-signing.html" class="external-link" rel="nofollow">ASF Release Signing </A><BR> +<A href="http://www.apache.org/dev/new-committers-guide.html#pgp" class="external-link" rel="nofollow">ASF Comitters Guide </A><BR> +<A href="http://people.apache.org/~henkp/" class="external-link" rel="nofollow">Henk's ASF Key Guide </A><BR> +<A href="http://pgp.surfnet.nl/" class="external-link" rel="nofollow">Surfnet Key Server </A><BR> +<A href="http://pgp.mit.edu/" class="external-link" rel="nofollow">MIT Key Server </A><BR> +<A href="http://svn.apache.org/repos/asf/tuscany/java/etc/release-sca.sh" class="external-link" rel="nofollow">Raymond's release script</A></P> + +<H3><A name="MakingReleases-ReleaseReviewerCheckList"></A>Release Reviewer Check List</H3> + +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Check that all RELEASE-NOTES and READMEs etc have the right release number and date<BR> +<IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Check that the RAT output doesn't report missing or non-ASF licenses other than for files that can't have ASF licenses.<BR> +<IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Check that all files (that need it) have the ASF copyright and it's the right date<BR> +<IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Check that the LICENSE and NOTICE files appear at the top level of source distro<BR> +<IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Check that the LICENSE and NOTICE files appear at the top level of binary distro<BR> +<IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Check that the LICENSE and NOTICE files appear at the top level of all maven modules that will be distributed (these are the tricky ones as they get copied when people add new modules)<BR> +<IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Check that LICENSE files have a copy of all third party licenses for the files in directories below them (jar name and version to which license relates must be clearly marked. Use the list from the distribution lib dir)<BR> +<IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Check that NOTICE files have a copy of all of the copyright statements for the files in directories below them. You have to go through all dependency jars/files that have been copied in and check<BR> +<IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Check that the signatures are in the right format<BR> +<IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Check that the signing key is in the KEYS file and in an external repo<BR> +<IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Check that there are no SNAPSHOT dependencies still in the distribution<BR> +<IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Check that there is no junk left in the distributions (.log, .tmp, .bak etc)<BR> +<IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Check that the distribution match the tag as far as possible. (Our NOTICE files have the module name dropped in automatically so don't match and we don't ship svg files)<BR> +<IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Check that the manifests in the jars that we produce have enough information (name of product and version. Scripts below should do this).<BR> +<IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Check that the project depends on the smallest number of versions of each third party jar<BR> +<IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Check that all samples compile and run from the command line and where appropriate operate correctly in Tomcat/WebSphere/Jetty/Geronimo<BR> +<IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Check that all demos compile and run from the command line and where appropriate operate correctly in Tomcat/WebSphere/Jetty/Geronimo<BR> +<IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Check to make sure Javadocs are generated for APIs and SPIs.</P> + +<H3><A name="MakingReleases-ReleaseManagerReleaseProcess"></A>Release Manager Release Process</H3> + +<P>This page borrows many of the commands from <A href="http://svn.apache.org/repos/asf/tuscany/java/etc/release-sca.sh" class="external-link" rel="nofollow">Raymond's release script</A> but with a bit more explanation and a few extra useful commands. The commands here were taken from when release 1.1 RC3a was under preparation. Note that this document has been updated from experience gained with the SDO 1.1.1 release, which was the first release made after exiting incubation; as such, whilst the release names used in this document refer to an "incubating" version, the svn repository and the maven repository have been updated to the non incubating versions. It's also fair to say that it's unlikely that you will want to run all of these commands in sequence as you generally end up repeating sections as release preparation progresses.</P> + +<H4><A name="MakingReleases-Callforreleases"></A>Call for releases</H4> + +<P>(Note that the maven tuscany plugin will most likely need to be released in parallel with the Tuscany release)</P> + +<P>At some point someone in the community will call for a release based on the features and fixes that have been under development in the trunk. Typically the first stage in the release process is to decide on who is going to be the release manager, i.e. who is going to ensure that all the steps are taken to ensure a good release. This will typical involve someone volunteering and a vote on the dev list. The next thing is the create a branch where the code can be stabilized and testing can start on the release artifacts. It's useful to try and ensure that the code is complete as possible and that all the samples run before the branch is created. This removes the need for a lot of double fixing between the branch and the trunk.</P> + +<P>The commands in this document make use of the following environment variables, and are written in a form suitable for execution in linux or a cygwin shell on windows. If you set up these variables you should be able to just cut and paste the commands as given throughout this document.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +export RELEASE=2.0-M5 +export RC=RC3 + +export CURRENT_TRUNK_LEVEL=2.0-SNAPSHOT +export NEXT_TRUNK_LEVEL=2.0-SNAPSHOT + +export RATJAR=~/apache-rat-0.7-SNAPSHOT.jar +export SCPCOMMAND=scp +export PAOUSER=kelvingoodson +export PASSPHRASE=your_pao_authentication_pass_phrase +</PRE> +</DIV></DIV> + +<H4><A name="MakingReleases-Createthebranch"></A>Create the branch</H4> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +svn copy https:<SPAN class="code-comment">//svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/ https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/branches/sca-java-$RELEASE -m <SPAN class="code-quote">"Branch <SPAN class="code-keyword">for</SPAN> $RELEASE"</SPAN></SPAN> +</PRE> +</DIV></DIV> + +<P>Once the branch is created, if the current and next trunk version differ, the version number in trunk can be updated. If the release is a milestone release the trunk version will not change.</P> + +<H4><A name="MakingReleases-Fixupthebranchwork"></A>Fix up the branch work</H4> + +<P>First checkout the branch so that you can work on it. These commands assume that a local directory called "branches" is present.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd branches +svn co https:<SPAN class="code-comment">//svn.apache.org/repos/asf/tuscany/sca-java-2.x/branches/sca-java-$RELEASE ./$RELEASE</SPAN> +</PRE> +</DIV></DIV> +<P>Remove all the files that are not going to be part of the release, test all the samples and check all of the LICENSE and NOTICE files.</P> + +<P>Check dependencies are as you would expect them to be. In particular check that we aren't depending on many different versions of third part jars. If we are this has the side effect of messing up the generated build files. If module A depends on x.jar v1.2 and module B depends on x.jar v1.3 then when a build file that is generated for a sample that only depends on module A the stated x.jar dependency will be v1.2. Of course the distribution build will make sure that only v1.3 is actually shipped and so the ant build will fail. (TODO - need better automation)</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd sca +mvn \-o \-Pdependencies \-Dmaven.test.skip=<SPAN class="code-keyword">true</SPAN> +find . \-name dependency.txt \-exec cat '{}' >> deptotal.txt \; +</PRE> +</DIV></DIV> +<P>or</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd sca +mvn dependency:tree +</PRE> +</DIV></DIV> +<P>Use you favorite spreadsheet tool to open deptotal.txt and order on the first column to see across the project what dependencies we have on what libraries/versions.</P> + +<P>Once the branch is at the stage where a release candidate can be created for testing prepare to make a tag.</P> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>"Tip"</B><BR>When making changes to a branch or tag that are also relevant to the trunk, it's much easier to apply the changes to the trunk at the time, rather than wait and risk losing the changes. Svn provides a simple one line way to do this with the "svn merge" command. In the root directory of a checked out version of the trunk, if you run a command like the following ... + + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +svn merge \-r 674473:674474 https:<SPAN class="code-comment">//svn.apache.org/repos/asf/tuscany/sca-java-2.x/branches/sca-java-2.0-M5 2.0-M5-RC2</SPAN> +</PRE> +</DIV></DIV> +<P>Note how the version numbers in the n:m differ by one, so that you get just the difference in repository state from immediately before the change in question, to the state in question, merged into the file system in the target location (final argument)</P> + + +<P>then that will apply the same edits as were made in the 674474 commit in the tag; merging them into your checked out version of the current trunk. The earlier you do this, the less likely that svn will present you with conflicts to resolve.</P></TD></TR></TABLE></DIV> + +<H4><A name="MakingReleases-CreateTag%24RELEASE%24RC"></A>Create Tag $RELEASE-$RC</H4> + +<P>These commands assume that a local directory called "tags" is present.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd tags +svn co https:<SPAN class="code-comment">//svn.apache.org/repos/asf/tuscany/sca-java-2.x/branches/sca-java-$RELEASE $RELEASE-$RC</SPAN> +</PRE> +</DIV></DIV> +<P>Notice that all we are doing here is just checking out the branch again. This allows any last minute fixes to be taken from the branch in subversion and allows the version numbers in the tag to be corrected without affecting the branch, assuming that more than one tag will be required to complete the release process.</P> + +<H4><A name="MakingReleases-Fixthereleasedates"></A>Fix the release dates</H4> + +<P>In various files under distribution/src/main/release the month of release is quoted. Fix this to be the expected release month.</P> + +<H4><A name="MakingReleases-Checkthenoticedates"></A>Check the notice dates</H4> + +<P>It's not clear what the policy for dates in notice files is currently. We have gone for the following...</P> + +<P>Copyright (c) 2005 - 2010 The Apache Software Foundation</P> + +<P>As the project moves forward we need to check that the last date matches the current year. If you need to change all the notice files here's a script</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">for</SPAN> i in `/usr/bin/find . \-name <SPAN class="code-quote">"NOTICE"</SPAN>`; <SPAN class="code-keyword">do</SPAN> sed <SPAN class="code-quote">"s/Copyright (c) 2005 - 2008/Copyright (c) 2005 - 2009/g"</SPAN> $i >/tmp/tmp.notice; cp /tmp/tmp.notice $i; done +</PRE> +</DIV></DIV> + +<H4><A name="MakingReleases-ChangetheversionID"></A>Change the version ID</H4> + +<P>The "-SNAPSHOT" is removed from the end of the version string. This ensures that the only thing building with the release version number on your PC is the tag being tested.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd tags/2.0-M5-RC2 +<SPAN class="code-keyword">for</SPAN> i in `/usr/bin/find . \-name <SPAN class="code-quote">"*.xml"</SPAN> \-o \-name <SPAN class="code-quote">"*.java"</SPAN>`; <SPAN class="code-keyword">do</SPAN> <SPAN class="code-keyword">if</SPAN> grep $RELEASE-SNAPSHOT $i>/dev/<SPAN class="code-keyword">null</SPAN>; then sed <SPAN class="code-quote">"s/$RELEASE-SNAPSHOT/$RELEASE/g"</SPAN> $i >/tmp/tmp.txt; cp /tmp/tmp.txt $i; echo $i; fi; done +</PRE> +</DIV></DIV> + + + +<H4><A name="MakingReleases-Buildfromtoplevel"></A>Build from top level</H4> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd tags/$RELEASE-$RC +mvn -o clean install +</PRE> +</DIV></DIV> + +<H4><A name="MakingReleases-Builddistribution"></A>Build distribution</H4> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd tags/$RELEASE-$RC/distribution/all +mvn -Psource +mvn +</PRE> +</DIV></DIV> + +<H4><A name="MakingReleases-Copythedistributiontosomewhereandtryit"></A>Copy the distribution to somewhere and try it</H4> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd tags/$RELEASE-$RC/distribution/all/target +cp apache-tuscany-sca-all-$RELEASE.zip <someplace> +cp apache-tuscany-sca-all-$RELEASE-src.zip <someotherplace> +</PRE> +</DIV></DIV> +<P>Try all the samples/demos</P> + +<P>The war samples are currently to be tested with</P> + +<UL class="alternate" type="square"> + <LI>Tomcat 5.5.20 and Tomcat 6.0.14</LI> + <LI>Jetty 6.1.3</LI> + <LI>Geronimo 2.0.2 Tomcat6 jee5</LI> + <LI>WebSphere 6.1 fix pack 9+</LI> +</UL> + + +<P>Clean you local repo of SCA modules and compile the source distro and run some samples. As you will have deleted the maven-tuscany-plugin artifact, you'll need to do a 3 part manual maven build, building in the modules directory, then the maven directory, and finally the samples directory.</P> + +<P>Check for copyrights in the code to ensure that are what you are expecting</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +grep \-iR \--exclude=LICENSE \--exclude=NOTICE Copyright * \| awk '{<SPAN class="code-keyword">if</SPAN> (\!match($0, <SPAN class="code-quote">".+ASF.+"</SPAN>)) {print $0}}' +</PRE> +</DIV></DIV> +<P>check all the NOTICE files</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">for</SPAN> i in `find . \-name NOTICE`; <SPAN class="code-keyword">do</SPAN> echo XXXXXXXXXXXXXXXXXXXXXXXXXXXX; echo $i; cat $i; done > ../tmp +</PRE> +</DIV></DIV> +<P>Check for any SNAPSHOTS left in by mistake</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +grep \-r \--include=*.xml SNAPSHOT * +</PRE> +</DIV></DIV> +<P>Check the LICENSE file against what is provided in the distributions. There is no automation for this bit.</P> + + +<P>Check that all jars in the distribution\lib is mentioned on the binary LICENSE</P> + + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">for</SPAN> fn in `find . -name <SPAN class="code-quote">"*.jar"</SPAN> \-printf <SPAN class="code-quote">"%f\n"</SPAN>`; <SPAN class="code-keyword">do</SPAN> <SPAN class="code-keyword">if</SPAN> grep \-q $fn ../LICENSE; then <SPAN class="code-quote">"-"</SPAN>; <SPAN class="code-keyword">else</SPAN> <SPAN class="code-quote">"$fn NOT present"</SPAN>; fi; done; +</PRE> +</DIV></DIV> +<P>And check that all jars that are mentioned are present</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">for</SPAN> fn in `awk '/.jar/ {<SPAN class="code-keyword">if</SPAN> (match($0,<SPAN class="code-quote">"[a-zA-Z0-9._\-|a-zA-Z0-9._-]+[.]jar"</SPAN>)) {print substr($0, RSTART,RLENGTH) } }' ../LICENSE`; <SPAN class="code-keyword">do</SPAN> <SPAN class="code-keyword">if</SPAN> ls * \| grep -q $fn; then echo <SPAN class="code-quote">"-"</SPAN>;<SPAN class="code-keyword">else</SPAN> echo <SPAN class="code-quote">">>> $fn NOT present"</SPAN>; fi; done +</PRE> +</DIV></DIV> +<P>Check for junk included by accident</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +find . \-name log \-print +find . \-name work \-print +find . \-name lck \-print +find . \-name activemq-data \-print +find . \-name temp \-print +find . \-name tmp \-print +</PRE> +</DIV></DIV> + +<H4><A name="MakingReleases-GeneratetheRATreports"></A>Generate the RAT reports</H4> + +<P>Unpack a binary and source distribution archive and create rat reports for each.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +java \-jar $RATJAR srcExtractionDir > rat-$RELEASE-$RC-src.txt +java \-jar $RATJAR binExtractionDir > rat-$RELEASE-$RC-bin.txt +</PRE> +</DIV></DIV> +<P>Copy the reports up onto the staging repo. You should of course check the report at this stage.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +$SCPCOMMAND rat-$RELEASE-$RC.txt $PAOUSER@people.apache.org:public_html/sca-java/$RELEASE/$RC/ +</PRE> +</DIV></DIV> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>"Tip"</B><BR>If you need to regenerate the RAT report after you have started on the steps that follow run "mvn clean" first to avoid complains about the files under target folders</TD></TR></TABLE></DIV> + +<P>Once you are happy with the release artifacts you can sign them and make them available from review.</P> + +<H4><A name="MakingReleases-Signtheartifacts"></A>Sign the artifacts</H4> + +<P>Linux</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd tags/$RELEASE-$RC/distribution/target +<SPAN class="code-keyword">for</SPAN> i in *.zip *.gz; <SPAN class="code-keyword">do</SPAN> gpg --output $i.asc --detach-sig --armor $i; done +<SPAN class="code-keyword">for</SPAN> i in *.zip *.gz; <SPAN class="code-keyword">do</SPAN> openssl md5 -hex $i \| sed 's/MD5((**[\^)|]*))= ([0-9a-f|0-9a-f]\*)/\2 \*\1/' > $i.md5; done +</PRE> +</DIV></DIV> + +<P>Windows:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">for</SPAN> %A in (*.zip) <SPAN class="code-keyword">do</SPAN> gpg \--output %A.asc \--detach-sig \--armor %A +<SPAN class="code-keyword">for</SPAN> %A in (*.gz) <SPAN class="code-keyword">do</SPAN> gpg \--output %A.asc \--detach-sig \--armor %A +<SPAN class="code-keyword">for</SPAN> %A in (*.zip) <SPAN class="code-keyword">do</SPAN> gpg \--print-md md5 %A > %A.md5 +<SPAN class="code-keyword">for</SPAN> %A in (*.gz) <SPAN class="code-keyword">do</SPAN> gpg \--print-md md5 %A > %A.md5 +</PRE> +</DIV></DIV> +<P>The commands above should produce artifacts of an appropriate format, as follows.</P> + +<P>md5 should look like</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +8fb7cb398063ed0dffa414168468fffc \*apache-tuscany-sca-1.1-incubating.zip +</PRE> +</DIV></DIV> +<P>asc should look like</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +\---\--BEGIN PGP SIGNATURE-\---\- +Version: GnuPG v1.4.5 (Cygwin) + +iD8DBQBHnLGGE8fTrnkHPxIRAqPmAJ4tOR6W663FKCXHPi1GlLBWDyZwJgCeMqbb +68DOq0YsU/O7kJsBHuZXhJw= +=elh0 +\---\--END PGP SIGNATURE-\---\- +</PRE> +</DIV></DIV> + +<H4><A name="MakingReleases-Puttheartifactsupinyourhomedirectoryonpeople.apache.org"></A>Put the artifacts up in your home directory on people.apache.org</H4> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd tags/$RELEASE-$RC/distribution/target +$SCPCOMMAND *.asc $PAOUSER@people.apache.org:public_html/sca-java/$RELEASE/$RC/ +$SCPCOMMAND *.md5 $PAOUSER@people.apache.org:public_html/sca-java/$RELEASE/$RC/ +$SCPCOMMAND *.zip $PAOUSER@people.apache.org:public_html/sca-java/$RELEASE/$RC/ +$SCPCOMMAND *.gz $PAOUSER@people.apache.org:public_html/sca-java/$RELEASE/$RC/ +</PRE> +</DIV></DIV> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd tags/$RELEASE-$RC/distribution/src/main/release +pscp RELEASE_NOTES $PAOUSER@people.apache.org:public_html/sca-java/$RELEASE/$RC/ +pscp CHANGES $PAOUSER@people.apache.org:public_html/sca-java/$RELEASE/$RC/ +</PRE> +</DIV></DIV> + +<H4><A name="MakingReleases-Checkpermissionsonthefiles"></A>Check permissions on the files</H4> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +chmod 644 \*.zip +chmod 644 \*.gz +chmod 644 \*.txt +</PRE> +</DIV></DIV> + +<H4><A name="MakingReleases-Deploythemavenartifactslocally"></A>Deploy the maven artifacts locally</H4> + +<P>As a potentially simpler alternative to deploying directly to p.a.o you can do the following (I have to use this approach as I <BR> +can't get mvn to authenticate with p.a.o properly during deployment)</P> + +<P>Build the maven release artifact to a local directory (in this case target/deploy at the top level):</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd tags/$RELEASE-$RC +mvn -Prelease -DaltDeploymentRepository=id::<SPAN class="code-keyword">default</SPAN>::file:target/deploy +</PRE> +</DIV></DIV> + +<P>Copy the artifacts up to p.a.o:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd cd tags/$RELEASE-$RC/target/deploy +scp -r org slaws@people.apache.org:./public_html/tuscany/2.0-beta1-RC2/maven +</PRE> +</DIV></DIV> + +<H4><A name="MakingReleases-Deploythemavenartifactsdirectlytop.a.o"></A>Deploy the maven artifacts directly to p.a.o</H4> + +<P>Note below that the reference to "me.people" in the "id" part of the -DaltDeploymentRepository argument to the maven deploy plugin is simply an identifier relating to a stanza in your local maven repo's settings.xml file. Note that also if you use ssh authentication by referencing a file containing your private key from the settings.xml file, then be sure to use a file in open ssh format. People who have followed the apache <A href="http://www.apache.org/dev/user-ssh-windows.html" class="external-link" rel="nofollow">instructions for creating ssh keys on Windows</A> with putty will probably not have created open ssh format files. You can however convert your .ppk file to the open ssh format by loading it into puttygen and using the conversion menu.</P> + +<P>Create a maven directory in your target directory on people.apache.org</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd tags/$RELEASE-$RC +mvn -N -DaltDeploymentRepository=me.people::<SPAN class="code-keyword">default</SPAN>::scp:<SPAN class="code-comment">//people.apache.org/home/$PAOUSER/public_html/sca-java/$RELEASE/$RC/maven verify gpg:sign install:install deploy:deploy -Dgpg.passphrase=$PASSPHRASE +</SPAN> + +cd modules + +mvn clean +mvn \-DaltDeploymentRepository=me.people::<SPAN class="code-keyword">default</SPAN>::scp:<SPAN class="code-comment">//people.apache.org/home/$PAOUSER/public_html/sca-java/$RELEASE/$RC/maven verify gpg:sign install:install deploy:deploy -Dgpg.passphrase=$PASSPHRASE +</SPAN> +cd shades (note, I thought it was only shades/base that needed doing, but the maven plugin failed on shades artifacts, so I deployed from shades) +mvn clean +mvn \-DaltDeploymentRepository=me.people::<SPAN class="code-keyword">default</SPAN>::scp:<SPAN class="code-comment">//people.apache.org/home/$PAOUSER/public_html/sca-java/$RELEASE/$RC/maven verify gpg:sign install:install deploy:deploy -Dgpg.passphrase=$PASSPHRASE +</SPAN> + +cd maven/maven-tuscany-plugin + +mvn clean +mvn \-DaltDeploymentRepository=me.people::<SPAN class="code-keyword">default</SPAN>::scp:<SPAN class="code-comment">//people.apache.org/home/$PAOUSER/public_html/sca-java/$RELEASE/$RC/maven verify gpg:sign install:install deploy:deploy -Dgpg.passphrase=$PASSPHRASE +</SPAN> +cd features + +mvn clean +mvn \-DaltDeploymentRepository=me.people::<SPAN class="code-keyword">default</SPAN>::scp:<SPAN class="code-comment">//people.apache.org/home/$PAOUSER/sca-java/$RELEASE/$RC/maven verify gpg:sign install:install deploy:deploy -Dgpg.passphrase=$PASSPHRASE +</SPAN> +</PRE> +</DIV></DIV> + +<H4><A name="MakingReleases-Deploysourcejars"></A>Deploy source jars</H4> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd modules +mvn -Psource -DaltDeploymentRepository=me.people::<SPAN class="code-keyword">default</SPAN>::scp:<SPAN class="code-comment">//people.apache.org/home/kelvingoodson/public_html/sca-java/2.0-M5/RC3/maven -Dgpg.passphrase=$PASSPHRASE deploy +</SPAN> +</PRE> +</DIV></DIV> + +<H4><A name="MakingReleases-Checkpermissionsofmavenartifacts"></A>Check permissions of maven artifacts</H4> + +<P>If you've copied the maven artifacts up to p.a.o manually you may need to fix the permissions of the directories</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +find . -type d -exec chmod 755 {} \; +</PRE> +</DIV></DIV> + +<P>and files </P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +find . -type f -exec chmod 644 {} \; +</PRE> +</DIV></DIV> + +<H4><A name="MakingReleases-CheckthattheMavenartifactswork"></A>Check that the Maven artifacts work</H4> + +<P>Point you maven build at your p.a.o dir as a temporary mirror, for example, add mirror element to the settings.xml file (usually found at .m2/settings)</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<mirrors> +<mirror> +<id>ant.staging</id> +<url>http:<SPAN class="code-comment">//people.apache.org/~<PAOUSER>/sca-java/<release>/<RC>/maven</url> +</SPAN><mirrorOf>*</mirrorOf> +</mirror> +</mirrors> +</PRE> +</DIV></DIV> +<P>Clean you local SCA artifacts and use maven to compile samples and see if they run.</P> + +<H4><A name="MakingReleases-Checkinthetag"></A>Check in the tag</H4> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd tags +svn copy $RELEASE-$RC https:<SPAN class="code-comment">//svn.apache.org/repos/asf/tuscany/sca-java-2.x/tags/$RELEASE-$RC -m <SPAN class="code-quote">"Tag <SPAN class="code-keyword">for</SPAN> $RELEASE $RC"</SPAN></SPAN> +</PRE> +</DIV></DIV> + +<H4><A name="MakingReleases-Startvoting"></A>Start voting</H4> + +<P>The PPMC will vote first. This may give rise to a new release candidate being required. If so you need to go back and start at the "Create Tag" step but using the next RC number.</P> + +<P>Once the PPMC vote is complete the vote is moved across to the IPMC. Once all the votes are complete the artifacts that have been voted on can be release.</P> + + +<H4><A name="MakingReleases-Onceallthevotingiscomplete"></A>Once all the voting is complete</H4> + +<P>Copy the artifacts from you directory on people.apache.org to;</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +/www/www.apache.org/dist/tuscany/java/sca/$RELEASE +</PRE> +</DIV></DIV> + +<P>Also check that the KEYS file is up to date.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +/www/www.apache.org/dist/tuscany +</PRE> +</DIV></DIV> + +<H4><A name="MakingReleases-Copythestagingrepototheliverepo"></A>Copy the staging repo to the live repo</H4> + +<P><B>Option 1</B> (untested for 2.0-M5)</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +mvn stage:copy -Dsource=<SPAN class="code-quote">"http:<SPAN class="code-comment">//people.apache.org/~slaws/tuscany/1.1-RC3a/maven"</SPAN> -Dtarget=<SPAN class="code-quote">"scp://<userid@>people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository"</SPAN> -Dversion=1.1</SPAN> +</PRE> +</DIV></DIV> + +<P>You'll need the maven stage plugin to do this. Since maven-stage-plugin is not published, the release manager should checkout the source for the plugin and build it.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +http:<SPAN class="code-comment">//svn.apache.org/repos/asf/maven/plugins/trunk/maven-stage-plugin/</SPAN> +</PRE> +</DIV></DIV> + +<P>Or <B>option 2</B> (used for 2.0-M5), instead of using the Maven stage plugin just manually copy the artifacts there:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd public_html/sca-java/$RELEASE/$RC/org/apache/tuscany/ +cp -p -v -R sca/ /x1/www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/tuscany/sca +cp -p -v -R maven/ /x1/www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/tuscany/maven +</PRE> +</DIV></DIV> + +<H4><A name="MakingReleases-Checkthepermissionsintherepo"></A>Check the permissions in the repo</H4> + +<P>There is a script in the SNAPSHOT report that sets the permissions correctly; take a look at the contents of the script and adjust for your purposes</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +more /www/people.apache.org/repo/m2-snapshot-repository/fix-permissions.sh +</PRE> +</DIV></DIV> + +<P>For example:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd /x1/www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/tuscany/ +find . ! -perm 775 -type d -user ${USER} -exec chmod 775 {} \; -print +find . ! -perm 664 -iname maven-metadata.xml* -user ${USER} -exec chmod 664 {} \; -print +find . -group slaws -exec chgrp committers {} \; -print +</PRE> +</DIV></DIV> + +<H4><A name="MakingReleases-Copythereleasecandidatetagtothefinaltagname."></A>Copy the release candidate tag to the final tag name.</H4> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +svn copy https:<SPAN class="code-comment">//svn.apache.org/repos/asf/tuscany/sca-java-2.x/tags/$RELEASE-$RC/ https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/tags/$RELEASE -m <SPAN class="code-quote">"Copy $RC tag as <SPAN class="code-keyword">final</SPAN> release tag"</SPAN></SPAN> +</PRE> +</DIV></DIV></TD></TR></TBODY></TABLE> + +<H4><A name="MakingReleases-Updatethewebsite"></A>Update the website</H4> + +<P>Edit the wiki that defines the website content <A href="../TUSCANY/sca-java-2x-releases.html" class="external-link" rel="nofollow">https://cwiki.apache.org/confluence/display/TUSCANY/SCA+Java+2.x+Releases</A></P> + +<H4><A name="MakingReleases-Waitfortheartifactandwebsitechangestobeupdated"></A>Wait for the artifact and website changes to be updated</H4> + +<P>The website will be updated from the wiki within a few hours. Once updated, check that the new download pages work correctly. In particular follow the download links for artifacts right through to a selection of mirror download sites to be sure that the distributions have been mirrored.</P> + +<H4><A name="MakingReleases-BeattheDrum%21"></A>Beat the Drum!</H4> + +<P>send an announcement, using your apache.org email address, to the apache announce list, and to the tuscany dev and user lists. Blog the announcement on the Tuscany blog and any other publicity that seems appropriate.</P> + </DIV> + + <DIV class="tabletitle"> + Children + <SPAN class="smalltext" id="show" style="display: inline;"> + <A href="javascript:showChildren()">Show Children</A></SPAN> + <SPAN class="smalltext" id="hide" style="display: none;"> + <A href="javascript:hideChildren()">Hide Children</A></SPAN> + </DIV> + <DIV class="greybox" id="children" style="display: none;"> + <A href="setting-up-ssh.html" title="Setting up ssh">Setting up ssh</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="create-signing-key.html" title="Create Signing Key">Create Signing Key</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="get-hold-of-rat.html" title="Get hold of RAT">Get hold of RAT</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + </DIV> + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Making Releases'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG Binary files differnew file mode 100644 index 0000000000..3f6509baca --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG diff --git a/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG.jpeg b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG.jpeg Binary files differnew file mode 100644 index 0000000000..a5180fa0dd --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG.jpeg diff --git a/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg Binary files differnew file mode 100644 index 0000000000..29853f9e1e --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg diff --git a/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg.jpeg b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg.jpeg Binary files differnew file mode 100644 index 0000000000..3dd9af44be --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.html b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.html new file mode 100644 index 0000000000..27910b1759 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/osgi-aware-programming-in-tuscany.html @@ -0,0 +1,300 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>OSGi Aware Programming in Tuscany : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="OSGi Aware Programming in Tuscany">OSGi Aware Programming in Tuscany</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="OSGi Aware Programming in Tuscany">OSGi Aware Programming in Tuscany</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">OSGi Aware Programming in Tuscany</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=109135"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=109135">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109135"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109135">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109135"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109135">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H2><A name="OSGiAwareProgramminginTuscany-MotivationforOSGi"></A>Motivation for OSGi</H2> + +<P> The Apache Tuscany project has become a large project, with various extensions and component types that brings to the SCA Runtime different levels of dependencies. With its growth, Tuscany also started to have it's SPIs violated by some of these extensions, and some of the boundaries between sub-systems are broken, as there wasn't any enforcement of these boundaries.</P> + +<P> The OSGi model provides a very powerful and flexible framework to develop applications in a modular fashion with a high degree of control over classloading inter-dependencies over modules. An OSGi module (a.k.a bundle) have a manifest file (META-INF\manifest.mf) that contains module information such as "name", "version" and also a list of what packages are being exported, and what packages are being imported from the given bundle, providing ways to easily enforce module boundaries.</P> + +<P> In summary:</P> +<UL> + <LI>Better class loading mechanism for our modules</LI> + <LI>Create clean boundaries between sub-systems</LI> +</UL> + + +<H2><A name="OSGiAwareProgramminginTuscany-TuscanyandOSGi3rdpartydependencies"></A>Tuscany and OSGi - 3rd party dependencies</H2> + +<P> Currently we are wrapping the 3rd party dependencies as OSGi bundles, but leaving it unpacked (a.k.a folder structure). This allow use to use the same dependency jars in a OSGi environment as well as in a non-OSGI environment and generating no side effect on our distribution footprint.</P> + +<P> <SPAN class="image-wrap" style=""><IMG src="osgi-aware-programming-in-tuscany.data/osgi_3rd_party_dependencies.JPG" style="border: 0px solid black"></SPAN></P> + + +<H2><A name="OSGiAwareProgramminginTuscany-TuscanyandOSGiGranularity"></A>Tuscany and OSGi - Granularity</H2> + +<P> The granularity used to define modules should be very familiar to all tuscany developers, </P> + +<P> Tuscany Modules --> OSGi Bundles<BR> + 3rd Party Libraries --> OSGi Bundles (using unpacked wrap style bundle)</P> + +<H2><A name="OSGiAwareProgramminginTuscany-ProperlydefiningnewTuscanymodulesasanOSGibundle"></A>Properly defining new Tuscany modules as an OSGi bundle</H2> + +<P> When adding new modules to the Tuscany project, the developer will need to create the OSGi Manifest to properly describe the new module as an OSGi bundle. These artifacts can be automatically generated using the Felix maven-bundle-plugin and should be available from svn repository once it's stable.</P> + +<H4><A name="OSGiAwareProgramminginTuscany-GeneratingOSGimanifestwithFelixmavenbundleplugin"></A>Generating OSGi manifest with Felix maven-bundle-plugin</H4> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;"><B>"configuring maven to generate the OSGi manifest"</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <configuration> + <instructions> + <!-- Bundle versioned from Tuscany version --> + <Bundle-Version>${tuscany.version}</Bundle-Version> + <!-- Bundle Symbolic name --> + <Bundle-SymbolicName>org.apache.tuscany.sca.api</Bundle-SymbolicName> + <!-- Bundle description from pom description --> + <Bundle-Description>${pom.description}</Bundle-Description> + <!-- Export org.osoa.sca and all sub-packages --> + <Export-Package>org.osoa.sca*</Export-Package> + <!-- No Import-Package so calculate imports from code dependencies --> + </instructions> + </configuration> +</plugin> +</PRE> +</DIV></DIV> + +<P>Below is a manifest that was generated for one of the Tuscany modules using the felix maven-bundle-plugin.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;"><B>"OSGi Manifest (META-INF\manifest.mf)"</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java"> +Manifest-Version: 1.0 +Export-Package: org.apache.tuscany.sca.assembly;uses:="javax.xml.xpath + ,org.apache.tuscany.sca.assembly.impl,org.apache.tuscany.sca.policy,o + rg.apache.tuscany.sca.interfacedef,javax.xml.namespace<SPAN class="code-quote">";version="</SPAN>1.4" + ,org.apache.tuscany.sca.assembly.impl;uses:="javax.xml.xpath,org.apac + he.tuscany.sca.assembly,org.apache.tuscany.sca.policy,org.apache.tusc + any.sca.interfacedef,javax.xml.namespace<SPAN class="code-quote">";version="</SPAN>1.4",org.apache.tu + scany.sca.assembly.builder;uses:="org.apache.tuscany.sca.assembly,org + .apache.tuscany.sca.definitions,org.apache.tuscany.sca.core,org.apach + e.tuscany.sca.monitor,org.apache.tuscany.sca.interfacedef,org.apache. + tuscany.sca.extensibility<SPAN class="code-quote">";version="</SPAN>1.4" +Private-Package: org.apache.tuscany.sca.assembly.builder.impl;version= + <SPAN class="code-quote">"1.4"</SPAN> +Tool: Bnd-0.0.255 +Bundle-Name: Apache Tuscany SCA Assembly Model +Created-By: 1.6.0_07 (Sun Microsystems Inc.) +Bundle-Vendor: The Apache Software Foundation +Bundle-Version: 1.4 +Bnd-LastModified: 1225397097203 +Bundle-ManifestVersion: 2 +Bundle-License: http:<SPAN class="code-comment">//www.apache.org/licenses/LICENSE-2.0.txt +</SPAN>Bundle-Description: Apache Tuscany SCA Assembly Model +Import-Package: javax.xml.namespace,javax.xml.parsers,javax.xml.transf + orm,javax.xml.transform.dom,javax.xml.transform.sax,javax.xml.xpath,o + rg.apache.tuscany.sca.assembly;version=<SPAN class="code-quote">"1.4"</SPAN>,org.apache.tuscany.sca.a + ssembly.builder;version=<SPAN class="code-quote">"1.4"</SPAN>,org.apache.tuscany.sca.assembly.impl;ve + rsion=<SPAN class="code-quote">"1.4"</SPAN>,org.apache.tuscany.sca.core;version=<SPAN class="code-quote">"1.4"</SPAN>,org.apache.tusc + any.sca.definitions;version=<SPAN class="code-quote">"1.4"</SPAN>,org.apache.tuscany.sca.extensibilit + y;version=<SPAN class="code-quote">"1.4"</SPAN>,org.apache.tuscany.sca.interfacedef;version=<SPAN class="code-quote">"1.4"</SPAN>,org + .apache.tuscany.sca.monitor;version=<SPAN class="code-quote">"1.4"</SPAN>,org.apache.tuscany.sca.poli + cy;version=<SPAN class="code-quote">"1.4"</SPAN>,org.apache.tuscany.sca.policy.util;version=<SPAN class="code-quote">"1.4"</SPAN>,org + .w3c.dom,org.xml.sax,junit.framework;resolution:=optional,org.apache. + tuscany.sca.interfacedef.impl;version=<SPAN class="code-quote">"1.4"</SPAN>;resolution:=optional,org. + junit;resolution:=optional +Bundle-SymbolicName: org.apache.tuscany.sca.assembly +Bundle-DocURL: http:<SPAN class="code-comment">//www.apache.org/</SPAN> +</PRE> +</DIV></DIV> + +<H2><A name="OSGiAwareProgramminginTuscany-TweakingtheOSGimanifest"></A>Tweaking the OSGi manifest</H2> + +<P> Eclipse PDE provides good tooling for editing and maintaining OSGi manifest files. There are various scenarios we might need to tweak the OSGi manifest manualy :</P> + +<UL> + <LI>Updating imported/exported packages</LI> + <LI>Marking test dependencies optional + <UL> + <LI>Avoid issues when tests have references to external packages</LI> + </UL> + </LI> +</UL> + + +<P> <SPAN class="image-wrap" style=""><IMG src="osgi-aware-programming-in-tuscany.data/osgi_manifest_editor.jpg" style="border: 0px solid black"></SPAN></P> + +<H2><A name="OSGiAwareProgramminginTuscany-PDEintegrationoftuscanymodules"></A>PDE integration of tuscany modules</H2> +<P>1) We generate the .classpath from maven dependencies.</P> + +<P>2) For maven compile/provided dependencies, the modules explicit references <BR> +these dependencies via packages. We define corresponding Import-Package <BR> +header in the MANIFEST.MF for OSGi, and these get resolved to other bundles <BR> +that export the matching packages. This magic comes from the <BR> +"org.eclipse.pde.core.requiredPlugins" classpath container which is <BR> +contributed by the Eclipse PDE. The classpath container resolves the OSGi <BR> +dependencies such as Import-Package or Required-Bundle and automatically add <BR> +the required bundles to the classpath as we see in Eclipse project under the <BR> +"Plugin Dependencies".</P> + +<P>3) The exported packages come from three types of sources:</P> +<UL> + <LI>System packages (exported by the System Bundle, i.e., org.eclipse.osgi).<BR> +Different JDK levels have different list of system packages, for example, <BR> +javax.xml.stream is not in J2SE-1.5 but in JSEJava-1.6. You can find the <BR> +complete list by looking the .profile files within osgi-<version>.jar.</LI> + <LI>Tuscany modules in the Eclipse workspace. The classpath entry will be<BR> +listed as a project under "Plugin Dependencies"</LI> + <LI>3rd-party jars (already as OSGi bundles contributed by the target<BR> +platform). The classpath entry will be listed as a jar under "Plugin <BR> +Dependencies"</LI> +</UL> + + +<P>4) For maven runtime dependencies, there is no corresponding Import-Package <BR> +and the dependencies are used in runtime. Ideally in OSGi, they could be a <BR> +Required-Bundle or a bundle available at runtime. To run the project in JSE <BR> +inside Eclipse, we generate an explicit classpath entry.</P> + +<P>5) For maven test dependencies, there are two types: one is for test <BR> +compilation and the other for test runtime. For the first type, we use <BR> +optional Import-Package to pull in the dependencies if the same project has <BR> +the compile dependency for the same artifact. Otherwise, we generate an <BR> +explicit classpath entry for JSE testing.</P> + +<P>6) For test cases which require extra dependencies in addition to the <BR> +compile/provided/runtime dependencies for the main code, they probably <BR> +should not be unit tests. We need to consider how to move them into the <BR> +itest bucket.</P> + + + + + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : OSGi Aware Programming in Tuscany'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.data/OSGi Enablement for Tuscany.ppt b/site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.data/OSGi Enablement for Tuscany.ppt Binary files differnew file mode 100644 index 0000000000..bee880e978 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.data/OSGi Enablement for Tuscany.ppt diff --git a/site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.data/tuscany-osgi.pdf b/site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.data/tuscany-osgi.pdf Binary files differnew file mode 100644 index 0000000000..ee6105b7a1 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.data/tuscany-osgi.pdf diff --git a/site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.html b/site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.html new file mode 100644 index 0000000000..38a82c3242 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/osgi-enablement-for-tuscany-runtime.html @@ -0,0 +1,381 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>OSGi Enablement for Tuscany Runtime : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="OSGi Enablement for Tuscany Runtime">OSGi Enablement for Tuscany Runtime</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="OSGi Enablement for Tuscany Runtime">OSGi Enablement for Tuscany Runtime</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">OSGi Enablement for Tuscany Runtime</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=109741"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=109741">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109741"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109741">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109741"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109741">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H1><A name="OSGiEnablementforTuscanyRuntime-OSGiEnablementforTuscanyRuntime"></A>OSGi Enablement for Tuscany Runtime</H1> + +<P><A href="osgi-enablement-for-tuscany-runtime.data/OSGi%20Enablement%20for%20Tuscany.ppt">OSGi Enablement for Tuscany.ppt</A></P> + +<H2><A name="OSGiEnablementforTuscanyRuntime-MovtivationstoenableOSGiforTuscany%3A"></A>Movtivations to enable OSGi for Tuscany:</H2> + +<UL> + <LI>Provide modularity for Tuscany to formalize the SPI contracts and enforce the package dependencies across modules</LI> + <LI>Enable Tuscany to work with OSGi environment such as JEE application servers, Eclipse RCP or Spring DM (see <A href="http://www.infoq.com/news/2008/11/osgi-in-the-enterprise" class="external-link" rel="nofollow">http://www.infoq.com/news/2008/11/osgi-in-the-enterprise</A> )</LI> + <LI>Provide versioning and isolation so that Tuscany extensions can depend on different versions of the same library</LI> + <LI>Provide dynamic lifecycle for extensions, install/uninstall/start/stop a module</LI> +</UL> + + +<H2><A name="OSGiEnablementforTuscanyRuntime-Objectives"></A>Objectives</H2> + +<UL> + <LI>Tuscany runtime will be able to run in both non-OSGi and OSGi environment</LI> + <LI>A consistent OSGi story across development, build, runtime and testing</LI> +</UL> + + +<H2><A name="OSGiEnablementforTuscanyRuntime-StepstomakeTuscanyworkwithOSGi%28Basicenablement%29"></A>Steps to make Tuscany work with OSGi (Basic enablement)</H2> + +<UL> + <LI>Add OSGi MANIFEST.MF for each module to make it an OSGi bundle + <UL> + <LI>The generated MANIFEST.MF from maven-bundle-plugin is a good starting point. The result may not be accurate and it doesn't help to reduce the coupling</LI> + <LI>It should be developers' reponsibility to maintain it for the optimal dependencies</LI> + </UL> + </LI> + <LI>Convert each non-OSGi 3rd-party jar into an OSGi bundle + <UL> + <LI>Exception: Aggregate a group of 3rd-party jars if they have split packages</LI> + </UL> + </LI> + <LI>Add an OSGi-based service discoverer to discover tuscany extension points and extensions from the installed bundles + <UL> + <LI>Use the same JDK service provider pattern (META-INF/services) as JSE</LI> + <LI>The discoverer is configured based on the running environment (JSE or OSGi)</LI> + </UL> + </LI> + <LI>Change how JDK factories such as XMLInputFactory, XPathFactory, and DocumentBuilderFactory, are discovered and instantiated + <UL> + <LI>XMLInputFactory.newInstance() used the JSE service provider pattern which doesn't work with OSGi</LI> + <LI>We need to use Tuscany's service discovery mechanism to discover and instantiate the factories</LI> + </UL> + </LI> + <LI>Adjust the code that assumes there is a flat thread context classloader that can access all the classes in the Tuscany runtime + <UL> + <LI>With OSGi, there is a network of classloaders (one classloader per module) and the class visibility is constrained by the OSGi headers such as Import-Package and Export-Package</LI> + <LI>The classloader for the current class is a good starting point for Class.forName() with OSGi</LI> + </UL> + </LI> + <LI>Provide a SCA node launcher to start an OSGi runtime and run SCA application with the OSGi-enabled Tuscany runtime</LI> + <LI>Produce distributions that are compatible with the OSGi bundle structure in an efficient way (in one-two minutes)</LI> + <LI>Bring samples and itests to use the Tuscany SCA OSGi node launcher or run with the Eclipse Equinox profile</LI> +</UL> + + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>To learn from the excerises we went through, please see the slides: <A href="osgi-enablement-for-tuscany-runtime.data/tuscany-osgi.pdf">tuscany-osgi.pdf</A></TD></TR></TABLE></DIV> + +<H2><A name="OSGiEnablementforTuscanyRuntime-UseOSGitohelpTuscanymaintainandenforcegoodmodularitywithcleanSPIsfollowingtheOSGibestpractices"></A>Use OSGi to help Tuscany maintain and enforce good modularity with clean SPIs following the OSGi best practices</H2> + +<UL> + <LI>Identify the absolutely necessary SPI packages that need to be exported + <UL> + <LI>Don't try to export everything</LI> + <LI>For model modules, try to only export the package that contains the interfaces</LI> + <LI>Try not to export any package from the xxx-runtime moudles</LI> + <LI>Any classes that can be accessed via the ExtensionPointRegistry using interfaces should not be exported</LI> + </UL> + </LI> + <LI>Only import other packages when it's needed + <UL> + <LI>For example, we used to have a lot of modules pull in assembly for just a constant for the SCA namespace</LI> + <LI>Avoid DynamicImport-Package=*</LI> + </UL> + </LI> + <LI>Do not export "private" packages as a workaround or hack which can fail the "clean SPI". Refactor things into SPIs if necessary + <UL> + <LI>For example, tuscany-core has quite a few packages that are exported. We need to define a SPI layer if these exports are required.</LI> + <LI>implementation-java: extract out the annotation processing so that they can be reused for introspecting other java-based implementation technologies such as Spring or EJB</LI> + <LI>implementation-java-runtime: extract out the IoC</LI> + <LI>add common modules such as common-java and common-xml to host java or XML related utilities</LI> + </UL> + </LI> + <LI>Split modules into model/runtime to promote modularity</LI> + <LI>Fix some of the unit testcases that pull in too many dependencies and they should be itests</LI> +</UL> + + +<P>To help developers to develop Tuscany modules as OSGi bundles and receive errors if OSGI constraints are violated, we integrated with a set of tools (help for improvement is welcome):</P> +<UL> + <LI>A maven plugin to generate .classpath and .project files and target definition file to produce Eclipse PDE plugin projects for Tuscany modules so that we can leverage the nice OSGi development tooling + <UL> + <LI>Compile dependencies are now pulled in by the PDE requiredPlugins classpath container</LI> + <LI>Runtime dependencies are now generated as an explict classpath entry</LI> + <LI>Test dependencies can be optional Import-Package or an explicit classpath entry</LI> + </UL> + </LI> + <LI>A maven compiler to use Eclipse JDT and OSGi bundle resolver + <UL> + <LI>The JDT compiler is much faster that javac</LI> + <LI>The OSGi resolution reports unsatisfied OSGi constraints</LI> + </UL> + </LI> + <LI>A maven plugin to generate OSGi-compatible distribution structure which hosts 3rd-party jars that can be used a bundle for OSGi as well as a plain jar for JSE classpath + <UL> + <LI>Copy OSGi bundles as jars</LI> + <LI>Create a folder structure to hold the MANIFEST.MF which keep the 3rd-party jar as-is</LI> + </UL> + </LI> +</UL> + + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>For more details, please see: <A href="osgi-aware-programming-in-tuscany.html" title="OSGi Aware Programming in Tuscany">OSGi Aware Programming in Tuscany</A>?</TD></TR></TABLE></DIV> + +<H2><A name="OSGiEnablementforTuscanyRuntime-DevelopingTuscanymodulesasOSGibundles"></A>Developing Tuscany modules as OSGi bundles</H2> + +<H3><A name="OSGiEnablementforTuscanyRuntime-DesignofanOSGibundle"></A>Design of an OSGi bundle</H3> + +<UL> + <LI>Modularity/Granularity + <UL> + <LI>Not just a simple packaging scheme such as all jars are consolidated into one big bundle, export/import everything</LI> + </UL> + </LI> + <LI>Maven is designed to manage build dependency + <UL> + <LI>Visibility at module level (too high)</LI> + <LI>Transitive dependency</LI> + <LI>Classloading is flat</LI> + <LI>No runtime control</LI> + </UL> + </LI> +</UL> + + +<H3><A name="OSGiEnablementforTuscanyRuntime-CreatinganOSGibundle"></A>Creating an OSGi bundle</H3> + +<UL> + <LI>Converting Tuscany modules into OSGi bundles + <UL> + <LI>META-INF/MANIFEST.MF</LI> + </UL> + </LI> + <LI>Converting 3rd-party jars into OSGi bundles + <UL> + <LI>Plain Jars</LI> + <LI>Patching existing bundles</LI> + </UL> + </LI> + <LI>Distribution Structure</LI> +</UL> + + +<UL> + <LI>Eclipse PDE integration + <UL> + <LI>Target platform</LI> + <LI>Classpath setting</LI> + <LI>PDE tools + <UL> + <LI> + <UL> + <LI>Build path</LI> + <LI>PDE dependency view</LI> + <LI>MANIFEST.MF editor</LI> + <LI>Equinox run/debug profile</LI> + </UL> + </LI> + </UL> + </LI> + </UL> + </LI> +</UL> + + +<H3><A name="OSGiEnablementforTuscanyRuntime-MavenpluginstohelpOSGidevelopment"></A>Maven plugins to help OSGi development</H3> + +<UL> + <LI>Maven Eclipse Compiler + <UL> + <LI>Use Eclipse JDT as the compiler</LI> + <LI>Validate the MANIFEST.MF</LI> + </UL> + </LI> + <LI>Tuscany Maven Bundle Plugin + <UL> + <LI>Generating modules</LI> + <LI>Generating PDE target</LI> + <LI>Generating Equinox Configuration</LI> + </UL> + </LI> +</UL> + + +<H3><A name="OSGiEnablementforTuscanyRuntime-Runtimeconcerns"></A>Runtime concerns</H3> + +<UL> + <LI>Equinox OSGi launcher</LI> + <LI>META-INF/services Service Provider discovery</LI> + <LI>Avoid XMLInputFactory.newInstance(), DocumentBuilderFactory.newInstance()...</LI> + <LI>Classloading (TCCL is evil) + <UL> + <LI>Equinox ContextFinder</LI> + </UL> + </LI> +</UL> + + +<H3><A name="OSGiEnablementforTuscanyRuntime-TestTuscanycodewithOSGi"></A>Test Tuscany code with OSGi</H3> + +<UL> + <LI>How to run maven surefire plugin with OSGi?</LI> + <LI>Eclipse run as JUnit plugin test</LI> +</UL> + + +<H3><A name="OSGiEnablementforTuscanyRuntime-TroubleshoottheOSGiconstraintviolations"></A>Troubleshoot the OSGi constraint violations</H3> + +<UL> + <LI>OSGi console + <UL> + <LI>-Dosgi.console=<port #></LI> + </UL> + </LI> + <LI>Eclipse PDE state view</LI> + <LI>Traps + <UL> + <LI>Split Packages</LI> + <LI>System packages</LI> + <LI>Version mismatch</LI> + </UL> + </LI> +</UL> + + + +<P><A href="osgi-enablement-for-tuscany-runtime.data/OSGi%20Enablement%20for%20Tuscany.ppt">OSGi Enablement for Tuscany.ppt</A></P> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : OSGi Enablement for Tuscany Runtime'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/overview.data/guide_icon.jpeg b/site/trunk/site-publish/documentation-2x/overview.data/guide_icon.jpeg Binary files differnew file mode 100644 index 0000000000..a0b9c3c248 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/overview.data/guide_icon.jpeg diff --git a/site/trunk/site-publish/documentation-2x/overview.data/guide_icon.jpeg.jpeg b/site/trunk/site-publish/documentation-2x/overview.data/guide_icon.jpeg.jpeg Binary files differnew file mode 100644 index 0000000000..899edcb286 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/overview.data/guide_icon.jpeg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/overview.html b/site/trunk/site-publish/documentation-2x/overview.html new file mode 100644 index 0000000000..e03b35d176 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/overview.html @@ -0,0 +1,159 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Overview : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="Overview">Overview</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="Overview">Overview</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Overview</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=109103"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=109103">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109103"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109103">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109103"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109103">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <DIV class="panel" style="background-color: #ffffff;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>Getting Started with Tuscany</B></DIV><DIV class="panelContent" style="background-color: #ffffff;"> +<P><A href="getting-started.html" title="Getting Started">Getting Started</A> These guides help you to get setup in Tuscany, develop and run a simple application using comand line or Eclipse.</P> +</DIV></DIV> + +<DIV class="panel" style="background-color: #ffffff;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>SCA Introduction</B></DIV><DIV class="panelContent" style="background-color: #ffffff;"> +<P><A href="sca-introduction.html" title="SCA Introduction">SCA Introduction</A> Provides a quick introduction to SCA and links to the SCA Specifications.</P> +</DIV></DIV> + +<DIV class="panel" style="background-color: #ffffff;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>Tuscany Samples</B></DIV><DIV class="panelContent" style="background-color: #ffffff;"> +<P><A href="samples.html" title="Samples">SCA Samples</A> A description of the Tuscany SCA sample contributions</P> +</DIV></DIV> + +<DIV class="panel" style="background-color: #ffffff;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>SCA Java Extensions Guide</B></DIV><DIV class="panelContent" style="background-color: #ffffff;"> +<P><A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> Provides a guide for all the SCA Java and Tuscany extensions.</P> +</DIV></DIV> + +<DIV class="panel" style="background-color: #ffffff;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>Development Guides</B></DIV><DIV class="panelContent" style="background-color: #ffffff;"> +<P><A href="development-guides.html" title="Development Guides">Development Guides</A> These guides help you learn more about Tuscany architecture and how to get involved in the development of Tuscany. We look forward to your help.</P> +</DIV></DIV> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Overview'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/resources/space.css b/site/trunk/site-publish/documentation-2x/resources/space.css new file mode 100644 index 0000000000..9ca27bc4a3 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/resources/space.css @@ -0,0 +1,5269 @@ + +/* Confluence master stylesheet */ +body { + margin: 0; + padding: 0; + background-color: #f0f0f0; +} +body.content-preview { + background: #fff; + border: none; +} + +body, p, td, table, tr, .bodytext, .stepfield { + font-size: 10pt; + line-height: 1.3; + color: #000; + font-weight: normal; +} + +#page { + width: 100%; + height: 100%; + margin: 0; + padding: 0; +} + +#PageContent { + text-align: left; + background-color: #fff; + padding: 0 0 20px 0; + margin: 0; +} + +.print-only { + display: none; +} + +.monospaceInput { + font: 12px Monaco, Consolas, "Courier New", monospace; +} + +pre { + padding: 0; + margin: 10px 0; + text-align: left; + overflow: auto; +} + +.helpheading { + font-weight: bold; + background-color: #d0d9bd; + border-bottom-width: 1px; + border-bottom-style: solid; + padding: 4px; + margin: 0; + margin-top: 10px; +} +.helpcontent { + padding: 4px 4px 20px 4px; + background-color: #f5f7f1; +} + +.help-section-div .helpheading { + margin: 0; +} +.help-section-div { + margin-bottom: 2em; +} + +#print-friendly-help-toggle { + position: absolute; + top: 1em; + right: 1em; + text-indent: -999em; + width: 16px; + height: 16px; + background-image: url("../../../images/icons/print_16.gif"); + background-repeat: no-repeat; + outline: none; +} + +#commentsHide { + color: #666; + font-weight: normal; +} + +#showingComments { + border: none; + font-size: 10pt; +} + +.pageSection { + margin-top: 10px; + clear: both; +} + + +.pageSectionHeader { + margin-bottom: 5px; + padding: 2px 0; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.pageSectionHeader.summary { + border-bottom: none; +} + +.pageSectionBody { + margin-top: 4px; +} + +a.grey:link { color: #666; } +a.grey:visited { color: #666; } +a.grey:active { color: #666; } +a.grey:hover { color: #666; } + +.more-comments { + font-size: 10pt; + color: #dde2e6; +} + +.commentBox { + padding: 0; + margin: 10px 0; + overflow: auto; +} + +.commentBox table.comment { + border: 0; + border-bottom: #f0f0f0 1px solid; + border-top: #f0f0f0 1px solid; + margin: 0; + padding: 0; + width: 100%; + border-collapse: collapse; +} + +.commentBox .commentinfo { + background-color: #f0f0f0; + vertical-align: top; + padding: 12px; +} + +.commentBox .commentinfo .smalltext { + line-height: 11pt; +} + +.commentBox .commentphoto { + background-color: #f0f0f0; + text-align: right; + vertical-align:top; + padding: 12px; +} + +.commentBox .commentphoto img { + border: none; +} + +.commentBox .commentname a:hover { + text-decoration: underline; +} + +.commentdate { + margin-top: 3px; +} + +.commentBox .commentdate, .commentdate a { + color: #000; + text-decoration: none; + font-size: 9pt; +} + +.commentdate a:hover { + text-decoration: underline +} + +.commentBox .smalltext { + line-height: 10pt; +} + +.commentBox .smalltext a { + text-decoration: none; +} + +.commentBox .smalltext a:hover { + text-decoration: underline; +} + +.commentBox td.commentdetails { + vertical-align: top; + padding: 0 10px; +} + +.commentBox td.commentActions { + padding: 0 10px 10px 10px; + vertical-align: bottom; +} + +.commentThread { + clear: both; /* clear both in case there are floats or aligned images in the content that sits above the comment thread */ +} + +#replying .commentdetails { + padding: 15px 0 15px 25px +} + +#replying .commentinfo { + background-color: #a0a0a0; + color: #f0f0f0; +} + +#replying .commentdate, #replying .commentdate a { + color: #f0f0f0; +} + +#replying .commentname a { + color: #f0f0f0; +} + +#replying .commentphoto { + background-color: #a0a0a0; +} + +#replying table.comment { + border-bottom-color: #a0a0a0; + border-top-color: #a0a0a0; +} + +#addition .commentdetails { + padding: 15px 30px 10px 30px; +} + +#addition .commentinfo { + background-color: #a0a0a0; + color: #f0f0f0; +} + +#addition .commentname a { + color: #f0f0f0; +} + +#addition .commentdate, #addition .commentdate a { + color: #f0f0f0; +} + +#addition .commentphoto { + background-color: #a0a0a0; +} + +#addition table.comment { + border-bottom-color: #a0a0a0; + border-top-color: #a0a0a0; +} + +#focusedComment .commentBox td.commentdetails, #focusedComment td.commentActions { + background: #ffffd7; +} + +.anonymousAlert, .lockAlert { + background-color: #f0f0f0; + border: 1px dashed red; + font-size: 11px; + padding: 10px 5px; + margin: 4px; + line-height: 13px; +} + +.lockAlert { + width: 50%; +} + +.navmenu { + border: 1px solid #f0f0f0; + margin: 0; +} + +.menuheading { + font-weight: bold; + padding: 5px 4px 5px 10px; + color: #222; + background-color: #f0f0f0; +} + +.navmenu.collapsible-menu .menuheading { + background: #f0f0f0 url(../../../images/icons/grey_arrow_down.gif) no-repeat 98% 50%; +} +.navmenu.collapsible-menu .menuheading.closed { + background-image: url(../../../images/icons/grey_arrow_right.gif); +} + +.menuitems { + padding: 4px 4px 20px 4px; +} + +ul.navmenu { + padding-left: 0; + margin-top: 0; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +ul.navmenu li.menu-section { + list-style: none; +} + +.menu-section-list { + margin: 0; + padding: 5px 0 10px 0; +} + +.menu-section-list li { + list-style: none; + margin: 0; + line-height: 1.3; +} + +.menu-section-list li a:hover { + background-color: #f0f0f0; +} + +.menu-section-list li.active a, +.menu-section-list li.active a:hover { + color: #fff; + font-weight: bold; + background-color: #444; /* set to neutral colour */ +} + +.menu-section-list li a { + text-decoration: none; + color: #666; + display: block; + padding: 0.2em 10px; + cursor: pointer; +} + +.menu-section-list li a img { + padding-right: 2px; +} + +.rightpanel { + background: #f0f0f0; + -moz-border-radius: 3px; /* Firefox */ + -webkit-border-radius: 3px; /* Safari */ + border-radius: 3px; /* CSS3 (Opera?) */ + padding: .9em; +} + +h3.underlined, +#helpheading, +.sidebar-heading { + padding: 0; + margin: 10px 0; + text-align: left; + color: #333; + border-bottom: 1px solid #ccc; +} + +#helpheading, +#helpcontent h3.underlined, +.sidebar-heading { + font-size: 13px; + margin: -.1em; + padding: .1em .1em .2em .1em; +} + +#helpcontent h3.helpheading-spacing{ + margin-top: 20px; +} + +#helpcontent { + margin-top: .9em; +} + +#helpcontent p { + margin-bottom: 0; + margin-top: .9em; +} + +#helpcontent ul { + padding-left: 1.3em; +} + +#helpcontent dl { + margin-top: 0; +} + +#helpcontent dl dd { + margin: 0; + color: #333; + font-size: 90%; + margin-bottom: .2em; +} + +#helpcontent dl dd code, +#helpcontent dl dd pre { + color: #666; + margin: 0; + padding: 0; +} + +#helpcontent dl dd.text-formatting code { + display: inline-block; + width: 6em; +} + +#helpcontent dl dt { + margin-top: 1em; +} +#helpcontent dl dt.first { + margin-top: 0; +} + +.helptab-unselected { + font-weight: bold; + padding: 5px; + background-color: #f5f7f1; +} +.helptab-selected { + font-weight: bold; + background-color: #d0d9bd; + padding: 5px; +} +.helptabs { + margin: 0; + background-color: #f5f7f1; + padding: 5px; +} + +#profileSummary h3 { + font-weight: bold; + font-size: 10pt; + margin: 12px 0 4px; + padding: 0; +} +#profileSummary ul { + list-style-type: none; + margin: 0; + padding: 0; +} + +.pageheader { + padding: 5px 5px 5px 0; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.pagetitle { + font-size: 18pt; + line-height: normal; + font-weight: bold; +} + +.newpagetitle { + color: #ccc !important; +} + +.steptitle { + font-size: 18px; + font-weight: bold; + margin-bottom: 7px; +} + +.substeptitle { + font-size: 12px; + font-weight: bold; + margin: 2px 4px 4px 4px; + padding: 2px 4px 1px 4px; +} + +.has-blog-sidebar #title-text a { + word-wrap: break-word; + display: inline-block; + max-width: 75%; +} + +.stepdesc { + font-size: 10pt; + line-height: 13pt; + font-weight: normal; + color: #666; + 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; +} + +.sectionbottom { + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.topRow { + border-top-width: 2px; + border-top-style: solid; +} + +/* CONF-20585: + * non-dashboard headings will keep their current style + * text styling is duplicated in the div because not all divs contain headings + */ +.tabletitle { + font-size: 10pt; + font-weight: bold; + padding: 3px 0 2px 0; + margin: 8px 4px 2px 0; + border-bottom-width: 2px; + border-bottom-style: solid; +} +.tabletitle h2, +.wiki-content .tabletitle h2 { + font-size: 10pt; + font-weight: bold; + padding: 0; + margin: 0; +} +form[name=inlinecommentform] .tabletitle { + border: 0; +} + +/* CONF-20585: + * .tabletitle on the dashboard is purely a container + * dashboard headings are styled like .welcome-message-heading + */ +.dashboard .tabletitle { + margin: 0; + padding: 0; + border: none; +} +.dashboard .tabletitle h2 { + font-size: 14pt; + color: #3C78B5; + font-weight: normal; + font: Arial FreeSans Helvetica sans-serif; + padding: 3px 0 2px 0; + margin: 1em 0 0 0; + border-bottom: 1px solid #ccc +} + +.tabletitleops { + float: right; +} +.tabletitleops, .tabletitleops a, .tabletitleops img { + vertical-align: middle; +} +.tabletitleops img { + border: none; +} + +.fullWidth { + width: 100%; +} + +.pagesubheading { + color: #666; + font-size: 10px; + padding: 0 0 5px 0; +} + +hr { + color: #ccc; + height: 1px; +} + +h1 a:link, h1 a:visited, h1 a:active { + text-decoration: none; +} + +.logocell { + padding: 10px; +} + +input { + font-family: Helvetica, Arial, sans-serif; + font-size: 10pt; + color: #000; +} +input[type='password'] { + -webkit-appearance: caps-lock-indicator; +} + +textarea, textarea.editor { + font-family: Arial, Helvetica, sans-serif; + font-size: 10pt; + color: #333; +} + +.spacenametitle-printable { + font: 20px Impact, Arial, Helvetica; + font-weight: 100; + line-height: 25px; + margin: 0; +} + +.spacenametitle-printable a, +.spacenametitle-printable a:visited { + text-decoration: none; +} + +.blogDate { + font-weight: bold; + text-decoration: none; + color: black; +} + +.blogSurtitle { + background: #f0f0f0; + border: 1px solid #ddd; + padding: 3px; + margin: 1px 1px 10px 1px; +} + +.blog-post-listing { + margin-bottom: 66px; +} + +.blog-post-listing .logo-heading-block { + padding-left: 61px; +} + +.blog-post-listing a.blogHeading{ + margin: 0.05em 0; + padding: 0; +} + +.blog-post-listing .blogHeading{ + display: inline-block; + word-wrap: break-word; + margin: 0.1em 0; +} +.blog-post-listing .logoBlock{ + display: inline-block; + float: left; + margin-left: -61px; + vertical-align: top; +} + +.blog-post-listing .page-metadata{ + margin: 0.1em 0 0.1em 0.1em; +} + +.blog-post-listing .page-metadata.not-personal{ + font-size: 1em; +} + +.blog-post-listing .wiki-content { + clear: both; +} + +a.blogHeading { + font-size: 20pt; + line-height: normal; + font-weight: bold; + text-decoration: none; + word-wrap: break-word; +} + +.blogHeading a:hover { + text-decoration: underline; +} + +.blog-pagination{ + padding-bottom: 1em; +} + +.endsection { + color: #666; + clear: both; + padding: 1em 0 0.5em; + font-size: 1em; +} +.endsectionleftnav { + text-align: right; + color: #666; + clear: both; + padding-top: 10px; +} + +.endsection img{ + border: 0; + vertical-align: middle; +} + +h1, h2, h3, h4, h5, h6 { + line-height: normal; + font-weight: bold; + padding: 2px; +} + +h1 { + font-size: 24px; + margin: 36px 0 4px 0; +} + +h2 { + font-size: 18px; + margin: 27px 0 4px 0; +} + +h3 { + font-size: 14px; + margin: 21px 0 4px 0; +} + +h4 { + font-size: 12px; + margin: 18px 0 4px 0; +} + +h5 { + font-size: 10px; + margin: 14px 0 4px 0; +} + +h6 { + font-size: 8px; + margin: 14px 0 4px 0; +} + +.smallfont { + font-size: 10px; +} +.descfont { + color: #666; + font-size: 10px; +} +.smallerfont { + font-size: 9px; +} +.smalltext { + color: #666; + font-size: 12px; +} +.smalltext a { + color: #666; +} +.greyText +{ + color: #666; +} +.smalltext-blue { + font-size: 8pt; + color: #69c; +} +.surtitle { + margin-left: 1px; + margin-bottom: 5px; + font-size: 14px; + color: #666; +} + +/* css hack found here: http://www.fo3nix.pwp.blueyonder.co.uk/tutorials/css/hacks/ */ +.navItemOver { + font-size: 10px; + font-weight: bold; + voice-family: "\'}\'"; + voice-family: inherit; + cursor: pointer; +} + +.navItem { + font-size: 10px; + font-weight: bold; + color: #fff; +} + +.navItemOver a, +.navItemOver a:visited, +.navItemOver a:hover, +.navItem a, +.navItem a:hover, +.navItem a:visited { + text-decoration: none; +} + +div.padded { + padding: 4px; +} + +div.thickPadded { + padding: 10px; +} + +h3.macrolibrariestitle { + margin: 0; +} + +div.centered { + text-align: center; + margin: 10px; +} + +div.centered table { + margin: 0 auto; + text-align: left; +} + +.tableview table { + margin: 0; +} + +.tableview tr.alternateRow { + background: #f0f0f0; +} + +.tableview th { + text-align: left; + font-size: 12px; + padding: 5px 15px 2px 0; + border-bottom-width: 1px; + border-bottom-style: solid; +} +.tableview td { + text-align: left; + border-color: #eee; + border-width: 0 0 1px 0; + border-style: solid; + margin: 0; + padding: 5px 15px 3px 0; +} + +.grid { + margin: 2px 0 5px 0; + 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; +} +.error { + background-color: #fcc; +} + +.errorBox { + background-color: #fcc; + border: 1px solid #c00; + padding: 5px; + margin: 5px; +} + +.errorMessage, .errorMessage p { + color: #c00; +} + +.success { + background-color: #dfd; +} + +.successBox { + background-color: #dfd; + border: 1px solid #090; + padding: 5px; + margin-top:5px; + margin-bottom:5px; +} + +blockquote { + font-style: italic; + font-size: 10pt; + border-left-width: 1px; + border-left-style: solid; + padding: 0 20px; + margin: 10px 20px; +} + +blockquote p { + font-size: 10pt; +} + +blockquote em { + font-style: normal; +} + +div.small { + font-size: 9px; +} + +h1.pagename { + margin-top: 0; +} + +/* 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; +} + +.createlink, +a.createlink, +a.createlink:link, +a.createlink:visited, +a.createlink:active, +a.createlink:hover { + color: maroon; +} +.templateparameter { + font-size: 9px; + color: #00008b; +} + +#page-diffs, #conflict-diffs{ + min-height: 54px; +} + +#page-diffs { + margin-bottom: 2em; +} +#page-diffs .diff { + margin-top: 0; +} +#page-diffs .diff div { + word-wrap: break-word; +} + +.key-diffs { + border: 1px solid #CCCCCC; + float: right; + padding: 0.5em; +} +.key-diffs .diff { + margin: 0; + padding: 0; +} + +.diff { + font: 12px Monaco, Consolas, "Courier New", monospace; + padding: 0 0 0 1.5em; + margin-top: 1em; +} +.diff td { + font-size: 0.9em; + padding-bottom: 0.3em; +} +.diff-added-lines, .diff-added-words, .diff-added-chars { + background: #dfd; +} +.diff-deleted-lines, .diff-deleted-words, .diff-deleted-chars { + color: #999; + background: #fdd; + text-decoration: line-through; +} +.differror { + background: #A52A2A; +} + +div.diff-snip-link img.twixie, +div.diff-snip-text img.twixie { + margin: 0 4px -6px -20px; /* Twixie is 16 pixels wide, sum of left and right margins should be -16px */ +} + +div.diff-snip-link, +div.diff-snip-text { + margin: 0.85em 0; +} + +.greybackground { + background: #f0f0f0 +} + +.greybox { + border: 1px solid #ddd; + padding: 3px; + margin: 1px 1px 10px 1px; +} + +.borderedGreyBox { + background-color: #F0F0F0; + padding: 0.9em; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + margin-bottom: 17px; + +} + +.space-labels div.borderedGreyBox{ + float: right; + width: 189px; +} + + + +.borderedLabelHeading{ + border-bottom: 1px solid #CCCCCC; + color: #333333; + font-size: 13px; + font-weight: bold; + margin-bottom: 0.7em; +} + +.greyboxfilled { + border: 1px solid #ddd; + background: #f0f0f0; + padding: 3px; + margin: 1px 1px 10px 1px; +} + +.lightGreyBox { + background: #fafafa; +} + +.navBackgroundBox { + padding: 5px; + font-size: 22px; + font-weight: bold; + color: white; + text-decoration: none; +} + +.previewBoxTop { + background-color: #f0f0f0; + border-width: 1px 1px 0px 1px; + border-style: solid; + padding: 5px; + margin: 5px 0px 0px 0px; + text-align: center; +} +.previewContent { + background-color: #fff; + 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; + padding: 5px; + margin: 0px 0px 5px 0px; + text-align: center; +} + +.functionbox { + background-color: #f0f0f0; + border: 1px solid; + padding: 3px; + margin: 1px 1px 10px 1px; +} + +.functionbox-greyborder { + background-color: #f0f0f0; + border: 1px solid #ddd; + padding: 3px; + margin: 1px 1px 10px 1px; +} + +.rowNormal { + background-color: #fff; + } + +.rowAlternate { + background-color: #f7f7f7; +} + +/* used in the list attachments table */ +.rowAlternateNoBottomColor { + background-color: #f7f7f7; +} + +.rowAlternateNoBottomColor td, +.rowAlternateNoBottomNoColor td { + border-bottom: 0; +} + +.rowHighlight { + background-color: #f0f0f0; +} + +td.greenBar, +td.greenbar, +td.graybar, +td.redbar, +td.darkredbar { + font-size: 1em; + border: 1px solid #9c9c9c; + padding: 0; +} + +td.greenBar, +td.greenbar { + background: #00df00; +} +td.graybar { + background: #808080; +} +td.redbar { + background: #df0000; +} +td.darkredbar { + background: #af0000; +} + +tr.testpassed { + font-size: 2px; + background: #dfd; + padding: 0; +} +tr.testfailed { + font-size: 2px; + background: #fdd; + padding: 0; +} + +.toolbar { + margin: 0; + border-collapse: collapse; +} + +.toolbar td { + border: 1px solid #ccc; + padding: 2px; + color: #ccc; +} + +td.noformatting { + border-width: 0; + border-style: none; + text-align: center; + padding: 0; +} + +/* + * Divs displaying the license information, if necessary. + */ +.license { + border-top: 1px solid #bbb; + text-align: center; + font-size: 10pt; + background-color: #ffffe0; +} + +.license-eval, .license-none { + background-color: #fcc; +} + +.license-eval b, .license-none b { + color: #900; +} + +/* + * The shadow at the bottom of the page between the main content and the + * "powered by" section. + */ +.bottomshadow { + height: 12px; + background-image: url("../../../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; +} + +.bold { + font-weight: bold; +} + + +/* space action links */ +.tabnav .spaceActionLinks { + float: right; + margin: 0; + display: block; +} + +.tabnav .spaceActionLinks a span { + text-decoration: underline; +} +.tabnav .spaceActionLinks a.current { + color: black; +} +.tabnav .spaceActionLinks a.current span { + text-decoration: none; +} + +.tabnav .spaceActionLinks a.current:link { + color: black; +} + +.tabnav .spaceActionLinks a.current:visited { + color: black; +} + +/* non tabs */ +.tabnav .nontabs { + padding: 0; + margin: 5px 0 0 3px; + display: block; + float: left; +} + +/* editor tab customizations of the tabnav */ +#markupTab, #wysiwygTab, #previewTab { + font-size: 9pt; + padding: 3px 5px 2px; /* tab padding */ + margin: 8px 0 0 3px; /* margin-top is used to 'push' the tab down to fill in any gaps */ + font-weight: normal; +} + +/* alphabet list */ +#squaretab { + margin-left: 0; + padding-left: 0; + white-space: nowrap; + font-family: Verdana, Helvetica, Arial, sans-serif; + font-size: 8pt; + line-height: 11pt +} + +#squaretab li { + display: inline; + list-style-type: none; +} + +#squaretab a { + padding: 5px 7px 3px 7px; + border-width: 1px; + border-style: solid; +} + +#squaretab a:link, +#squaretab a:visited { + color: #fff; + text-decoration: none; +} + +#squaretab a:hover { + text-decoration: none; +} + +#current { + background: #fff; + color: #000; +} + +.blogcalendar th, +.blogcalendar td { + font-size: x-small; + font-weight: normal; + line-height: 140%; + padding: 2px; +} + +table.blogcalendar { + border-width: 1px; + border-style: solid; +} + +.blogcalendar th.calendarhead, +a.calendarhead { + font-size: x-small; + font-weight: bold; + padding: 2px; + letter-spacing: 0.3em; + text-transform: uppercase; +} + +.blogcalendar th.calendarhead, +.calendarhead, +.calendarhead:link, +.calendarhead:visited, +.calendarhead:active, +.calendarhead:hover { + color: #fff; +} + +.blogcalendar th { + font-size: x-small; + font-weight: bold; + padding: 2px; + background-color: #f0f0f0; +} + +.blogcalendar td { + font-size: x-small; + font-weight: normal; +} + +.sidebar-section #bloglist{ + margin-top: 5px; + display: inline; +} + + +#bloglist{ + background-color: #f0f0f0; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + width: 22em; + padding-top: 0.1em; +} + +.blogmonthnavigation{ + border:1px solid #CCCCCC; + position:relative; + text-decoration:none; + display: inline-block; + width: 10em; + font-size: 0.85em; + text-align:center; + margin: 0 0.3em 1em 1.1em; + padding: 0.2em 0.4em; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +div.pagination .blogmonthnavigation{ + margin: 0 0.5em 0 0; + width: 5em; + font-size: 1em; +} + +#blog-sidebar .bloglistmultiple{ + position: absolute; +} + +.bloglistitems li .icon-container { + display:block; + float:none; + padding-left:1.75em; +} + +.bloglistmultiple .bloglistheading h2{ + padding-top: 0; +} + +.bloglistitems{ + list-style-type: none; + padding-left: 1em; + padding-right: 1em; + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +.bloglistitems li{ + padding-bottom: 7px; + word-wrap: break-word; +} + +.bloglistitems li img{ + padding-right: 0.5em; + vertical-align: middle; +} + + +.bloglistheading h2{ + text-align: left; + margin: 1em; + color: #333333; +} + +.bloglistheading h2 a{ + text-decoration: none; + color: #333333; +} + +.has-personal-sidebar .bloglistheading h2 a, +.has-personal-sidebar .bloglistheading h2 +{ + margin-left: -0.1em; + margin-right: -0.1em; + padding: 0.1em 0.1em 0.2em; +} + +.has-personal-sidebar .bloglistitems +{ + margin-left: -0.9em; +} + +.has-personal-sidebar .blogmonthnavigation +{ + margin-left: 0; + margin-right: 1em; + +} + +#bloglist .control { + position: absolute; + top: 8px; +} +#bloglist .control.prev { + left: 13px; +} + +#bloglist .control.next { + right: 13px; +} + +.searchGroup { + padding: 0 0 10px 0; + background: #f0f0f0; +} + +.searchGroupHeading { + font-size: 10px; + font-weight: bold; + color: #fff; + padding: 2px 4px 1px 4px; +} + +.searchItem { + padding: 1px 4px; +} + +.searchItemSelected { + padding: 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, +.permissionSuperTab, +.permissionCell { + border-width: 0 0 0 1px; + border-style: solid; +} + +.permissionTab { + font-size: 10px; +} + +.permissionCell { + border-left: #bbb; + white-space: nowrap; +} + +/* side menu highlighting (e.g. space content screen) */ +.optionPadded { + padding: 2px; +} + +.optionSelected, .optionPadded.selected { + background-color: #ffc; + padding: 2px; + border: 1px solid #ddd; + margin: -1px; +} + +.optionSelected a, .optionPadded.selected a { + font-weight: bold; + text-decoration: none; + color: black; +} + +/* styles for extended operations */ +.greyLinks a:link, +.greyLinks a:visited, +.greyLinks a:active, +.greyLinks a:hover { + color: #666; + text-decoration: underline; +} + +.greyLinks { + color: #666; + padding: 10px; +} + +.operation-links { + color: #666; + margin-bottom: 10px; +} +.operation-links a:link, +.operation-links a:visited, +.operation-links a:active, +.operation-links a:hover { + color: #666; + text-decoration: underline; +} + +.separatorLinks a:link, +.separatorLinks a:visited, +.separatorLinks a:active { + color: white; +} + +.greynavbar { + background-color: #f0f0f0; + border-top-width: 1px; + border-top-style: solid; +} + +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; +} + +.greyFormBox { + border: 1px solid #ccc; + padding: 5px; +} + +.openPageHighlight { + background-color: #ffc; + padding: 2px; + border: 1px solid #ddd; +} + +.editPageInsertLinks, .editPageInsertLinks a { + color: #666; + font-weight: bold; + font-size: 10px; +} + +/* Style for label heatmap. */ +.top10 a { + font-weight: bold; + font-size: 2em; + color: #036; +} +.top25 a { + font-weight: bold; + font-size: 1.6em; + color: #036; +} +.top50 a { + font-size: 1.4em; + color: #036; +} +.top100 a { + font-size: 1.2em; + color: #036; +} + +.heatmap { + list-style: none; + width: 95%; + margin: 0 auto; +} + +.heatmap a { + text-decoration: none; +} + +.heatmap a:hover { + text-decoration: underline; +} + +.heatmap li { + display: inline; +} + +.minitab { + padding: 5px; + margin: 1px 0 0 0; + border-bottom-width: 1px; + border-bottom-style: solid; + text-decoration: none; + float: none; +} + +.minitab a { + padding: 5px 5px; + margin-left: 3px; + margin-top: 1px; + border-top: 1px solid; + border-right: 1px solid; + border-left: 1px solid; +} + +#makeRichTextDefault, #makeMarkupDefault { + border: 0; + font-weight: normal; + text-decoration: none; + display: block; + height: 2.5em; +} + +.minitab .selected { + background: white; + border-bottom: 1px solid white; + color: #000; + text-decoration: none; +} +.minitab .unselected { + border-bottom-width: 1px; + border-bottom-style: solid; + color: #fff; + text-decoration: none; +} + +.minitab a.unselected:link, +.minitab a.unselected:visited { + color: white; +} +.minitab a.selected:link, +.minitab a.selected:visited { + color: black; +} + +.minitabFont { + font-size: 9pt; + line-height: 9pt; +} + +.linkerror { + background-color: #fcc; +} + +a.labelOperationLink:link, +a.labelOperationLink:active, +a.labelOperationLink:visited, +a.labelOperationLink:hover { + text-decoration: underline; +} + +a.newLabel:link, +a.newLabel:active, +a.newLabel:visited, +a.newLabel:hover { + background-color: #dfd; +} + +ul.square { + list-style-type: square; +} + +/* Label auto complete styles needed until we use requireResource properly in labels-include.vm */ +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 *******/ +.toggleFormDiv{ + border: 1px solid #a7a6aa; + background-color: white; + margin-top: 5px; +} + +.toogleInfoDiv{ + border: 1px solid #a7a6aa; + background-color: white; + display: none; + padding: 5px; + margin-top: 10px; +} + +.inputSection{ + margin-bottom: 20px; +} + +#anonymous-warning { + padding: 15px 10px; +} + +#editBox{ + border: 1px solid #d3d3d3; + background-color: #f0f0f0; +} + +.tab-navigation .current a { + color: #000; + background-color: #fff; + border-bottom-color: #fff; +} + +.replaced { + background-color: #3c6; +} + +.topPadding { + margin-top: 20px; +} + +/* new form style */ +.form-block { + padding: 6px; +} +.form-error-block { + background: #fcc; + border-top: #f0f0f0 1px solid; + border-bottom: #f0f0f0 1px solid; + margin-bottom: 6px; + padding: 0 12px; +} +.form-element-large { + font-size: 16px; + font-weight: bold; +} + +.form-element-small { + font-size: 12px; + font-weight: bold; +} + +.form-header { + background: #ffffe0; + border-top: #f0f0f0 1px solid; + border-bottom: #f0f0f0 1px solid; + margin-bottom: 6px; + padding: 12px; +} +.form-header p, .form-block p, .form-error-block p { + line-height: normal; + margin: 12px 0; +} +.form-example { + color: #888; + font-size: 11px; +} +.form-divider { + border-bottom: #ccc 1px solid; + margin-bottom: 6px; +} +.confluence-button, +a.confluence-button, +a.confluence-button:link, +a.confluence-button:hover, +a.confluence-button:visited { + text-decoration: none; + border: 1px solid #aaa; + color: #000; + padding: 5px 10px; + cursor: default; + background: #fff url(../../../images/decoration/buttons-bg-white.png) repeat-x 0 100%; + -moz-border-radius: 5px; /* Firefox */ + -webkit-border-radius: 5px; /* Safari */ +} + +.confluence-button:active, +a.confluence-button:active { + border-color: #69c; + background-color: #eee; + background-image: url(../../../images/decoration/buttons-bg.png); +} + +.form-block .error { + padding: 6px; + margin-bottom: 6px; +} + +form.edit-trust-app fieldset { + border: none; +} +form.edit-trust-app fieldset div { + border: none; + border-left: solid 11em #f0f0f0; + padding: 0; + float: left; +} +form.edit-trust-app fieldset label { + float: left; + width: 10em; + padding: 0; + margin: 5px 1em 0 -10.5em; + text-align: right; + clear: left; +} +form.edit-trust-app fieldset input, +form.edit-trust-app fieldset textarea { + margin: 5px 0 0 0; + float: left; +} +form.edit-trust-app fieldset div.buttons { + border: none; + clear: left; + text-align: center; + float: none; +} +form.edit-trust-app fieldset div.buttons input { + float: none; +} + +.status-red { + color: #800; + font-weight: bold; +} +.status-green { + color: #080; + font-weight: bold; +} + +.person { + background-color: white; + width: 200px; + float: left; +} +.person td { + white-space: nowrap; +} + +#blogcalendar span.fwdArrow { + float: right; + display: block; + width: 16px; + height: 16px; + background-repeat: no-repeat; + background-image: url(/images/icons/forwd_16.gif); +} +#blogcalendar span.fwdArrow span { + display: none; +} +#blogcalendar span.backArrow { + float: left; + display: block; + width: 16px; + height: 16px; + background-repeat: no-repeat; + background-image: url(/images/icons/back_16.gif); +} +#blogcalendar span.backArrow span { + display: none; +} +.pageInfoTable { + padding: 0; + margin: 0; + border: 0; + width: 100%; + border-collapse: collapse; +} +.pageInfoTable td { + padding: 3px; +} +.pageInfoTable tr.alternateRow { + background: #f0f0f0; +} +.pageInfoLayoutTable { + width: 100%; + border-collapse: collapse; +} + +.pageInfoLayoutTable td { + padding: 5px 16px 5px 0; +} + +.pageInfoLayoutTable .tableview td { + padding-left: 0; +} + +.pageInfoLayoutTable ul { + padding-left: 20px; + list-style-type: none; +} + +.memoryusagebar { + width: 100%; +} +.memoryusagebar td { + border: none !important; + vertical-align: middle !important; +} + +input.alignedCheckbox { + margin: 0; +} + +div.spacer { + clear: both; +} + +span.left { + float: left; + text-align: left; +} + +span.right { + float: right; + text-align: right; +} + +.nobr { + white-space: nowrap; +} + +label.normal { + font-weight: normal; + color: black +} + +div.leftFloatMargined { + float: left; + margin-right: 2px +} + +#entitySearchResults { + border-collapse: collapse; + background-color: #fafafa; + text-align: left; + width: 100%; +} + +#entitySearchResults td { + border-top: 1px solid #ccc; + padding: 3px; + background-color: white; + vertical-align: top; +} + +#entitySearchResults th { + color: #666; + padding: 3px; + white-space:nowrap; +} + +#entitySearchResults .firstColumn { + width: 2%; + text-align: right; +} + +#entitySearchResults .secondColumn { + width: 1px; + text-align: right; +} + +a.paddedGreyDisabled { + background-color: #f0f0f0; + padding: 4px; + text-decoration: none; + color: #666; +} + +a.grey { + color: #666; +} + +div.topBottomMargin { + margin: 10px 0 10px 0 +} + +div.bottomMargin { + margin-bottom: 10px +} + +table.spaceList { + border-collapse: collapse; +} + +tr.spaceList td { + padding: 5px 0 5px 5px; + border-bottom: 1px solid #eee; + vertical-align: top; +} + +.spaceList .spaceDescription { + margin-top: 3px; + color: #666; +} + +tr.spaceList .operations { + vertical-align: top; + padding-right: 5px; +} + +.fontSizeBigger { + font-size: 11pt; + line-height: 14pt; +} + +.fontSizeDefault { + line-height: 1.3em; +} + +.fontSizeSmaller { + font-size: 10pt; + line-height: 13pt; +} + +/* deprecated. TODO - check for use in themes and remove. */ +.fontSizeTiny { + font-family: Verdana, Helvetica, Arial, sans-serif; + font-size: 8pt; + line-height: 11pt; +} + +table.dashboard td.left { + padding-right: 16px; +} + +/* dashboard action buttons */ +.dashboard .dashboard-action-button { + overflow: auto; + padding: 10px 0 20px 0; +} +.dashboard .dashboard-action-button span { + clear: both; + display: block; + margin: 0 0 10px 0; +} +.dashboard .dashboard-action-button span a, +.dashboard .dashboard-action-button span a:focus, +.dashboard .dashboard-action-button span a:hover { + color: #003366; + float: left; + padding: 0 10px 0 9px; + font-weight: bold; +} +/* pull the icons out so the link underline doesn't extend under them */ +.dashboard .dashboard-action-button span.icon { + float: left; + left: -5px; + position:relative; +} +/* end dashboard action buttons */ + +#view-attachments .dashboard-action-spacing{ + padding-top: 6px; + padding-bottom: 3px; +} + +#view-attachments a.dashboard-action{ + color: #000; +} + +.dashboard .dashboard-action:hover, #view-attachments .dashboard-action:hover { + color: #4F85BC; + background-position: 100% 0; +} + +.clearBoth { + clear: both; +} + +#labelInputSpan { + margin-top: 1px; +} + +form#quickSearch { + margin: 2px; + padding: 0; +} + +form#quickSearch input { + font-size: 10pt; + vertical-align: middle; +} + +table.fullWidthBorderless +{ + width: 100%; + border: 0; + border-collapse: collapse; +} + +/* Hacks for YUI menustuff */ + +#pageMenusMenuBar { + padding: 4px; +} + +#notificationFormat { + padding: 0; + margin: -9px 15px; +} + +#notificationFormat h4 { + font-weight: normal; +} + +#notificationFormat h2 { + font-weight: normal; +} + +#rssFormat { + padding: 0; + margin: 6px 15px; +} + +.notificationGreySide { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 0 0 5px 0; + padding: 3px 17px; +} + +.notificationDigest { + padding: 0 17px; +} + +.darkBlue { + color: #036; +} + +.grey { + color: #666; +} + +table.attachments { + width: 100%; + border-collapse: collapse; +} + +table.attachments th { + white-space: nowrap; + width: 1%; +} + +table.attachments td { + white-space: nowrap; + vertical-align: top; + width: 1%; +} + +table.attachments td.comment, table.attachments th.comment, table.attachments td.attachedto, table.attachments th.attachedto { + white-space: normal; + width: auto; +} + +#contentOptions { + list-style: none; + margin: 0; + padding: 0; +} + +#exportContentTree { + list-style-type: none; + margin: 5px 0; +} + +#contentOptionAllNote { + color: #666; + font-weight: normal; +} + +/* hidden: use when we want the content totally unavailable. */ +.hidden, +li.hidden { + display: none !important; + visibility: hidden; +} + +/* assistive: use when the hidden content should remain available to screen readers */ +.assistive, legend.assistive span { + position: absolute; + left: -20000px; + width: 4000px; + overflow: hidden; + top: 0; + height: 0; +} + +/* Needed for IE to stop the menu being expanded to 4000px */ +.ajs-menu-bar .ajs-menu-item .assistive { + position: absolute; + left: -20000px; + width: 4000px; + display: block; + visibility: visible; +} + +.ajs-menu-bar .ajs-menu-item .most-right-menu-item.assistive { + left: auto; + right: 20000px; +} + +#main { + text-align: left; + background-color: #fff; +} +#header { + min-height: 1.8em; + line-height: 1.8; + margin: 0; + padding: 0; + position: relative; + z-index: 1; +} +.quick-search { + margin: 0; + padding: 0; +} +#quick-search fieldset { + float: right; +} +.quick-search fieldset { + border: none; + margin: 0; + padding: 0; +} +.quick-search legend { + display: none; +} +input.blank-search, +input.placeholded, +.quick-search .placeholded { + color: #666; +} +#quick-search-query { + width: 13em; +} +/* default user navigation styles for themes using the old markup */ +#user-control-panel, #page-view-panel, #page-prefs-list { + list-style: none; + margin: 0; + padding: 0; +} +#user-control-panel li, +#page-view-panel li, +#page-prefs-list li, +.userNavBar li { /* deprecated styles provided for themes written prior to 2.8 */ + list-style: none; + display: inline; + color: #666; + font-size: 0.95em; + padding: 0 0 0 0.3em; +} +#user-control-panel a { + color: #666; +} +#user-control-panel li.first { + border:medium none; +} +#user-control-panel li { + border-left: 1px solid #666; + padding-left: 0.5em; +} +#page-view-panel li { + float: right; +} + +#breadcrumbs { + list-style: none; + padding: 0; + margin: 0; + overflow: auto; +} + +#breadcrumbs li { + white-space: nowrap; + display: inline; + float: left; + margin: 0 .2em 0 0; + padding-left: 15px; + background: url(../../../images/decoration/white_breadcrumbs_indicator.png); + background-repeat: no-repeat; + background-position: 3px center; +} + +#breadcrumbs li.first { + padding-left: 0; + background-image: none; +} + +#breadcrumbs li a { + text-decoration: none; +} + +#breadcrumbs li a:hover { + text-decoration: underline; +} + +#breadcrumbs li span { + display: block; +} + +#ellipsis strong { + cursor: pointer; + font-weight: normal; +} + +#breadcrumbs li.hidden-crumb { + display: none; +} + +a.twisty-open, a.twisty-closed { + background: no-repeat 50% 50%; + float: left; + margin-right: 0.5em; +} +a.twisty-open { + background-image: url(../../../images/icons/arrow_down.gif); +} +a.twisty-closed { + background-image: url(../../../images/icons/arrow_right.gif); +} + +a.print { + background: url(../../../images/icons/print_16.gif) no-repeat 50% 50%; +} +a.feed { + background: url(../../../images/icons/feed-icon-16x16.png) no-repeat 50% 50%; +} +a.pdf { + background: url(../../../images/icons/attachments/pdf.gif) no-repeat 50% 50%; +} +a.help { + background: url(../../../images/icons/help_16.gif) no-repeat 50% 50%; +} +a.add-user { + background: url(../../../images/icons/classic/16/125.png) no-repeat 50% 50%; +} + +a.remove-user { + background: url(../../../images/icons/classic/16/123.png) no-repeat 50% 50%; +} + +a.groups { + background: url(../../../images/icons/classic/16/127.png) no-repeat 50% 50%; +} + +a.cancel { + background: url(../../../images/icons/emoticons/error.gif) no-repeat 50% 50%; +} + +a.search-icon { + background: url(../../../images/icons/srch_16.gif) no-repeat 50% 50%; +} + +a img { + border: none; +} + +a.texticon { + min-height: 16px; + text-align: left; + padding:0 10px 0 20px; + background-position: 0 50%; + outline:0 none; +} + + +/* // Links **/ +#com-atlassian-confluence h1 { + line-height: 2; + margin: 0 0 10px 0; + padding: 0; + width: 100%; +} +#com-atlassian-confluence h1 img { + float: left; + margin: 0 .3em 0 0; +} +br.clear { + clear: both; + height: 1px; + overflow: hidden; +} +#footer, #footer-warning { + background: #f0f0f0; + text-align: center; +} +#footer p.license, #footer p.license a { + background: #036; + color: #fff; + margin: 0; +} +#poweredby { + border-top: 1px solid #bbb; + color: #666; + margin: 0; + padding: .5em; + list-style: none; +} +#poweredby a, #footer-warning { + color: #666; + text-decoration: none; +} +#poweredby li { + display: inline; +} +#poweredby li.print-only { + display: none; +} + +#poweredby a:hover.hover-footer-link{ + text-decoration: underline; +} + +#footer p.warning { + margin: 0 40px 10px 40px; + text-align: center; +} + +#menu-bar, #navigation .space-browse-links { + float: right; +} +#navigation .space-browse-links ul { + list-style: none; + margin: 0; + padding: 0; +} +#menu-bar { + margin: 0 .5em; +} +table { + clear: left; +} +.space-browse-links a:link, +.space-browse-links a:active, +.space-browse-links a:visited { + border: 1px solid #69c; + color: #000; + display: block; + font-weight: bold; + line-height: 2; + margin: 0.35em 0 -1px 0.5em; + padding: 0 0.5em 0 24px; + position: relative; + text-decoration: none; +} +.space-browse-links a:hover { + background-color: #036; + border: 1px solid #036; + color: #fff; +} +.space-browse-links a img { + float: left; + left: 4px; + margin: -8px 0 0; + position: absolute; + top: 50%; +} +#tree-div { + min-height:300px; +} +.mailLabel { + color: #666; + font-weight: bold; +} + +.unparented { + list-style: none; + margin: 0; + padding: 0; +} + +.parented { + list-style-image: url(../../../images/icons/link_out_bot.gif); +} + +.mailthread ul { + list-style-image: url(../../../images/icons/link_out_bot.gif); +} +.selectedMail { + background-color: #ffc; + padding: 2px; + border: 1px solid #ddd; +} + +.excerpt { + margin-top: 0; + margin-bottom: 0; +} + +.captcha { + padding: 10px; +} + +.captcha-image { + width: 200px; + height: 100px; +} + +#version-info { + margin-bottom: 10px; + padding:15px; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +.version-info span.page-history-view{ + display: block; + padding-bottom: 5px; + padding-top: 5px; + margin-left: 24px; +} + +.version-info span.page-history-view, .version-info span.page-history-view a { + color: #666666; + font-size: 9pt; + +} + +.version-info a.version-navigation{ + border:1px solid #EEEEEE; + padding:0.2em 0.4em; + position:relative; + text-decoration:none; + top:1px; + display: inline-block; + min-width: 75px; + text-align:center; +} + +.version-info span.current-version-margin{ + margin: 15px; +} + +.version-info div.navigation-spacing{ + margin-left: 24px; + padding-top: 2px; + font-size: 8pt; + +} + +.version-info strong.version-info-description{ + margin-left: 4px; +} + +.has-sidebar #version-info{ + margin-right: 17em; +} + +.has-blog-sidebar #version-info{ + margin-right: 24em; +} + +/* Fix menu focus when selecting with mouse in Firefox */ +li:active, a:active { + outline: none; +} + +/* Confluence global/space message styles */ +#messageContainer { + background: #fff; + list-style: none; + margin: 0; + padding: 0; +} + +#messageContainer li { + padding: 5px; + display: none; +} + +.message-close-button { + height: 16px; + width: 16px; + border: none; + float: right; + cursor: pointer; +} + +.page-metadata ul { + overflow: hidden; + margin: 0; + padding: 0; +} + +.page-metadata ul li { + list-style: none; + float: left; + padding: 0 5px 0 0; + margin: 0; +} + +.page-metadata ul a.page-metadata-icon { + text-decoration: none; +} + +.page-metadata ul a.page-restrictions span, +.page-metadata ul a.page-tinyurl span, +.page-metadata ul a.action-view-attachments span.page-metadata-attachments-text { + float: left; + height: 16px; + width: 16px; + text-indent: -9999em; +} + +.page-metadata ul a.page-restrictions span { + background: url(../../../images/icons/lock_16_grey.png) no-repeat; +} + +.page-metadata ul a.page-tinyurl span { + background: url(../../../images/icons/permalink_light_16.png) no-repeat; +} + +.page-metadata ul a.page-tinyurl:hover span { + background: url(../../../images/icons/permalink_dark_16.png) no-repeat; +} + +.page-metadata ul a.action-view-attachments span.page-metadata-attachments-text { + background: url(../../../images/icons/attach_16.png) no-repeat; +} + +.on-label, .yes-label { + color: #090; + font-weight: 800; +} + +.off-label, .no-label { + color: #900; + font-weight: 800; +} + +.progress-fill-color { + background: #00df00; +} + +.progress-background-color { + background: #fff; +} + +.vertical-center-aligning-container { + display: table; + height: 400px; + /* position : relative; */ + overflow: hidden; +} + +.vertical-center-div-outer { + display: table-cell; + vertical-align: middle; +} + +.vertical-center-div-inner { + text-align: center; +} + +.in-progress { + background-color: #ccc; +} + +h2.subheading, +#profile-main h2.subheading { + border-bottom: 1px solid #ddd; + color: #333; + font-weight: normal; + font-size: 1.1em; + margin: 0; +} + +.subheading { + color: #222; +} + +/*Columns*/ +div.section.one { + float: left; + width: 40%; +} +div.section.two { + float: left; + width: 60%; +} +div.section.two .section { + margin-left: 10px; +} + +.subheading .rss-icon { + background: url(../../../images/icons/feed-icon-16x16.png); + float: right; + height: 16px; + text-decoration: none; + width: 16px; + line-height: 0; +} + +.subheading .email-notification-icon { + background: url(../../../images/icons/watch_on_16.png); + float: right; + height: 16px; + text-decoration: none; + width: 16px; + line-height: 0; + margin-right: 5px; +} +/* End Confluence master stylesheet */ + +/** Font Colours */ +em.bad, +strong.bad { + font-style: normal; + color: #900; +} +em.good, +strong.good { + font-style: normal; + color: #090; +} +em.disabled, +strong.disabled { + font-style: normal; + color: #999; +} +/* **/ + +.blogpost .wiki-content { + _height: 1%; +} + +#version-comment.noteMacro { + padding: 5px; + +} + +#space-admin-body { + padding: 0 10px; +} + +#ajax-error { + background-color: #fcc; + border: 1px solid #741311; +} + +#ajax-error span.error{ + display: block; + text-align: center; + color: #741311; + line-height: 2; +} + +#ajax-error span.error a.close{ + margin-left: 10px; + text-decoration: underline; +} + +#poweredby { + background-image: url(../../../images/decoration/footer-shadow.gif); + background-repeat: repeat-x; +} + +#footer-warning { + display: block; + background-color: #ffffce; + border-top: 1px solid #f0c000; + border-bottom: 1px solid #f0c000; + color: #000; + padding: 2px 5px; +} + +.welcome-message-heading{ + font-size: 14pt; + color: #3C78B5; + font-weight: normal; + font: Arial FreeSans Helvetica sans-serif; + padding: 3px 0 2px 0; + margin: 1em 4px 0 0; + border-bottom: 1px solid #ccc; +} +.wiki-content, +.wiki-content p, +.wiki-content table, +.wiki-content tr, +.wiki-content td, +.wiki-content th, +.wiki-content ol, +.wiki-content ul, +.wiki-content li { + font-size: 10pt; + line-height: 13pt; +} + +.wiki-content p { + margin: 10px 0; + padding: 0; +} + +.wiki-content li, +.wiki-content ul p, +.wiki-content ol p { + margin: 0; + padding: 0; +} + +.wiki-content ul { + list-style-type: disc; +} + +.wiki-content ol, +.wiki-content ol ol ol ol, +.wiki-content ol ol ol ol ol ol ol, +.wiki-content ol ol ol ol ol ol ol ol ol ol { + list-style-type: decimal; +} + +.wiki-content ol ol, +.wiki-content ol ol ol ol ol, +.wiki-content ol ol ol ol ol ol ol ol, +.wiki-content ol ol ol ol ol ol ol ol ol ol ol { + list-style-type: lower-alpha; +} + +.wiki-content ol ol ol, +.wiki-content ol ol ol ol ol ol, +.wiki-content ol ol ol ol ol ol ol ol ol, +.wiki-content ol ol ol ol ol ol ol ol ol ol ol ol { + list-style-type: lower-roman; +} + +/*Needs the id selector because of the +'#com-atlassian-confluence h1' entry in master.css*/ +#com-atlassian-confluence .wiki-content h1, +.wiki-content h1, +.wiki-content h2, +.wiki-content h3, +.wiki-content h4, +.wiki-content h5, +.wiki-content h6 { + font-weight: bold; + line-height: normal; + padding: 0; +} + + +#com-atlassian-confluence .wiki-content h1, +.wiki-content h1 +{ + font-size: 21pt; + margin-top: 38px; +} + +.wiki-content h2 { + font-size: 18pt; + margin-top: 32px; +} + +.wiki-content h3 { + font-size: 15pt; + margin-top: 28px; +} + +.wiki-content h4 { + font-size: 13pt; + margin-top: 25px; +} + +.wiki-content h5 { + font-size: 11pt; + margin-top: 22px; +} + +.wiki-content h6 { + font-size: 10pt; + margin-top: 22px; +} + +.wiki-content .confluenceTable, .grid { +/* + margin-left: 0; + margin-right: 0; + margin-top: 10px; + margin-bottom: 10px; +*/ + padding: 0; + margin: 5px 0; +} + +.wiki-content td.confluenceTd, +.wiki-content th.confluenceTh { + padding: 5px 7px; +} +.wiki-content-preview { + padding: 5px; + border-left: 1px solid; + border-right: 1px solid; +} + +.wiki-content .preformattedContent, +.wiki-content .codeContent{ + padding: 12px 10px; +} + +.wiki-content .preformattedContent pre, +.wiki-content .codeContent pre{ + margin:0; + /** matches renderer-macros.css: .preformatted pre */ + font-family:"Courier New",Courier,monospace; + line-height:1.3; +} + +/* Styles for TinyMCE editor content */ + +.mceContentBody { + border: none; + padding: 10px; + text-align: left; + background: #fff; +} + +/* IE makes paragraphs in tables, so remove the default margin */ +.mceContentBody .confluenceTable p { + margin: 0; +} + +/* Firefox puts resizing controls on tables. They don't line up with tables unless they have margin 1px. +(0 breaks the border) */ +body.mceContentBody table.confluenceTable { + margin: 1px; +} + +.mceContentBody .wysiwyg-macro-body-preformat { + border: #ccc solid 1px; /* stick to neutral colour, or move to colors-css.vm if required */ + /* horizontal margin matches .panel */ + margin: 5px 20px; +} + +/* Styles for macros */ +.mceContentBody .wysiwyg-macro-inline { + display: inline; +} +.mceContentBody .user-new-line, +.mceContentBody .wysiwyg-macro-body-newline { + display: none; + line-height: 0; +} + +/* Styles for the RTE Autocomplete component */ +#autocomplete { + background-color: #eee; + border: solid 1px #ddd; +} +#autocomplete-trigger{ + background-color: #ddd; + padding: 0 2px; +} +#autocomplete-search-text { + padding: 0 4px 0 2px; +} +#tab-navigation { + border-bottom: 1px solid; + margin: 0 -10px; + margin-bottom: 10px; + padding: 0 10px; +} + +.tab-navigation { + list-style: none; + display: block; + margin: 0 0 -1px; + padding: 0; + overflow: hidden; +} +.tab-navigation .tab { + float: left; + display: inline; + font-weight: bold; + margin: 0 5px -1px 0; +} +.tab-navigation .tab a { + padding: .3em .4em; + text-decoration: none; + display: block; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; +} +.tab-navigation .notab { + margin: 1px 1px 0 1px; + padding: .3em; + float: left; +} + +/* Make the following more specific, so they aren't overriden by themes. */ +ul.tab-navigation .current a { + color: #000; + background-color: #fff; + border-bottom-color: #fff; /* IE */ +} +ul.tab-navigation .current a:hover { + color: #000; + background-color: #fff; + border-bottom-color: #fff; /* IE */ +} + +/* + * Drop down menu stylesheet + */ + +/* Menu bar layout */ +.ajs-menu-bar { + float: right; + line-height: 1.5; + position: relative; +} +.ajs-menu-bar, +.ajs-menu-bar .ajs-button, +.ajs-menu-bar .ajs-button a, +.ajs-menu-bar .ajs-button span, +.ajs-menu-bar .ajs-menu-item .ajs-menu-title, +.ajs-menu-bar .ajs-menu-item .ajs-menu-title span, +.ajs-menu-bar .ajs-menu-item .ajs-menu-title span span, +.ajs-menu-bar .ajs-drop-down a, +.ajs-menu-bar .ajs-drop-down a span, +.ajs-menu-bar .ajs-drop-down a span span { + /* all containers are block-level with no margin or padding by default */ + display: block; + margin: 0; + padding: 0; +} +.ajs-menu-bar .ajs-button span, +.ajs-menu-bar .ajs-menu-item .trigger span span { + padding-right: 1em; /* gap after menu label, must be wider than indicator image */ +} +.ajs-menu-bar .ajs-menu-item, +.ajs-menu-bar .ajs-button { + float: left; + list-style: none; + position: relative; +} +.ajs-menu-bar .ajs-menu-item a, +.ajs-menu-bar .ajs-button a { + line-height: 1.5; + text-decoration: none; + white-space: nowrap; +} +.ajs-menu-bar .ajs-button { + float: left; + line-height: 2; + list-style: none; + position: static; +} + +/* Drop-down indicator icon and on-hover colour changing */ +.ajs-menu-bar .ajs-menu-item .trigger span { + background-image: url(../../../images/decoration/menu_indicator.gif); + position: relative; +} +.ajs-menu-bar .ajs-menu-item.opened .trigger span { + background-image: url(../../../images/decoration/white_menu_indicator.gif); +} + +.ajs-menu-bar .ajs-menu-item.opened .trigger span span, +.ajs-menu-bar .ajs-menu-item .trigger span span { + background-image: none; +} +.ajs-menu-bar .ajs-button a:hover, +.ajs-menu-bar .ajs-menu-item.opened .trigger span { + color: #fff; /* system colour - not derived from colour scheme */ +} + +/* Menu bar icons */ +.ajs-menu-bar .ajs-menu-item .trigger span { + background-position: 100% 50%; + background-repeat: no-repeat; +} +.ajs-menu-bar .ajs-button span, +.ajs-menu-bar .ajs-menu-item .trigger span span { + background-position: 0 50%; + background-repeat: no-repeat; +} + +/* Drop-down menu layout */ +.ajs-menu-bar .ajs-menu-item .ajs-drop-down a { + background: #fff no-repeat 4px 50%; + border: none; + display: block; + line-height: 1.6; + margin: 0; + padding: 0 0.5em 0 24px; + text-decoration: none; +} +.ajs-menu-bar .ajs-drop-down { + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-bottomright: 3px; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + background: #fff; /* system colour - not derived from colour scheme */ + border: solid 1px #c1c1c1; + font-weight: normal; + min-width: 12em; + padding: 0; + position: absolute; + left: 0; + white-space: nowrap; + z-index: 1000; +} + +/* CONFDEV-820 - Temporary fix */ +#header-menu-bar .ajs-drop-down { + min-width: 15em; +} + +.ajs-menu-bar .ajs-drop-down.above { + -moz-border-radius: 0; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -webkit-border-radius: 0; + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; + bottom: 2em; + margin-top: -2px; +} +.ajs-menu-bar .ajs-drop-down ul, +.ajs-menu-bar ul.ajs-drop-down { + border-top: solid 1px #e1e1e1; + margin: 0; + padding: 5px 0; + position: relative; + list-style: none; +} +.ajs-menu-bar .ajs-drop-down ul.first, +.ajs-menu-bar ul.ajs-drop-down.first { + border-top: none; +} +.ajs-menu-bar .ajs-drop-down li { + margin: 0; + padding: 0; +} +.ajs-menu-bar .ajs-menu-item div.ajs-drop-down a { + background-position: .5em 50%; + background-repeat: no-repeat; + border: none; + display: block; + line-height: 2; + margin: 0; + padding: 0 1em 0 28px; + position: relative; + text-decoration: none; + white-space: nowrap; +} +.ajs-menu-bar .ajs-drop-down a img { + float: left; + height: 16px; + margin: .3em 0 0 -20px; + width: 16px; +} + +/* Drop-down menu icons */ +.ajs-menu-bar .ajs-drop-down a.add-comment { + background-image: url(../../../images/icons/comment_16.png); +} +.ajs-menu-bar .ajs-drop-down a.add-attachment { + background-image: url(../../../images/icons/attach_16.png); +} +.ajs-menu-bar .ajs-drop-down a.add-page { + background-image: url(../../../images/icons/docs_16.gif); +} +.ajs-menu-bar .ajs-drop-down a.add-news { + background-image: url(../../../images/icons/blogentry_16.gif); +} +.ajs-menu-bar .ajs-drop-down a.action-view-history { + background-image: url(../../../images/icons/clock_16.png); +} +.ajs-menu-bar .ajs-drop-down a.action-page-permissions { + background-image: url(../../../images/icons/lock_16_grey.png); +} +.ajs-menu-bar .ajs-drop-down a.action-view-attachments { + background-image: url(../../../images/icons/attach_16.png); +} +.ajs-menu-bar .ajs-drop-down a.action-page-favourite { + background-image: url(../../../images/icons/fav_off_16.png); +} +.ajs-menu-bar .ajs-drop-down a.ie-page-favourite-selected { /* using IE style here to make IE7 not duplicate bg */ + background-image: url(../../../images/icons/fav_on_16.png); +} +.ajs-menu-bar .ajs-drop-down a.action-page-watching-space { + background-image: url(../../../images/icons/watching_space_16.png); +} +.ajs-menu-bar .ajs-drop-down a.action-manage-watchers { + background-image: url(../../../images/icons/watch_manage_16.png); +} +.ajs-menu-bar .ajs-drop-down a.action-page-watching { + background-image: url(../../../images/icons/watch_off_16.png); +} +.ajs-menu-bar .ajs-drop-down a.ie-page-watching-selected { /* using IE style here to make IE7 not duplicate bg */ + background-image: url(../../../images/icons/watch_on_16.png); +} +.ajs-menu-bar .ajs-drop-down a.waiting { + background-image: url(../../../images/icons/wait.gif); +} + +.ajs-menu-bar .ajs-menu-item .section-secondary li a, +.ajs-menu-bar .ajs-menu-item .section-modify li a { + padding-left: 8px; + font-size: .9em; +} + +.ajs-menu-bar .ajs-menu-item .ajs-drop-down li.hidden { + display: none; +} + +/* Customisations for header menu bar */ +#header-menu-bar { + margin-top: 0; + margin-right: 5px; +} +#header .ajs-menu-item a { + float: left; + line-height: 1.5; + margin: 0; + text-decoration: underline; +} +#header-menu-bar li.ajs-menu-item a { + line-height: 2; +} +#header-menu-bar li.ajs-menu-item .ajs-drop-down a { + line-height: 1.5; +} +#header .ajs-menu-bar li.ajs-menu-item, +#header .ajs-menu-bar li.ajs-button { + margin: 0; + padding: 0; +} +#header .ajs-menu-bar li.ajs-menu-item a { + padding-left: 0.5em; +} +#header .ajs-menu-item .trigger span { + background-image: url(../../../images/decoration/white_menu_indicator.gif); /* header menus always use a white indicator */ +} +#header .ajs-menu-item .trigger span span { + background: none; +} +#header .ajs-menu-bar li.ajs-menu-item a.trigger:focus { + outline: none; +} +#header .ajs-menu-bar li.ajs-menu-item a.trigger { + float: left; + padding: 0 0.5em; + text-decoration: none; +} +#header .ajs-menu-bar li.ajs-menu-item.opened .ajs-drop-down li, +#header .ajs-menu-bar li.ajs-menu-item.opened .ajs-drop-down a { + background-color: #fff; /* system colour - not derived from colour scheme */ + background-image: none; +} +.ajs-menu-bar .ajs-menu-item.opened, +.ajs-menu-bar .ajs-button a { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} +.ajs-menu-bar .ajs-menu-item.opened { + -moz-border-radius-bottomleft: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-left-radius: 0; + -webkit-border-bottom-right-radius: 0; +} + +/* Customisations for header menus */ +#header .ajs-menu-bar .ajs-drop-down { + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-bottomright: 3px; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-top: none; + margin-top: 0; + margin-left: -1px; + top: 2em; + z-index: 9; +} +#header .ajs-menu-bar .ajs-drop-down a { + float: none; + padding: 2px 2em; + text-decoration: none; +} +#header .ajs-menu-bar .ajs-menu-item .ajs-drop-down ul, +#header .ajs-menu-bar .ajs-menu-item ul.ajs-drop-down { + border-top: 1px solid #cce; +} +#header .ajs-menu-bar .ajs-drop-down ul.first, +#header .ajs-menu-bar ul.ajs-drop-down.first { + border: none; +} + +/* Customisations for navigation menu bar */ +#navigation .ajs-menu-bar { + margin: 10px 0 0 1em; +} +#navigation .ajs-menu-bar .ajs-button span, +#navigation .ajs-menu-bar .ajs-menu-item .ajs-menu-title span span { + padding-left: 25px; /* width of icon + gap before menu label */ +} +/*#navigation .ajs-menu-bar li.ajs-menu-item, +#navigation .ajs-menu-bar li.ajs-button { + margin-top: -10px; +} +*/ +#navigation .ajs-menu-bar li.ajs-menu-item .ajs-menu-title, +#navigation .ajs-menu-bar li.ajs-button a { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + color: #535353; /* system colour - not derived from colour scheme */ + font-size: 1.1em; + line-height: 20px; + padding: .35em .5em; +} +#navigation .ajs-menu-bar li.ajs-menu-item .ajs-menu-title { + -moz-border-radius-bottomleft: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-left-radius: 0; + -webkit-border-bottom-right-radius: 0; +} +#navigation .ajs-menu-bar .ajs-button a.edit span { + background-image: url(../../../images/icons/edit_20.png); +} +#navigation .ajs-menu-bar .ajs-button a.view span { + background-image: url(../../../images/icons/view_20.png); +} +#navigation .ajs-menu-bar li.ajs-menu-item a.add span span { + background-image: url(../../../images/icons/add_20.png); +} +#navigation .ajs-menu-bar li.ajs-menu-item a.action span span { + background-image: url(../../../images/icons/tools_20.png); +} +.ajs-menu-bar .ajs-menu-item .most-right-menu-item { + left: auto; + margin: 0; + right: 0; +} +#header .ajs-menu-item a.ajs-menu-title span { /* Not sure why these styles need to be duplicated for IE, but it works. */ + background-image: url(../../../images/decoration/white_menu_indicator.gif); /* header menus always use a white indicator */ + background-repeat: no-repeat; + background-position: 100% 60%; /* 60% lines up with middle of lowercase letters in IE */ +} +.ajs-drop-down { + clear: both; + z-index: 500; + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down li { + border-bottom: solid 1px #fff; +} +.ajs-menu-bar .ajs-drop-down li { + display: block; + margin: 0; + padding: 0; + position: relative; +} + +#navigation .ajs-menu-bar .ajs-drop-down a { + display: block; + padding: 0.33em 0.67em; + cursor: pointer; +} +#navigation .ajs-menu-bar div.ajs-drop-down a span { + padding: 0 0 0 21px; + height: 16px; + line-height: 16px; +} +.ajs-menu-bar div.ajs-drop-down a span { + cursor: pointer; + height: 16px; + line-height: 16px; + zoom: 1; +} +#navigation .ajs-menu-bar .section-secondary li a, +#navigation .ajs-menu-bar .section-modify li a { + line-height: 2; + padding-left: 0; +} +#navigation .ajs-menu-bar .section-secondary li a span, +#navigation .ajs-menu-bar .section-modify li a span { + padding-left: 8px; +} +.ajs-menu-bar .ajs-drop-down a img { + clear: left; + float: none; + margin: .3em 0 .3em -20px; + vertical-align: middle; +} + +#navigation .ajs-menu-bar .ajs-button a, +#navigation .ajs-menu-bar .ajs-button a span { + display: inline-block; /* makes the edit button have layout, but doesn't give it enormous width*/ +} + +.ajs-menu-bar .ajs-drop-down a.add-page, +.ajs-menu-bar .ajs-drop-down a.add-news { + background: none; +} +.ajs-menu-bar .ajs-drop-down a.add-page span { + background: url(../../../images/icons/docs_16.gif) no-repeat 0 50%; +} +.ajs-menu-bar .ajs-drop-down a.add-news span { + background: url(../../../images/icons/blogentry_16.gif) no-repeat 0 50%; +} + +* html .ajs-menu-bar .ajs-drop-down a.add-comment { + background-image: none; +} +* html .ajs-menu-bar .ajs-drop-down a.add-comment span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/comment_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.add-attachment, +* html .ajs-menu-bar .ajs-drop-down a.action-view-attachments, +* html .page-metadata ul a.action-view-attachments span.page-metadata-attachments-text { + background-image: none; +} +* html .ajs-menu-bar .ajs-drop-down a.add-attachment span, +* html .ajs-menu-bar .ajs-drop-down a.action-view-attachments span, +* html .page-metadata ul a.action-view-attachments span.page-metadata-attachments-text { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/attach_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .page-metadata ul a.action-view-attachments span.page-metadata-attachments-count { + display: inline-block; /* IE6 */ + text-indent: 9999em; +} +* html .page-metadata ul a.page-restrictions span, +* html .ajs-menu-bar .ajs-drop-down a.action-view-history, +* html .ajs-menu-bar .ajs-drop-down a.action-page-permissions, +* html .ajs-menu-bar .ajs-drop-down a.action-page-favourite, +* html .ajs-menu-bar .ajs-drop-down a.ie-page-favourite-selected, +* html .ajs-menu-bar .ajs-drop-down a.action-manage-watchers, +* html .ajs-menu-bar .ajs-drop-down a.action-page-watching-space, +* html .ajs-menu-bar .ajs-drop-down a.action-page-watching, +* html .ajs-menu-bar .ajs-drop-down a.ie-page-watching-selected { + background-image: none; +} +* html .ajs-menu-bar .ajs-drop-down a.action-view-history span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/clock_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .page-metadata ul a.page-restrictions span, +* html .ajs-menu-bar .ajs-drop-down a.action-page-permissions span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/lock_16_grey.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.action-page-favourite span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/fav_off_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.ie-page-favourite-selected span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/fav_on_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.action-page-watching-space span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/watching_space_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.action-manage-watchers span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/watch_manage_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.action-page-watching span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/watch_off_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.ie-page-watching-selected span { + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/watch_on_16.png', sizingMethod='crop')"); + zoom: 1; +} +* html .ajs-menu-bar .ajs-drop-down a.waiting { + background-image: none; +} +* html .ajs-menu-bar .ajs-drop-down a.waiting span { + background-image: url(../../../images/icons/wait.gif); + background-repeat: no-repeat; + filter: inherit; +} +* html #navigation .ajs-menu-bar .ajs-button a.edit span { + background-image: none; + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/edit_20.png', sizingMethod='crop')"); + width: 1%; +} + +* html #navigation .ajs-menu-bar li.ajs-menu-item a.add span span { + background-image: none; + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/add_20.png', sizingMethod='crop')"); + width: 1%; +} + +* html #navigation .ajs-menu-bar li.ajs-menu-item a.action span span { + background-image: none; + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/tools_20.png', sizingMethod='crop')"); + width: 1%; +} + +* html #navigation .ajs-menu-bar .ajs-button a.view span { + background-image: none; + filter: expression(runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + document.getElementById('confluence-context-path').content + + "/images/icons/view_20.png', sizingMethod='crop')"); + width: 1%; +} + +table.confluenceTable { + margin: 5px; + border-collapse: collapse; +} + +td.confluenceTd, table.confluenceTable td.confluenceTd { + border-width: 1px; + border-style: solid; + border-color: #ddd; + padding: 5px; + vertical-align: top; + min-width: 0.6em; +} + +th.confluenceTh, table.confluenceTable th.confluenceTh { + border-width: 1px; + border-style: solid; + border-color: #ddd; + padding: 5px; + background-color: #f0f0f0; + text-align: left; + vertical-align: top; + min-width: 0.6em; +} +.panel { + color: black; + padding: 0; + margin: 10px 20px; + background: #f0f0f0; + border-width: 1px; + border-style: solid; + overflow: hidden; +} + +.alertPanel { + border-color: #c00; +} + +.infoPanel { + border-color: #69c; +} + +.alertPanel, .infoPanel { + border-style: solid; + border-width: 1px; + padding: 8px; + margin: 10px; +} + +.infopanel-heading { + font-weight: bold; + padding: 4px 0 2px 0; +} + +/* basic panel (basicpanel.vmd) style */ +.basicPanelContainer { + border-width: 1px; + border-style: solid; + margin-top: 2px; + margin-bottom: 8px; + width: 100%; +} + +.basicPanelTitle { + padding: 5px; + margin: 0; + background-color: #f0f0f0; + color: black; + font-weight: bold; +} + +.basicPanelBody { + padding: 5px; + margin: 0; +} + +.panelHeader { + padding: 0 12px; + line-height: 2; /* vertical alignment for title */ + text-align: center; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.codeHeader, .panelHeader, .panelContent { + background: #f0f0f0; +} + +.preformattedHeader, .codeContent, .preformattedContent { + background: #fff; +} + +.panelContent { + color: #000; + margin: 0; + padding: 0 12px; + text-align: left; + font-size: .95em; +} + +.panelContent, +.panelContent p, .panelContent th, +.panelContent td, .panelContent li { + text-align: left; +} + + +html body { /* HACK: Temporary fix for CONF-15412 */ + overflow: visible; +} + +/* IE7 fix for CONFDEV-1056 */ +body.dashboard { + *min-width: 1000px; +} +img { + -ms-interpolation-mode: bicubic; +} +#header { + height: 1%; +} +#breadcrumbs { + height: 1%; /* IE6 wrapping */ + overflow: auto; + *overflow: visible; /* IE7 and below */ +} +#breadcrumbs li { + white-space: nowrap; +} +* html #breadcrumbs li { + background-image: url(../../../images/decoration/white_breadcrumbs_indicator.gif); /* IE6 */ +} +* html .page-metadata { + height: 1.2em; /* IE6 */ +} +#breadcrumbs li { + background-position: 3px 10px; +} +form { + margin: 0; + padding: 0; +} +.tab-navigation .tab { + float: left; + display: inline; + font-weight: bold; + margin: 0 5px 0 0; + position: relative; +} +.tab-navigation .tab a { + display: inline-block; /* anchors were making tabs very wide in Clickr theme in IE */ +} +a.icon { + height: 16px; +} +#tree-div { + min-height: 300px; + height: auto !important; + height: 300px; +} +h1 #content-title { + margin: 0; + display: block; + width: 90%; /* 93% and upwards breaks at least one of the IEs */ +} + +h1 span.title-text { + height: 1%; +} +#com-atlassian-confluence h1 { + width: auto; +} + +#com-atlassian-confluence h1 img.logo { + *margin-bottom: 0; +} + +* html #com-atlassian-confluence h1 img.custom { + /* sets max-height for IE - roughly equivalent to what real browsers do with 2.5em max-height */ + height: expression( this.scrollHeight > 59 ? "60px" : "auto" ); +} + +#tab-navigation, +.tab-navigation { + zoom: 1; +} +.has-sidebar #content .code { + _clear: both; + _overflow: auto; +} +.menu-section-list li a:visited, +.menu-section-list li a:hover { + color: #666; +} +.menu-section-list li.active a:visited { + color: #fff; +} + +/* Don't remove or dropdowns may break in IE6. CONF-17932 */ +* html #header-menu-bar .hidden { + width: 12em; +} + +* .bloglistitems{ + list-style-type: none; + padding-left: 1em; + padding-right: 1em; + margin-top: 0.5em; + margin-bottom: 0.5em; + margin-left: 0; +} + +* .blogmonthnavigation{ + border:1px solid #CCCCCC; + position:relative; + text-decoration:none; + display: inline-block; + width: 10em; + font-size: 0.85em; + text-align:center; + margin: 0 -0.5em 1em 1em; + padding: 0.2em 0.4em; +} + +#conflict-diffs, #page-diffs{ + min-height: 55px; +} + +#page-diffs .diff { + *margin-right: 1em; +} + +/* TODO: remove temp fix after AUI upgrade + CONFDEV-918 temp fix, prevents IE7 crash. Don't remove until https://studio.atlassian.com/browse/AJS-509 + is resolved and the fix version is implemented in Confluence. */ +#com-atlassian-confluence form.dashboard-actions { + *min-height: 0; +} +/* end CONFDEV-918 temp fix */ + +/* + Styles for macros bundled in Renderer. +*/ + +.panelMacro { + margin: 10px 20px; + overflow: hidden; /* fix width next to floated content */ +} + +.panelMacro table { + text-align: left; + padding: 0 20px; + width: 100%; +} + +.panelMacro td, .panelMacro p { + font-size: 1em; + padding: 14px 0; +} + +.searchMacro { + font-size: 10pt; + margin: 10px 0; +} + +.searchMacro .result { + margin-top: 3px; + padding: 0 5px 5px 5px; + border-bottom: 1px solid #ddd; +} + +.searchMacro .resultSummary { + margin-bottom: 7px; +} + +.rssMacro { + font-size: 10pt; +} + +.rssMacro table { + margin: 10px 0; + width: 100%; + border-collapse: collapse; +} + +.rssMacro table th, +.rssMacro table td { + border: 1px solid #ccc; + padding: 4px; +} + +.rssMacro table th { + background: #f0f0f0; +} + +/* Code styles */ +.code { + border-width: 1px; + border-style: dashed; + overflow: auto; +} + +.code, .preformatted { + background-color: #fff; +} + +.code pre, .preformatted pre { /* needs 'pre' to override TinyMCE style */ + font-family:"Courier New", Courier, monospace; + line-height: 1.3; +} + +.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; +} + +/* Recently Updated Styles */ +.recentlyUpdatedItem { + border-bottom: #f0f0f0 1px solid; + border-top: #f0f0f0 1px solid; + margin: 10px 0 0 0; + padding: 0; + border-spacing: 0; + width: 100%; + text-decoration: none; + border-collapse: collapse; +} + +.recentlyUpdatedItem td { + padding: 10px; + border-bottom: #f0f0f0 1px solid; + vertical-align: top; +} + +.recentlyUpdatedItem .authorAndDate { + background-color: #f0f0f0; + width: 25%; +} + +.recentlyUpdatedItem .date { + margin-top: 4px; + font-size: 90%; + color: #666; +} + +.recentlyUpdatedItem .profilePic { + float: right; + background-color: #f0f0f0; + margin: 0 2px; +} + +.recentlyUpdatedItem .twixie { + padding: 10px 0 0 4px; +} + +.recentlyUpdatedItem td.icon { + padding: 8px 0 0 1px; +} + +.recentlyUpdatedItem .details { + padding-left: 7px; +} + +.recentlyUpdatedItem .summary, .recentlyUpdatedItem .thumbnail { + margin-top: 3px; + color: #666; +} + +.moreRecentlyUpdatedItems { + text-align: right; + margin-top: 10px; + font-size: 10pt; +} + +a.content-type-page span, div.content-type-page, span.content-type-page { + background-image: url(../../../images/icons/docs_16.gif); + background-repeat: no-repeat; +} + +a.content-type-blogpost span, div.content-type-blogpost, span.content-type-blogpost { + background-image: url(../../../images/icons/blogentry_16.gif); + background-repeat: no-repeat; +} + +a.content-type-comment span, div.content-type-comment, span.content-type-comment { + background-image: url(../../../images/icons/comment_16.gif); + background-repeat: no-repeat; +} + +a.content-type-space span, div.content-type-space, span.content-type-space, +a.content-type-spacedesc span, div.content-type-spacedesc, span.content-type-spacedesc { + background-image: url(../../../images/icons/web_16.gif); + background-repeat: no-repeat; +} + +a.content-type-personalspacedesc span, div.content-type-personalspacedesc, span.content-type-personalspacedesc { + background-image: url(../../../images/icons/personal_space_16.gif); + background-repeat: no-repeat; +} + +a.content-type-mail span, div.content-type-mail, span.content-type-mail { + background-image: url(../../../images/icons/mail_content_16.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment span, div.content-type-attachment, span.content-type-attachment { + background-image: url(../../../images/icons/attachments/file.gif); + background-repeat: no-repeat; +} + +a.content-type-file span, div.content-type-file, span.content-type-file { + background-image: url(../../../images/icons/attachments/file.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-application-pdf span, div.content-type-attachment-application-pdf, span.content-type-attachment-application-pdf { + background-image: url(../../../images/icons/attachments/pdf.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-image span, div.content-type-attachment-image, span.content-type-attachment-image { + background-image: url(../../../images/icons/attachments/image.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-text-xml span, div.content-type-attachment-text-xml, span.content-type-attachment-text-xml { + background-image: url(../../../images/icons/attachments/xml.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-text-html span, div.content-type-attachment-text-html, span.content-type-attachment-text-html { + background-image: url(../../../images/icons/attachments/html.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-text span, div.content-type-attachment-text, span.content-type-attachment-text { + background-image: url(../../../images/icons/attachments/text.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-application-zip span, div.content-type-attachment-application-zip, span.content-type-attachment-application-zip { + background-image: url(../../../images/icons/attachments/zip.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-application-excel span, div.content-type-attachment-application-excel, span.content-type-attachment-application-excel { + background-image: url(../../../images/icons/attachments/excel.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-application-powerpoint span, div.content-type-attachment-application-powerpoint, span.content-type-attachment-application-powerpoint { + background-image: url(../../../images/icons/attachments/powerpoint.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-application-word span, div.content-type-attachment-application-word, span.content-type-attachment-application-word { + background-image: url(../../../images/icons/attachments/word.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-java span, div.content-type-attachment-java, span.content-type-attachment-java { + background-image: url(../../../images/icons/attachments/java.gif); + background-repeat: no-repeat; +} + +a.content-type-attachment-file span, div.content-type-attachment-file, span.content-type-attachment-file { + background-image: url(../../../images/icons/attachments/file.gif); + background-repeat: no-repeat; +} + +a.content-type-status span, div.content-type-status, span.content-type-status { + background-image: url(../../../images/icons/quotes.png); + background-repeat: no-repeat; +} + +div.content-type-userinfo, span.content-type-userinfo { + background-image: url(../../../images/icons/user_16.gif); + background-repeat: no-repeat; +} + +a.content-type-follow span, div.content-type-follow, span.content-type-follow { + background-image: url(../../../images/icons/fav_on_16.png); + background-repeat: no-repeat; +} + +a.content-type-favourite span, div.content-type-favourite, span.content-type-favourite { + background-image: url(../../../images/icons/fav_on_16.png); + background-repeat: no-repeat; +} + +body.login, +body.login #main, +body.login #full-height-container { + background: #fafafa; +} + +* html body.login, +* html body.login #full-height-container { + background: #f0f0f0; +} + +#com-atlassian-confluence.login h1 { + width: 560px; + margin: 0 auto; +} + +#login-container { + margin: 0 auto; + width: 500px; + padding: 20px 30px; + background: #fff; +} + +body.login #header, body.login #websudo { + display: none; +} + +/* Gets rid of the break above the footer */ +body.login .clear { + display: none; +} + +body.login #main { + overflow: hidden; + padding: 10% 0 12%; +} + +#login-container .form-error-block{ + background: none; + border: none; + margin: 0; + padding: 0; +} + +#login-container, +#login-container form.aui { + color: #333; +} + +#login-container, +#login-container .captcha-image { + border: 1px solid #eee; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +#login-container div.login-form-container { + margin-bottom: 10px; + padding: 0 0 5px 20px; +} + +#login-container .login-form-container fieldset { + padding-top: 15px; +} + +#login-container .checkbox label { + left: 0; + margin-right: 0; + float: none; + display: inline; +} + +/* Overide default label styling */ +#com-atlassian-confluence.login #login-container label { + color: #333; +} + +#com-atlassian-confluence.login #login-container .error p { + background: #fff; + color: #c00; +} + +#login-container .login-form-container .text, +#login-container .login-form-container .password { + width: 95%; +} + +#login-container .message { + padding: 0; + width: auto; +} + +#login-container p { + margin: 0 0 1em; + color: #333; +} + +#login-container p.last { + margin: 0; +} + +#login-container p.success-message { + color: green; +} + +body.signup #main{ + padding: 5% 0 7%; +} + +#login-container .captcha-image { + margin: 10px 0; + width: 200px; + height: 100px; + float: left; +} + +#captcha-error span.errorMessage { + font-weight: normal; +} + +#captcha-container .reload { + width: 16px; + height: 16px; + float: left; + position: relative; + top: 16px; + left: 10px; +} + +#captcha-container label#captcha-reponse-label { + float: none; + left: 0; + margin: 0; + width: auto; +} + +#captcha-container input { + width: 192px; +} + +#coherence-copyright { + margin: 0; + text-align: center; + font-size: 0.8em; + padding-bottom: 3px; +} + +#coherence-copyright a { + color: #666; +} + +#login-container .userLogoLink { + float: left; + padding-right: 5px; +} + +#login-container a#login-notyou { + padding-left: 5px; +} + +#login-container div.warningPanel { + margin: 0 0 10px 0; +} +span.icon, a.icon { + display: inline-block; + width: 16px; + height: 16px; + text-align: left; + text-indent: -9999em; +} + +/* used in pagelist.vm */ +.tabletitleops .icon { + width: 12px; + height: 12px; +} + +.icon-wait { + background: transparent url(../../images/icons/wait.gif) no-repeat scroll 0 0; +} +.icon-space { + background: transparent url(../../images/icons/web_16.gif) no-repeat scroll 0 0; +} +.icon-browse-space { + background: transparent url(../../images/icons/browse_space.gif) no-repeat scroll 0 0; +} +.icon-add-page { + background: transparent url(../../images/icons/add_page_16.gif) no-repeat scroll 0 0; +} +.icon-add-page-disabled { + background: transparent url(../../images/icons/add_page_faded_16.gif) no-repeat scroll 0 0; +} +.icon-add-fav { + background: transparent url(../../images/icons/star_grey.gif) no-repeat scroll 0 0; +} +.icon-remove-fav { + background: transparent url(../../images/icons/star_yellow.gif) no-repeat scroll 0 0; +} +.icon-home-page { + background: transparent url(../../images/icons/home_16.gif) no-repeat scroll 0 0; +} +.icon-recently-updated-page { + background: transparent url(../../images/icons/new_16.gif) no-repeat scroll 0 0; +} +.icon-page { + background: transparent url(../../images/icons/docs_16.gif) no-repeat scroll 0 0; +} +.icon-comment { + background: transparent url(../../images/icons/comment_16.gif) no-repeat scroll 0 0; +} +.icon-space { + background: transparent url(../../images/icons/web_16.gif) no-repeat scroll 0 0; +} +.icon-personal-space { + background: transparent url(../../images/icons/personal_space_16.gif) no-repeat scroll 0 0; +} +.icon-user { + background: transparent url(../../images/icons/user_16.gif) no-repeat scroll 0 0; +} +.icon-blog { + background: transparent url(../../images/icons/blogentry_16.gif) no-repeat scroll 0 0; +} +.icon-trackback { + background: transparent url(../../images/icons/document_exchange.gif) no-repeat scroll 0 0; +} +.icon-mail { + background: transparent url(../../images/icons/mail_content_16.gif) no-repeat scroll 0 0; +} +.icon-status { + background: transparent url(../../images/icons/quotes.png) no-repeat scroll 0 0; +} +.icon-show-more { + background: transparent url(../../images/icons/add_12.gif) no-repeat scroll 0 0; +} +.icon-show-less { + background: transparent url(../../images/icons/subtract_12.gif) no-repeat scroll 0 0; +} +.icon-file-pdf { + background: transparent url(../../images/icons/attachments/pdf.gif) no-repeat scroll 0 0; +} +.icon-file-image { + background: transparent url(../../images/icons/attachments/image.gif) no-repeat scroll 0 0; +} +.icon-file-xml { + background: transparent url(../../images/icons/attachments/xml.gif) no-repeat scroll 0 0; +} +.icon-file-html { + background: transparent url(../../images/icons/attachments/html.gif) no-repeat scroll 0 0; +} +.icon-file-java { + background: transparent url(../../images/icons/attachments/java.gif) no-repeat scroll 0 0; +} +.icon-file-text { + background: transparent url(../../images/icons/attachments/text.gif) no-repeat scroll 0 0; +} +.icon-file-zip { + background: transparent url(../../images/icons/attachments/zip.gif) no-repeat scroll 0 0; +} +.icon-file-excel97-template { + background: transparent url(../../images/icons/attachments/excel.gif) no-repeat scroll 0 0; +} +.icon-file-powerpoint97-template { + background: transparent url(../../images/icons/attachments/powerpoint.gif) no-repeat scroll 0 0; +} +.icon-file-word97-template { + background: transparent url(../../images/icons/attachments/word.gif) no-repeat scroll 0 0; +} +.icon-file-excel97 { + background: transparent url(../../images/icons/attachments/excel.gif) no-repeat scroll 0 0; +} +.icon-file-powerpoint97 { + background: transparent url(../../images/icons/attachments/powerpoint.gif) no-repeat scroll 0 0; +} +.icon-file-word97 { + background: transparent url(../../images/icons/attachments/word.gif) no-repeat scroll 0 0; +} +.icon-file-excel-macro { + background: transparent url(../../images/icons/attachments/excel.gif) no-repeat scroll 0 0; +} +.icon-file-excel { + background: transparent url(../../images/icons/attachments/excel.gif) no-repeat scroll 0 0; +} +.icon-file-excel-template { + background: transparent url(../../images/icons/attachments/excel.gif) no-repeat scroll 0 0; +} +.icon-file-powerpoint-macro { + background: transparent url(../../images/icons/attachments/powerpoint.gif) no-repeat scroll 0 0; +} +.icon-file-powerpoint { + background: transparent url(../../images/icons/attachments/powerpoint.gif) no-repeat scroll 0 0; +} +.icon-file-powerpoint-slideshow { + background: transparent url(../../images/icons/attachments/powerpoint.gif) no-repeat scroll 0 0; +} +.icon-file-powerpoint-template { + background: transparent url(../../images/icons/attachments/powerpoint.gif) no-repeat scroll 0 0; +} +.icon-file-word { + background: transparent url(../../images/icons/attachments/word.gif) no-repeat scroll 0 0; +} +.icon-file-word-template { + background: transparent url(../../images/icons/attachments/word.gif) no-repeat scroll 0 0; +} +.icon-file-unknown { + background: transparent url(../../images/icons/attachments/file.gif) no-repeat scroll 0 0; +} + +/* + * TODO: BN added in 3.3 + * https://studio.atlassian.com/browse/PLUG-580: Until this issue is + * resolved we can't follow the sprite guideline. + */ +.icon-people-directory span.icon { + background: transparent url(../../images/icons/people_directory_16.png) no-repeat scroll 0 0; +} + +.icon-rss-feed-small span.icon { + background: transparent url(../../images/icons/feed-icon-16x16-small.png) no-repeat scroll 0 0; +} + +.icon-create-space span.icon { + background: transparent url(../../images/icons/add_space_16.gif) no-repeat scroll 0 0; +} +/* Information plugin styles */ + +.noteMessage, .warningMessage, .infoMessage, .tipMessage { + border-style: solid; + border-width: 1px; + text-align: center; + padding: 5px; + overflow: hidden; /* fix width next to floated content */ +} + +.noteMessage { + border-color: #f0c000; + background: #ffffce; +} + +.warningMessage { + border-color: #c00; + background: #fcc; +} + +.infoMessage { + border-color: #69c; + background: #d8e4f1; +} + +.tipMessage { + border-color: #090; + background-color: #dfd; +} + +table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td { + border: none; +} + +.informationMacroPadding { + padding: 5px 0 0 5px; +} + +.noteMacro, .warningPanel { + background-color: #ffffce; +} +#addition .noteMacro { + border-style: solid; + border-width: 1px; + border-color: #f0c000; + background-color: #ffffce; + text-align:left; + padding: 10px; + width: 100%; + margin: 5px 20px; +} + +#addition .noteMacro td { + font-size: 10pt; + padding: 2px; + padding-right: 15px; +} + +#addition .noteMacro p { + font-size: 10pt; +} + +#addition .noteMacro b { + font-size: 10pt; +} + +#addition table.noteMacro td { + border: none; +} + +#replying .noteMacro { + border-style: solid; + border-width: 1px; + border-color: #f0c000; + background-color: #ffffce; + text-align:left; + padding: 10px; + width: 100%; + margin: 5px 20px; +} + +#replying .noteMacro td { + font-size: 10pt; + padding: 2px; + padding-right: 15px; +} + +#replying .noteMacro p { + font-size: 10pt; +} + +#replying .noteMacro b { + font-size: 10pt; +} + +#replying table.noteMacro td { + border: none; +} + +.tipMacro { + background-color: #dfd; +} + +.warningMacro { + background-color: #fcc; +} + +.infoMacro { + background-color: #d8e4f1; +} + +.warningPanel { + border-style: solid; + border-width: 1px; + padding: 8px; + margin: 10px; +} + +.warningPanel { + border-color: #f0c000; +} + + + + +/* Layout plugin styles */ + +.sectionMacro, +.sectionMacro p, +.sectionMacro ul, +.sectionMacro ol { + font-size: 10pt; +} + +table.sectionMacro td { + border: none; +} + +table.sectionMacroWithBorder td.columnMacro { + border-style: dashed; + border-width: 1px; + border-color: #ccc; +} + + +/* + Colors for Confluence (included for all themes by default). +*/ +h1, h2, h3, h4, h5, h6, +.wiki-content h1, +.wiki-content h2, +.wiki-content h3, +.wiki-content h4, +.wiki-content h5, +.wiki-content h6, +.pagetitle, +.steptitle, +.substeptitle, +.formtitle, +a.blogHeading, +.more-comments a, +th.confluenceTh, +table.confluenceTable th.confluenceTh, +table.admin th, +.form-element-large, +.form-element-small, +#com-atlassian-confluence .mce_h1 span.mceText, +#com-atlassian-confluence .mce_h2 span.mceText, +#com-atlassian-confluence .mce_h3 span.mceText, +#com-atlassian-confluence .mce_h4 span.mceText, +#com-atlassian-confluence .mce_h5 span.mceText, +#com-atlassian-confluence .mce_h6 span.mceText { + color: #003366; +} + +.wiki-content h1, +.wiki-content h2 { + border-bottom-color: #6699cc; +} + +.wiki-content-preview { + border-left-color: #6699cc; + border-right-color: #6699cc; +} + +.pageSectionHeader { + border-bottom-color: #6699cc; +} + +.panel { + border-color: #6699cc; +} + +.panelHeader, +.menuheading, +.pageheader, +.sectionbottom { + border-bottom-color: #6699cc; +} + +.topRow { + border-top-color: #6699cc; +} + +.tabletitle, .pageSectionHeader, .section-header h2 { + color: #003366; +} +.tabletitle, .pageSectionHeader { + border-bottom-color: #6699cc; +} + +a:link, +a:visited, +a:active, +a:hover, +#default-labels-header a.add { + color: #003366; +} + +h1 a:hover { + border-bottom-color: #003366; +} + +.spacenametitle-printable, +.spacenametitle-printable a, +.spacenametitle-printable a:visited { + color: #999999; +} + +.navItemOver, +.navItemOver a, +.navItemOver a:visited, +.navItemOver a:hover { + color: #ffffff; + background-color: #003366; +} + +.navItem { + background-color: #6699cc; +} + +.navItem a, +.navItem a:hover, +.navItem a:visited { + color: #ffffff; +} + +.tableview th { + color: #003366; + border-bottom-color: #6699cc; +} + +blockquote { + border-left-color: #6699cc; +} + +.navBackgroundBox { + background: #6699cc; +} + +.previewBoxTop, +.previewContent, +.previewBoxBottom, +.functionbox { + border-color: #6699cc; +} + +.smalltext-blue { + color: #6699cc; +} + +.tabnav, +.comment .tabnav, +ul.tabnav { + border-bottom-color: #6699cc; +} + +.tabnav .tabs a { + border-color: #6699cc; + background: #6699cc; +} + +.tabnav .tabs a:link, .tabnav .tabs a:visited { + color: #ffffff; +} +.tabnav .tabs a:hover { + color: #ffffff; + background: #003366; + border-color: #003366; +} + +.tabnav .spaceActionLinks a:link, +.tabnav .spaceActionLinks a:visited { + color: #003366; +} + +.foldertab-box { + border-left-color: #6699cc; + border-right-color: #6699cc; + border-bottom-color: #6699cc; +} + +#squaretab a { + border-color: #6699cc; +} + +#squaretab a:link, #squaretab a:visited { + background-color: #6699cc; +} + +#squaretab a:hover { + color: #ffffff; + background-color: #003366; + border-color: #003366; +} + +table.blogcalendar { + border-color: #6699cc; +} + +.blogcalendar th.calendarhead, +a.calendarhead, +a.calendarhead:link, +a.calendarhead:visited, +a.calendarhead:hover { + background-color: #6699cc; + color: #ffffff; +} + +.searchGroupHeading { + background-color: #6699cc; + color: #ffffff; +} + +.permissionTab { + background: #6699cc; + color: #ffffff; +} + +.permissionSuperTab { + background: #003366; + color: #ffffff; +} + +/* styles for links in the top bar */ +.topBarDiv a:link, +.topBarDiv a:visited, +.topBarDiv a:active, +.topBarDiv a:hover, +.topBarDiv { + color: #ffffff; +} + +.topBar { + background-color: #003366; +} + +.basicPanelContainer { + border-color: #6699cc; +} + +.greynavbar { + border-top-color: #6699cc +} + +div.license-personal { + background-color: #003366; + color: #ffffff; +} + +div.license-personal a { + color: #ffffff; +} + +.minitab { + border-bottom-color: #6699cc; +} + +.minitab a { + border-top-color: #6699cc; + border-right-color: #6699cc; + border-left-color: #6699cc; +} + +.minitab .unselected { + border-bottom-color: #6699cc; + background: #6699cc; +} + +#header { + background-color: #003366; +} +#header a, +#breadcrumbs, +#header .ajs-menu-bar li.ajs-menu-item a.trigger { + color: #ffffff; +} +.breadcrumbs { + border-color: #6699cc; +} + +#navigation, #tab-navigation { + border-bottom-color: #6699cc; +} + +#com-atlassian-confluence .aui-dd-parent .aui-dropdown .dropdown-item a, +.ajs-menu-bar li.ajs-menu-item .ajs-drop-down a { + color: #535353; +} +#header .ajs-menu-bar li.ajs-menu-item .ajs-drop-down a { + color: #003366; +} + +#com-atlassian-confluence .aui-dd-parent a.perms-dropdown-trigger:hover, +#com-atlassian-confluence .aui-dd-parent a.perms-dropdown-trigger:focus, +#com-atlassian-confluence .aui-dd-parent .aui-dropdown .dropdown-item.active a, +.menu-section-list li.active a, +.menu-section-list li.active a:hover, +#navigation .ajs-menu-bar .ajs-button a:hover, +/* .ajs-menu-bar .ajs-menu-item.opened, */ +.ajs-menu-bar .ajs-menu-item li.active a, +.aui-dd-parent .aui-dropdown li.active, +.aui-dd-parent .aui-dropdown li:hover span, +.aui-dd-parent .aui-dropdown a:focus span, +.ajs-menu-bar .ajs-menu-item.opened .ajs-drop-down li.active a, +#navigation .ajs-menu-bar li.ajs-button a.active, +#header .ajs-menu-bar li.ajs-menu-item.opened .ajs-drop-down li.active a, +.ajs-content-hover .popup-follow a:hover { + color: #ffffff; + background-color: #6699cc; +} +#header .ajs-menu-bar li.ajs-menu-item.opened, +#header .ajs-menu-bar li.ajs-menu-item.opened a.trigger { + background-color: #336699; + border-color: #336699; +} +.ajs-menu-bar .ajs-menu-item.opened a.trigger { + background-color: #6699cc; +} + +#header .ajs-menu-bar .ajs-drop-down { + border-color: #003366; +} +#header .ajs-menu-bar .ajs-drop-down li.separator { + border-top-color: #003366; +} + +.tab-navigation .tab a { + background-color: #6699cc; + border: 1px solid #6699cc; + color: #ffffff; +} +.tab-navigation .tab a:hover { + color: #ffffff; + background-color: #003366; + border-bottom-color: #003366; +} + + + +/***** Pre 2.8 markup styles for backwards compatability ******/ +#foldertab { + border-bottom-color: #6699cc; +} + +#foldertab li a { + border-color: #6699cc; + background: #6699cc; +} + +#foldertab li a:link, +#foldertab li a:visited { + color: #ffffff; +} +#foldertab li a:hover { + color: #ffffff; + background: #003366; + border-color: #003366; +} + +.logoSpaceLink, +.logoSpaceLink a:link, +.logoSpaceLink a:visited, +.logoSpaceLink a:active { + color: #999999; +} + +.logoSpaceLink a:hover { + color: #003366; +} + +.selectedminitab { + border-color: #6699cc +} + +.unselectedminitab { + border-color: #6699cc; + background: #6699cc; +} + +.tabletitle, .heading-text-color { + color: #003366; +} + +a.unselectedminitab:hover { + color: #ffffff; + background: #003366; + border-color: #003366; +} + +ol.autocompleter li.focused { + background: #6699cc; + color: #ffffff; +} + +/* End colour styles for Confluence */ + +/* + This stylesheet defines styles that only apply to the Default theme. Styles common to all themes should go in + master.css +*/ +html, body { + height: 100%; +} + +body { + margin: 0; + font-family: Helvetica, Arial, sans-serif; + background-color:#fff; +} + +#full-height-container { + min-height: 100%; + position: relative; + background-color: #fff; +} + +#header { + margin: 0; + padding: 0 10px; + min-height: 2em; + line-height: 2; +} + +#websudo { + margin: 0; + padding: 0 10px; + min-height: 2em; + line-height: 2; +} + +.email{ + /* offset the negative margin set by the header for emails only */ + margin: 10px; +} + +#page-view-panel { + float: right; +} + +#com-atlassian-confluence h1 img { + max-height: 2.5em; /* scale logo image with font size */ + margin-bottom: 0.3em; +} +#com-atlassian-confluence h1 img.custom { + height: auto; +} + +h1 span.title-text { + display: table; /* page title wrapping drops straight down */ +} +h1 a:hover { + color: inherit; /* inherit the colour instead of hard-coding blue */ +} +.editable-title { + margin: 0 10px 0 58px; +} + +#main { + padding: 10px 10px 6em 10px; +} +.content-preview #main { + padding-bottom: 10px; +} + +#content { + clear: left; +} +#content.space { + margin-top: 2.6em; +} + +.quick-search-submit { + display: none; +} + +#page-view-panel li, #page-prefs-list li { + color: #666; + float: left; + font-size: .9em; + margin: 0 0 0 .3em; + padding: 0 0 0 .3em; +} + +#navigation { + display: inline; +} + +.page-actions { + float: right; + border: solid 1px #ccc; + padding: 5px; + margin-left: 10px; +} + +.remove-control { + display: none; +} + +.page-metadata { + color: #666; + font-size: 0.9em; + margin: 10px 0; +} +.page-metadata a:link, +.page-metadata a:active, +.page-metadata a:hover, +.page-metadata a:visited { + color: #666; + font-style: normal; +} + +.section-header { + margin-bottom: 5px; + padding: 2px 0; +} + +/* All links are set to action.linkColor but section header links are grey */ +.section-header a:link, +.section-header a:active, +.section-header a:hover, +.section-header a:visited { + color: #666; +} + +h2.section-title { + font-size: 12pt; + font-weight: bold; + color: black; + margin-top: 20px; + padding: 0; + display: inline; +} + +.section-title a:link, +.section-title a:active, +.section-title a:hover, +.section-title a:visited { + color: black; +} + +#sidebar, +.sidebar { + clear: right; + float: right; + width: 16em; + margin-left: 10px; +} + +#space-blog-search-query{ + width: 21.5em; +} + +#blog-sidebar{ + width: 22em; + margin-top: 2em; +} + +.has-sidebar #content.space, +.has-sidebar #content.edit form.markup, +.has-sidebar .wiki-content, +.has-sidebar.active-wikimarkup .errorBox{ + margin-right: 17em; +} + +.has-blog-sidebar #content.space, +.has-blog-sidebar #content.edit form.markup, +.has-blog-sidebar .wiki-content +{ + margin-right: 24em; +} + +.blog-post-listing .wiki-content, +.has-blog-sidebar .blogpost-view .wiki-content .wiki-content{ + margin-right: 0; +} + +.has-sidebar .wiki-content .wiki-content, +.has-blog-sidebar .wiki-content .wiki-content, +.has-blog-sidebar .comment-content.wiki-content { + margin-right: 0; +} + +.active-richtext #content.create-page, +.active-preview #content.create-page { + margin-right: 0 !important; +} + +.sidebar-content { + margin: 10px 0 0 1em; +} +.blogcalendar { + width: 16em; +} +.blogcalendar th a.calendarhead, +.blogcalendar th.calendarhead { + font-size: 1em; +} +.blogcalendar td, +.blogcalendar th { + font-size: .85em; +} + +/* folder tab link styles */ +.tabnav .tabs a { + padding: 5px 5px 4px; + margin: 5px 3px 0 0; + border-width: 1px; + border-style: solid; + border-bottom: none; + text-decoration: none; + display: block; + float: left; +} + +.tabnav .tabs a.current { + background: white; + border-bottom: 1px solid white; + color: black; +} +.tabnav .tabs a.current:link, .tabnav .tabs a.current:visited { + color: black; +} +.tabnav .tabs a.current:hover { + background: white; + border-bottom: 1px solid white; + color: black; +} + +/* list page navigational tabs */ +.tabnav, .comment .tabnav { + padding: 0; + margin: 0; + border-bottom-width: 1px; + border-bottom-style: solid; + float: left; + display: inline; + list-style-position: outside; + width: 100%; + font-weight: bold; + font-size: 10pt; +} + +.after-tabnav { + clear: both; +} + +.tabnav li.tabs { + list-style: none; + margin: 0 0 -1px 10px; + float: left; + display: block; +} + + +/* dashboard customization */ +#spacesLabel { + padding: 4px 6px; + float: left; + margin-top: 5px; +} + +#footer { + position:absolute; + bottom:0; + width:100%; +} + +#poweredby, +#poweredby a { + font-size: 11px; +} + +/* We can't have a separate IE css file because the default theme + hard codes the location of the theme stylesheet */ + +/* IE6: treated as min-height*/ +* html #full-height-container { + height: 100%; + background-color:#F0F0F0; +} + +* html #main { + padding-bottom: 1em; + height: 88%; /* fake ie6 min height - not perfect but better than alternatives */ +} + +* html #footer { + position: relative; +} + +/* no footer in popups. */ +body.popup-window #footer { + display: none; +} + +* html .popup-window #full-height-container { + background-color:#fff; +} + + + + + + diff --git a/site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.data/eclipse_tuscany_home.jpg b/site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.data/eclipse_tuscany_home.jpg Binary files differnew file mode 100644 index 0000000000..4550d0ab9a --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.data/eclipse_tuscany_home.jpg diff --git a/site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.data/eclipse_tuscany_home.jpg.jpeg b/site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.data/eclipse_tuscany_home.jpg.jpeg Binary files differnew file mode 100644 index 0000000000..b8913ec0d3 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.data/eclipse_tuscany_home.jpg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.html b/site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.html new file mode 100644 index 0000000000..5eef0eff33 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/running-oasis-spec-tests-in-a-osgi-environment.html @@ -0,0 +1,200 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Running OASIS Spec Tests in a OSGi environment : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="Running OASIS Spec Tests in a OSGi environment">Running OASIS Spec Tests in a OSGi environment</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="Running OASIS Spec Tests in a OSGi environment">Running OASIS Spec Tests in a OSGi environment</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Running OASIS Spec Tests in a OSGi environment</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=11469306"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=11469306">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=11469306"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=11469306">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=11469306"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=11469306">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <P>The OASIS SCA Spec Tests are designed to run in a OSGi environment and below are some configuration necessary to properly import/run/debug the tests in Eclipse PDE environment</P> + +<P><B>Generate Eclipse IDE project files</B></P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + mvn -Peclipse +</PRE> +</DIV></DIV> + +<P>To facilitate debug, use the following commands:</P> + +<P>1) To generate sources for the Tuscany 2.x modules</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +mvn source:jar under sca-java-2.x/trunk/modules +</PRE> +</DIV></DIV> +<P>2)To download source files, please use the following command</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +mvn -Peclipse -DdownloadSources=<SPAN class="code-keyword">true</SPAN> +</PRE> +</DIV></DIV> + +<P><B>Configure TUSCANY_HOME pointing to where Tuscany distribution is available</B></P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + export TUSCANY_HOME=<tuscany checkout>/distribution/all/target/apache-tuscany-sca-all-2.0-SNAPSHOT.dir/tuscany-sca-2.0-SNAPSHOT +</PRE> +</DIV></DIV> + +<P>Optionally, you could also configure this as an VM argument on the Eclipse run configuration</P> + +<P>-DTUSCANY_HOME=/Users/lresende/opensource/apache/tuscany/java-sca-2.x/distribution/all/target/apache-tuscany-sca-all-2.0-SNAPSHOT.dir/tuscany-sca-2.0-SNAPSHOT</P> + +<P><SPAN class="image-wrap" style=""><IMG src="running-oasis-spec-tests-in-a-osgi-environment.data/eclipse_tuscany_home.jpg" style="border: 0px solid black"></SPAN></P> + +<P><B>Configure contribution location</B></P> + +<P>There are various files containing the contribution location necessary to run the tests, these files are:</P> + +<P>sca-assembly/Test_Client/src/main/resources/oasis-sca-tests.properties<BR> +sca-java-caa/Test_Client_JavaCAA/src/main/resources/oasis-sca-tests.properties<BR> +sca-java-ci/Test_Client_JavaPOJO/src/main/resources/oasis-sca-tests.properties<BR> +sca-policy/Test_Client/src/main/resources/oasis-sca-tests.properties</P> + +<P>although it's currently configured with a relative path, you might need to configure the location based on your system</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +org.oasis.sca.tests.assembly.contribution.location=../%1/target/%1.zip +</PRE> +</DIV></DIV> + + + + + + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Running OASIS Spec Tests in a OSGi environment'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.data/sample-calculator-jaxws-client.jar b/site/trunk/site-publish/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.data/sample-calculator-jaxws-client.jar Binary files differnew file mode 100644 index 0000000000..f4b2c021b4 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.data/sample-calculator-jaxws-client.jar diff --git a/site/trunk/site-publish/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.html b/site/trunk/site-publish/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.html new file mode 100644 index 0000000000..d53263ed4b --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.html @@ -0,0 +1,225 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Running Tuscany SCA 2.x with Equinox and Felix : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="Running Tuscany SCA 2.x with Equinox and Felix">Running Tuscany SCA 2.x with Equinox and Felix</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="Running Tuscany SCA 2.x with Equinox and Felix">Running Tuscany SCA 2.x with Equinox and Felix</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Running Tuscany SCA 2.x with Equinox and Felix</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5603962"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5603962">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5603962"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5603962">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5603962"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5603962">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H2><A name="RunningTuscanySCA2.xwithEquinoxandFelix-1.RunningTuscanywithEquinox"></A>1. Running Tuscany with Equinox</H2> + +<P>The Tuscany distribution is ready to be started as an Equinox runtime.</P> + +<P>You can simply go into the "modules" directory in the distribution and type the following command:</P> + +<DIV class="panel" style="border-width: 1px;"><DIV class="panelContent"> +<P>java -jar osgi-3.5.0-v20090520.jar -clean -console -configuration ..\features\configuration</P> +</DIV></DIV> + +<H2><A name="RunningTuscanySCA2.xwithEquinoxandFelix-2.RunningTuscanywithFelix"></A>2. Running Tuscany with Felix</H2> + +<H3><A name="RunningTuscanySCA2.xwithEquinoxandFelix-DownloadApacheFelixdistribution"></A>Download Apache Felix distribution</H3> +<P>You can download the latest version of Felix distribution from <A href="http://felix.apache.org/site/downloads.cgi" class="external-link" rel="nofollow">http://felix.apache.org/site/downloads.cgi</A>. Unzip it into a directoy such as felix-2.0.1.</P> + +<P>The following bundles can be found in felix-2.0.1\bundle directory:</P> + +<UL> + <LI>org.apache.felix.bundlerepository-1.4.2.jar</LI> + <LI>org.apache.felix.shell-1.4.1.jar</LI> + <LI>org.apache.felix.shell.tui-1.4.1.jar</LI> +</UL> + + +<P>Please download additional bundles into felix-2.0.1\bundle directory:</P> +<UL> + <LI><A href="http://repo1.maven.org/maven2/org/apache/felix/org.apache.felix.fileinstall/2.0.0/org.apache.felix.fileinstall-2.0.0.jar" class="external-link" rel="nofollow">org.apache.felix.fileinstall-2.0.0.jar</A></LI> + <LI><A href="http://repo1.maven.org/maven2/org/apache/felix/org.osgi.compendium/1.4.0/org.osgi.compendium-1.4.0.jar" class="external-link" rel="nofollow">org.osgi.compendium-1.4.0.jar</A></LI> + <LI><A href="http://repo1.maven.org/maven2/org/apache/felix/org.apache.felix.configadmin/1.2.4/org.apache.felix.configadmin-1.2.4.jar" class="external-link" rel="nofollow">org.apache.felix.configadmin-1.2.4.jar</A></LI> +</UL> + + +<P>To run the web console, you need more bundles:</P> +<UL> + <LI>org.apache.felix.http.api-2.0.2.jar</LI> + <LI>org.apache.felix.http.base-2.0.2.jar</LI> + <LI>org.apache.felix.http.bundle-2.0.2.jar</LI> + <LI>org.apache.felix.http.jetty-2.0.2.jar</LI> + <LI>org.apache.felix.metatype-1.0.4.jar</LI> + <LI>org.apache.felix.prefs-1.0.4.jar</LI> + <LI>org.apache.felix.scr-1.0.8.jar</LI> + <LI>org.apache.felix.eventadmin-1.0.0.jar</LI> + <LI>org.apache.felix.webconsole-2.0.0.jar</LI> +</UL> + + +<H3><A name="RunningTuscanySCA2.xwithEquinoxandFelix-AddTuscanybundles"></A>Add Tuscany bundles</H3> +<P>Copy all bundles (jars and folders) under the modules directory of Tuscany distribution to felix-2.0.1\load.<BR> +Remove the following Equinox jars from felix-2.0.1\load:</P> + +<UL> + <LI>osgi-3.5.0-v20090520.jar</LI> + <LI>services-3.2.0-v20090520-1800.jar</LI> + <LI>common-3.5.0-v20090520-1800.jar</LI> +</UL> + + +<P>Alternatively, Tuscany also provides aggregate jars which simplify the use of Tuscany by minimizing the number of jars required. For this exercise the single base jar includes everything necessary so that single jar can be used in the Felix bundle directory. The releases of this jar can be found in the Maven repository <A href="http://repo2.maven.org/maven2/org/apache/tuscany/sca/shades/tuscany-base-nodep/" class="external-link" rel="nofollow">here</A> or the latest development snaphosts <A href="https://repository.apache.org/content/groups/snapshots/org/apache/tuscany/sca/shades/tuscany-base-nodep/2.0-SNAPSHOT/" class="external-link" rel="nofollow">here</A>.</P> + +<H3><A name="RunningTuscanySCA2.xwithEquinoxandFelix-Startfelix"></A>Start felix</H3> +<DIV class="panel" style="border-width: 1px;"><DIV class="panelContent"> +<P>java -jar bin\felix.jar</P> +</DIV></DIV> + + +<H3><A name="RunningTuscanySCA2.xwithEquinoxandFelix-InstallOSGiremoteservicesamplebundles"></A>Install OSGi remote service sample bundles</H3> +<P><SPAN class="image-wrap" style=""><IMG src="http://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/samples/dosgi-dynamic-calculator/dosgi-calculator.png" style="border: 0px solid black"></SPAN></P> +<DIV class="panel" style="border-width: 1px;"><DIV class="panelContent"> +<P>-> install <A href="file:///C:/Tuscany-2.x/java/sca/samples/dosgi-dynamic-calculator/target/sample-dosgi-dynamic-calculator.jar" class="external-link" rel="nofollow">file:///C:/Tuscany-2.x/java/sca/samples/dosgi-dynamic-calculator/target/sample-dosgi-dynamic-calculator.jar</A><BR> +Bundle ID: 205<BR> +-> start 205<BR> +-> install <A href="file:///C:Tuscany-2.x/java/sca/samples/dosgi-dynamic-calculator-operations/target/sample-dosgi-dynamic-calculator-operations.jar" class="external-link" rel="nofollow">file:///C:\Tuscany-2.x/java/sca/samples/dosgi-dynamic-calculator-operations/target/sample-dosgi-dynamic-calculator-operations.jar</A><BR> +Bundle ID: 206<BR> +-> start 206</P> +</DIV></DIV> + +<P>Now, the distributed OSGi calculator is available as a Web service at <A href="http://rfengt61p:8086/CalculatorService" class="external-link" rel="nofollow">http://rfengt61p:8086/CalculatorService</A>. You can see the WSDL in a browser with URL: <A href="http://rfengt61p:8086/CalculatorService?wsdl" class="external-link" rel="nofollow">http://rfengt61p:8086/CalculatorService?wsdl</A>. </P> + +<P>You can now use a web service client such as Eclipse Web Service explorer to invoke the calculator.</P> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>A JAX-WS client</B><BR>You can download a <A href="running-tuscany-sca-2x-with-equinox-and-felix.data/sample-calculator-jaxws-client.jar">JAX-WS client for the calculator sample</A> and run:<BR> +java -jar sample-calculator-jaxws-client.jar <EM>expression</EM><BR> +The expression can be like 1.0+2.0, 2.0/1.0, 3.5-2.0, or 1.0x2.0</TD></TR></TABLE></DIV> + +<P>For more information on Tuscany's implementation of OSGi remote services, see: <A href="development-guides.data/OSGi%20Remote%20Services%20with%20Tuscany%20SCA.ppt">OSGi Remote Services with Tuscany SCA.ppt</A></P> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Running Tuscany SCA 2.x with Equinox and Felix'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/samples-beta1.html b/site/trunk/site-publish/documentation-2x/samples-beta1.html new file mode 100644 index 0000000000..be3eb13d4f --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/samples-beta1.html @@ -0,0 +1,1146 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Samples-Beta1 : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="getting-started.html" title="Getting Started">Getting Started</A> > <A href="" title="Samples-Beta1">Samples-Beta1</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="getting-started.html" title="Getting Started">Getting Started</A> > <A href="" title="Samples-Beta1">Samples-Beta1</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Samples-Beta1</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=23337713"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=23337713">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=23337713"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=23337713">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=23337713"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=23337713">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H1><A name="Samples-Beta1-"></A><FONT color="#003366"><B>Tuscany Samples</B></FONT></H1> + +<P><FONT color="#000000">The Tuscany Samples are shipped with Tuscany binary and source releases. If you are using tuscany from a release distribution then make sure you are looking at the documentation that corresponds to the samples as they stood at the time of the release.</FONT></P> + +<P><A href="20-beta-samples-documentation.html" title="2.0-beta-Samples documentation">2.0-beta samples documentation</A></P> + +<P>If however you are working with a snapshot distribution, or using samples code from the trunk of our source repository, then you've come to the right place, as the documentation here reflects the current status of the samples in the trunk of our source tree.</P> + +<P><FONT color="#000000">In a distribution, the samples source code is found in either a binary or source code distribution in the samples directory, directly under the root directory. The following sections are laid out to match the structure of the samples directory and its subdirectories.</FONT><BR class="atl-forced-newline"></P> + +<DIV> +<UL> + <LI><SPAN class="TOCOutline">1</SPAN> <A href="#Samples-Beta1-gettingstarted">getting-started</A></LI> +<UL> + <LI><SPAN class="TOCOutline">1.1</SPAN> <A href="#Samples-Beta1-contributionhelloworld">contribution-helloworld</A></LI> + <LI><SPAN class="TOCOutline">1.2</SPAN> <A href="#Samples-Beta1-helloworldwebapp">helloworld-webapp</A></LI> +</UL> + <LI><SPAN class="TOCOutline">2</SPAN> <A href="#Samples-Beta1-runningtuscany">running-tuscany</A></LI> +<UL> + <LI><SPAN class="TOCOutline">2.1</SPAN> <A href="#Samples-Beta1-commandline">command-line</A></LI> + <LI><SPAN class="TOCOutline">2.2</SPAN> <A href="#Samples-Beta1-embeddedjse">embedded-jse</A></LI> + <LI><SPAN class="TOCOutline">2.3</SPAN> <A href="#Samples-Beta1-embeddedosgi">embedded-osgi</A></LI> + <LI><SPAN class="TOCOutline">2.4</SPAN> <A href="#Samples-Beta1-maven">maven</A></LI> + <LI><SPAN class="TOCOutline">2.5</SPAN> <A href="#Samples-Beta1-osgi">osgi</A></LI> + <LI><SPAN class="TOCOutline">2.6</SPAN> <A href="#Samples-Beta1-shell">shell</A></LI> + <LI><SPAN class="TOCOutline">2.7</SPAN> <A href="#Samples-Beta1-webapp">webapp</A></LI> +</UL> + <LI><SPAN class="TOCOutline">3</SPAN> <A href="#Samples-Beta1-learningmore">learning-more</A></LI> +<UL> + <LI><SPAN class="TOCOutline">3.1</SPAN> <A href="#Samples-Beta1-async">async</A></LI> +<UL> + <LI><SPAN class="TOCOutline">3.1.1</SPAN> <A href="#Samples-Beta1-"> <SPAN style="color: #003366"><B>sample-contribution-implementation-java-calculator-async</B></SPAN></A></LI> + <LI><SPAN class="TOCOutline">3.1.2</SPAN> <A href="#Samples-Beta1-embeddedjseasyncsamplelauncher">embedded-jse-async-sample-launcher</A></LI> +</UL> + <LI><SPAN class="TOCOutline">3.2</SPAN> <A href="#Samples-Beta1-bindingcomet">binding-comet</A></LI> + <LI><SPAN class="TOCOutline">3.3</SPAN> <A href="#Samples-Beta1-bindingjsonrpc">binding-jsonrpc</A></LI> +<UL> + <LI><SPAN class="TOCOutline">3.3.1</SPAN> <A href="#Samples-Beta1-contributioncalculator">contribution-calculator</A></LI> + <LI><SPAN class="TOCOutline">3.3.2</SPAN> <A href="#Samples-Beta1-contributioncalculatorwebapp">contribution-calculator-webapp</A></LI> +</UL> + <LI><SPAN class="TOCOutline">3.4</SPAN> <A href="#Samples-Beta1-bindingrmi">binding-rmi</A></LI> +<UL> + <LI><SPAN class="TOCOutline">3.4.1</SPAN> <A href="#Samples-Beta1-contributioncalculatorreference%2528forbindingrmi%2529">contribution-calculator-reference (for binding-rmi)</A></LI> + <LI><SPAN class="TOCOutline">3.4.2</SPAN> <A href="#Samples-Beta1-contributioncalculatorservice%2528forbindingrmi%2529">contribution-calculator-service (for binding-rmi)</A></LI> +</UL> + <LI><SPAN class="TOCOutline">3.5</SPAN> <A href="#Samples-Beta1-bindingsca">binding-sca</A></LI> +<UL> + <LI><SPAN class="TOCOutline">3.5.1</SPAN> <A href="#Samples-Beta1-contributioncalculator%2528forbindingSCA%2529">contribution-calculator (for binding SCA)</A></LI> +</UL> + <LI><SPAN class="TOCOutline">3.6</SPAN> <A href="#Samples-Beta1-bindingws">binding-ws</A></LI> +<UL> + <LI><SPAN class="TOCOutline">3.6.1</SPAN> <A href="#Samples-Beta1-contributioncalculator%2528forbindingws%2529">contribution-calculator (for binding-ws)</A></LI> + <LI><SPAN class="TOCOutline">3.6.2</SPAN> <A href="#Samples-Beta1-contributionhelloworldwssdo%2528forbindingws%2529">contribution-helloworld-ws-sdo (for binding-ws)</A></LI> +</UL> + <LI><SPAN class="TOCOutline">3.7</SPAN> <A href="#Samples-Beta1-distributedosgi">distributed-osgi</A></LI> +<UL> + <LI><SPAN class="TOCOutline">3.7.1</SPAN> <A href="#Samples-Beta1-dosgidynamiccalculator">dosgi-dynamic-calculator</A></LI> + <LI><SPAN class="TOCOutline">3.7.2</SPAN> <A href="#Samples-Beta1-dosgidynamiccalculatoroperations">dosgi-dynamic-calculator-operations</A></LI> +</UL> + <LI><SPAN class="TOCOutline">3.8</SPAN> <A href="#Samples-Beta1-implementationbpel">implementation-bpel</A></LI> +<UL> + <LI><SPAN class="TOCOutline">3.8.1</SPAN> <A href="#Samples-Beta1-contributionhelloworldbpel">contribution-helloworld-bpel</A></LI> + <LI><SPAN class="TOCOutline">3.8.2</SPAN> <A href="#Samples-Beta1-helloworldbpelwebapp">helloworld-bpel-webapp</A></LI> +</UL> + <LI><SPAN class="TOCOutline">3.9</SPAN> <A href="#Samples-Beta1-implementationcomposite">implementation-composite</A></LI> +<UL> + <LI><SPAN class="TOCOutline">3.9.1</SPAN> <A href="#Samples-Beta1-helloworldrecursive">helloworld-recursive</A></LI> + <LI><SPAN class="TOCOutline">3.9.2</SPAN> <A href="#Samples-Beta1-helloworldrecursivews">helloworld-recursive-ws</A></LI> +</UL> + <LI><SPAN class="TOCOutline">3.10</SPAN> <A href="#Samples-Beta1-implementationextension">implementation-extension</A></LI> + <LI><SPAN class="TOCOutline">3.11</SPAN> <A href="#Samples-Beta1-implementationjava">implementation-java</A></LI> +<UL> + <LI><SPAN class="TOCOutline">3.11.1</SPAN> <A href="#Samples-Beta1-contributioncalculator">contribution-calculator</A></LI> +</UL> + <LI><SPAN class="TOCOutline">3.12</SPAN> <A href="#Samples-Beta1-implementation.osgi">implementation.osgi</A></LI> +<UL> + <LI><SPAN class="TOCOutline">3.12.1</SPAN> <A href="#Samples-Beta1-dosgicalculator">dosgi-calculator</A></LI> + <LI><SPAN class="TOCOutline">3.12.2</SPAN> <A href="#Samples-Beta1-dosgicalculatoroperations">dosgi-calculator-operations</A></LI> +</UL> + <LI><SPAN class="TOCOutline">3.13</SPAN> <A href="#Samples-Beta1-implementationscript">implementation-script</A></LI> +<UL> + <LI><SPAN class="TOCOutline">3.13.1</SPAN> <A href="#Samples-Beta1-contributioncalculator">contribution-calculator</A></LI> +</UL> + <LI><SPAN class="TOCOutline">3.14</SPAN> <A href="#Samples-Beta1-implementationspring">implementation-spring</A></LI> +<UL> + <LI><SPAN class="TOCOutline">3.14.1</SPAN> <A href="#Samples-Beta1-contributionhelloworldspring">contribution-helloworld-spring</A></LI> + <LI><SPAN class="TOCOutline">3.14.2</SPAN> <A href="#Samples-Beta1-helloworldspringwebapp">helloworld-spring-webapp</A></LI> +</UL> + <LI><SPAN class="TOCOutline">3.15</SPAN> <A href="#Samples-Beta1-implementationwebapp">implementation-webapp</A></LI> +<UL> + <LI><SPAN class="TOCOutline">3.15.1</SPAN> <A href="#Samples-Beta1-helloworldjaxrswebapp">helloworld-jaxrs-webapp</A></LI> + <LI><SPAN class="TOCOutline">3.15.2</SPAN> <A href="#Samples-Beta1-helloworldjmswebapp">helloworld-jms-webapp</A></LI> + <LI><SPAN class="TOCOutline">3.15.3</SPAN> <A href="#Samples-Beta1-helloworldjsclientwebapp">helloworld-js-client-webapp</A></LI> + <LI><SPAN class="TOCOutline">3.15.4</SPAN> <A href="#Samples-Beta1-helloworldjsfwebapp">helloworld-jsf-webapp</A></LI> + <LI><SPAN class="TOCOutline">3.15.5</SPAN> <A href="#Samples-Beta1-helloworldjspwebapp">helloworld-jsp-webapp</A></LI> + <LI><SPAN class="TOCOutline">3.15.6</SPAN> <A href="#Samples-Beta1-helloworldservletwebapp">helloworld-servlet-webapp</A></LI> + <LI><SPAN class="TOCOutline">3.15.7</SPAN> <A href="#Samples-Beta1-helloworldstripeswebapp">helloworld-stripes-webapp</A></LI> +</UL> + <LI><SPAN class="TOCOutline">3.16</SPAN> <A href="#Samples-Beta1-loggingscribe">logging-scribe</A></LI> + <LI><SPAN class="TOCOutline">3.17</SPAN> <A href="#Samples-Beta1-mavenosgijunit">maven-osgi-junit</A></LI> +<UL> + <LI><SPAN class="TOCOutline">3.17.1</SPAN> <A href="#Samples-Beta1-calculatorosgi">calculator-osgi</A></LI> + <LI><SPAN class="TOCOutline">3.17.2</SPAN> <A href="#Samples-Beta1-calculatorrestosgi">calculator-rest-osgi</A></LI> +</UL> + <LI><SPAN class="TOCOutline">3.18</SPAN> <A href="#Samples-Beta1-scaclient">sca-client</A></LI> +<UL> + <LI><SPAN class="TOCOutline">3.18.1</SPAN> <A href="#Samples-Beta1-calculatorscaclient">calculator-scaclient</A></LI> + <LI><SPAN class="TOCOutline">3.18.2</SPAN> <A href="#Samples-Beta1-helloworldscaclient">helloworld-scaclient</A></LI> +</UL> +</UL> + <LI><SPAN class="TOCOutline">4</SPAN> <A href="#Samples-Beta1-applications">applications</A></LI> +<UL> + <LI><SPAN class="TOCOutline">4.1</SPAN> <A href="#Samples-Beta1-store">store</A></LI> + <LI><SPAN class="TOCOutline">4.2</SPAN> <A href="#Samples-Beta1-storewebapp">store-webapp</A></LI> +</UL> +</UL></DIV> + +<H2><A name="Samples-Beta1-gettingstarted"></A>getting-started</H2> + +<P>SCA defines a concept called a Contribution which is the way that SCA composite applications are packed for deployment. See <A href="sca-introduction.html" title="SCA Introduction">SCA Introduction</A> for more information on SCA concepts. </P> + +<P>The getting-started samples consist of simple SCA contributions that you can build and run as your first step to getting up and running with the Tuscany SCA Java runtime. </P> + +<P>You can build the sample contributions with either Maven or Ant and the running-tuscany director contains information about the various ways you can start Tuscany and run these contributions. </P> + +<H3><A name="Samples-Beta1-helloworldcontribution"></A>helloworld-contribution</H3> + +<P>This is the simplest contribution. This contribution describes a composite application with a single component implemented in Java. The component's Java implementation provides service "business logic" for saying hello to a person whose name is supplied as input to the service. </P> + +<H3><A name="Samples-Beta1-helloworldwebapp"></A>helloworld-webapp</H3> + +<P>This sample is not a contribution in it's own right but demonstrates how to run the helloworld-contribution inside a web application. </P> + +<H3><A name="Samples-Beta1-callbackapi"></A>callback-api</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">This feels like a learning-more sample. I wouldn't focus on callbacks with the first time user</FONT></TD></TR></TABLE></DIV> + +<H3><A name="Samples-Beta1-scascopes"></A>sca-scopes</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">This feels like a learning-more sample. I wouldn't focus on scopes with the first time user</FONT></TD></TR></TABLE></DIV> + +<H3><A name="Samples-Beta1-scaincludecontribution"></A>sca-include-contribution</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">This feels like a learning-more sample. I wouldn't focus on scopes with the first time user</FONT></TD></TR></TABLE></DIV> + +<H2><A name="Samples-Beta1-runningtuscany"></A>running-tuscany</H2> + +<P>Running something in Tuscany requires one or more contributions, and a method of launching the contributions to make them available as services. The sections below describes various means of launching contributions into an executing tuscany runtime.</P> + + +<H3><A name="Samples-Beta1-commandline"></A>command-line</H3> + +<P>To execute a sample contribution from the command line on Windows, from a command prompt in the samples directory, run the command ...</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +..\bin\tuscany.bat <SPAN class="code-quote">"contribution-name"</SPAN> +</PRE> +</DIV></DIV> + +<P>for example</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +..\bin\tuscany.bat contribution-binding-sca-calculator +</PRE> +</DIV></DIV> + +<P>or on *nix platforms, from a shell prompt in the samples directory, run the command ...</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +../bin/tuscany.sh contribution-binding-sca-calculator +</PRE> +</DIV></DIV> + +<H3><A name="Samples-Beta1-embeddedjse"></A>embedded-jse</H3> + +<P>This directory contains sample java launchers for the<BR> +tuscany sample contributions. To use the sample JSE launchers with ant execute the command</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +ant run-<contributionname> +</PRE> +</DIV></DIV> + +<P>where run-<contributionname> is one of the targets in the build.xml file</P> + +<P>To use this sample launcher to run all of the contributions as junit test cases, execute the command "mvn" in the launcher directory.</P> + + +<H3><A name="Samples-Beta1-embeddedosgi"></A>embedded-osgi</H3> + +<P>The launchers implemented in the src/main/java/launchers directory each launch a specific contribution into the OSGI runtime.<BR> +To use this sample OSGI launcher with ant excute the command</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +ant run-<contributionname> +</PRE> +</DIV></DIV> +<P>where run-<contributionname> is one of the targets in the build.xml file</P> + +<P>To use this sample launcher to run all of the contributions as junit test cases,<BR> +execute the command </P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java">mvn</PRE> +</DIV></DIV> +<P> in the launcher directory.</P> + + +<H3><A name="Samples-Beta1-maven"></A>maven</H3> + +<P>To execute a sample contribution from Maven</P> + +<P>look for contributions that have the following configuration in their pom.xml file:</P> + +<P><plugin><BR> +<groupId>org.apache.tuscany.maven.plugins</groupId><BR> +<artifactId>maven-tuscany-plugin</artifactId><BR> +<version>2.0-SNAPSHOT</version><BR> +</plugin></P> + +<P>For contributions that have this, for example, learning-more/binding-sca/contribution-calculator, do the following</P> + +<P>cd samples/learning-more/binding-sca/contribution-calculator<BR> +mvn tuscany:run</P> + +<P>This will launch the contribution in the Tuscany runtime and then wait. At this point you can use<BR> +other clients to send messages to services that the running SCA applcation exposes,<BR> +for example, try learning-more/calculator-scaclient.</P> + +<H3><A name="Samples-Beta1-osgi"></A>osgi</H3> + +<P>The Tuscany runtime can be run in and OSGi container. </P> + + +<P><B>Running in Equinox</B></P> + +<P>On Windows, run</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +java \-jar ..\..\modules\osgi-3.5.0-v20090520.jar \-configuration ..\..\features\configuration \-clean \-console + +</PRE> +</DIV></DIV> + +<P>On *Unix, run</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +java \-jar ../../modules/osgi-3.5.0-v20090520.jar \-configuration ../../features/configuration \-clean \-console + +</PRE> +</DIV></DIV> + +<P>You should see the osgi console:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +osgi> + +osgi> Jun 22, 2009 1:32:27 PM org.apache.tuscany.sca.extensibility.equinox.EquinoxServiceDiscoveryActivator start + +INFO: Equinox-based service discoverer is now configured. + +</PRE> +</DIV></DIV> + +<P>You can run "ss" command under the osgi> to see the status of the bundles.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +osgi> ss + +</PRE> +</DIV></DIV> + +<P>Then you can install and start contributions as bundles by doing the following:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +osgi> install file:./path/to/contribution_bundle.jar + +</PRE> +</DIV></DIV> + +<P>Note that contribution_bundle.jar will need an activator in order to register the bundle as a SCA contribution</P> + +<DIV class="panelMacro"><TABLE class="warningMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>see samples/????<BR> +TODO is this still true</TD></TR></TABLE></DIV> +<P>Running on Felix</P> + +<P>See <A href="http://tuscany.apache.org/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.html" class="external-link" rel="nofollow">http://tuscany.apache.org/documentation-2x/running-tuscany-sca-2x-with-equinox-and-felix.html</A></P> + + +<H3><A name="Samples-Beta1-shell"></A>shell</H3> + +<P>This directory contains a sample shell program supporting simple commands to<BR> +start and stop SCA composites.</P> + +<P>To build the sample shell do this:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +mvn install +</PRE> +</DIV></DIV> +<P>To run it:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +./sca +</PRE> +</DIV></DIV> + +<P>at the prompt:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +start myNode ../../applications/store/target/sample-store.jar +</PRE> +</DIV></DIV> +<P>or:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +start myNode http:<SPAN class="code-comment">//people.apache.org/~jsdelfino/tuscany/java/test/sample-store.jar</SPAN> +</PRE> +</DIV></DIV> +<P>also try:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +status +stop myNode +bye +</PRE> +</DIV></DIV> +<P>Starting and stopping composites is pretty fast. To see that, try the following<BR> +two scripts, which start/stop the sample store composite 10 times.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +./sca <scripts/test.txt +</PRE> +</DIV></DIV> +<P>or</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +./sca <scripts/test-remote.txt +</PRE> +</DIV></DIV> + +<P>The shell can also run as a Webapp. To try it install target/scashell.war in<BR> +a Web container, point your Web browser to <A href="http://localhost:8080/scashell" class="external-link" rel="nofollow">http://localhost:8080/scashell</A><BR> +and try the links on that page.</P> + + +<H3><A name="Samples-Beta1-webapp"></A>webapp</H3> + +<P>To execute sample webapp based contributions (contributions that have webapp at the end of their name) you<BR> +can build the contribution using maven and then copy the resulting war file to your container of choice</P> + +<P>For example, for binding-jsonrpc/contribution-calculator-webapp, do the following</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd samples/binding-jsonrpc/contribution-calculator-webapp +mvn +cp target/sample-contribution-binding-jsonrpc-calculator-webapp.war your_container_deployment-dir +</PRE> +</DIV></DIV> + +<P>As an alternative sample webapp based contributions can be run within Jetty directly from Maven, look for<BR> +webapp contributions that have the following configuration in their pom.xml file:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<plugin> + <groupId>org.mortbay.jetty</groupId> + <artifactId>maven-jetty-plugin</artifactId> + <version>6.1.18</version> +</plugin> +</PRE> +</DIV></DIV> + +<P>For contributions that have this, for example, binding-jsonrpc/contribution-calculator-webapp, do the following</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd samples/binding-sca/contribution-calculator +mvn jetty:run +</PRE> +</DIV></DIV> + +<P>This will launch the contribution in the Jetty runtime and then wait. At this point you can use<BR> +HTTP clients to send messages to services that the running SCA applcation exposes. For this<BR> +example try pointing your browser at:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +http:<SPAN class="code-comment">//localhost:8080/sample-contribution-binding-jsonrpc-calculator-webapp/</SPAN> +</PRE> +</DIV></DIV> + +<H2><A name="Samples-Beta1-learningmore"></A>learning-more</H2> + +<P>The samples found in the contributions below illustrate how to see more of SCA and Tuscany's features in action. You'll need to employ the information above in the "running tuscany" section to select an appropriate way of runing the contributions in the samples listed below.</P> + +<H3><A name="Samples-Beta1-async"></A>async</H3> + +<P>This sample demonstrates invocation of services offered in both synchronous and asynchronous forms. Asynchroncity is possible by either callback to or polling by the original service invoker.</P> + +<H4><A name="Samples-Beta1-"></A><FONT color="#003366"><B>sample-contribution-implementation-java-calculator-async</B></FONT></H4> + +<P>In the composite file src/main/resources/Calculator.composite the references "calculatorServiceRefSync" and "calculatorServiceRefAsync" make use of the alternative implementations of the Calculator service described in the CalculatorSync and CalculatorAsync components and implemented in the calculator.CalculatorServiceSyncImpl and calculator.CalculatorServiceAsyncImpljava classes. </P> + + +<H4><A name="Samples-Beta1-embeddedjseasyncsamplelauncher"></A>embedded-jse-async-sample-launcher</H4> + + +<P>Note that the launcher simply starts and stops a node running the contribution. Within the contribution the CalculatorClient java class, marked with the @EagerInit annotation, runs its calculate method (marked with the @Init annotation), thereby triggering the calculation service to be performed. The calculator service is actually performed by the injected instance of CalculatorServiceProxyImpl, which uses both of its references (one for the sync service, one for the async) to perform calculations. The calculations are then performed by instances of CalculatorServiceSyncImpl and CalculatorServiceAsyncImpl. Note that the Tuscany runtime views the following two interfaces as compatible.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +@Remotable +<SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">interface</SPAN> CalculatorService { + <SPAN class="code-object">String</SPAN> calculate(<SPAN class="code-object">Integer</SPAN> n1); +} + +@Remotable +@AsyncInvocation + +<SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">interface</SPAN> CalculatorServiceAsync { + + void calculateAsync(<SPAN class="code-object">Integer</SPAN> n1, ResponseDispatch<<SPAN class="code-object">String</SPAN>> response); + +} + +</PRE> +</DIV></DIV> + +<H3><A name="Samples-Beta1-bindingcomet"></A>binding-comet</H3> + +<P>Executing the command "mvn" in this sample project creates a web archive suitable for deployment to Tomcat. It makes use of the tuscany coment binding. Comet support allows a servlet to process IO asynchronously, receiving events when data is available for reading on the connection (rather than always using a blocking read), and writing data back on connections asynchronously (most likely responding to some event raised from some other source).</P> + +<DIV class="panelMacro"><TABLE class="warningMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Needs expert review/update</FONT></TD></TR></TABLE></DIV> + +<H3><A name="Samples-Beta1-bindingjsonrpc"></A>binding-jsonrpc</H3> + + +<P>This sample demonstrates using a simple calculator service component which makes use of four services for the basic arithmetic functions. In this variant of the calculator sample you can see by looking in the src/main/resources/Calculator.composite xml file that the AddService is configured to be invoked using the json rpc protocol.</P> + +<H4><A name="Samples-Beta1-contributioncalculator"></A>contribution-calculator</H4> + + +<P>This variant of the calculator contribution configures the AddService to be accessed via the JSON RPC protocol (see the XML in the Calculator.composite file).</P> +<DIV class="panelMacro"><TABLE class="warningMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR>Needs review/completion</TD></TR></TABLE></DIV> + +<H4><A name="Samples-Beta1-contributioncalculatorwebapp"></A>contribution-calculator-webapp</H4> + + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H3><A name="Samples-Beta1-bindingrmi"></A>binding-rmi</H3> + +<P>In this example the calculator function is split over two contributions in order to demonstrate the remote method invocation binding. The CalculatorService in the CalculatorServiceComponent defined in the CalculatorRMIServer.composite file is configured to be accessible using RMI.</P> + +<DIV class="panelMacro"><TABLE class="warningMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR>Needs review/completion</TD></TR></TABLE></DIV> + +<H4><A name="Samples-Beta1-contributioncalculatorreference%28forbindingrmi%29"></A>contribution-calculator-reference (for binding-rmi)</H4> + + +<P>This contribution serves the purpose of accessing the services of the calculator service contribution, in particular defining a reference that uses the add service of that contribution using the RMI protocol.</P> + +<H4><A name="Samples-Beta1-contributioncalculatorservice%28forbindingrmi%29"></A>contribution-calculator-service (for binding-rmi)</H4> + + +<P>This contribution defines the calcullators add service to be available via RMI invocation.</P> + +<H3><A name="Samples-Beta1-bindingsca"></A>binding-sca</H3> + + +<P>This sample is the simplest sample other than that shown in the getting starting section. It uses the default SCA protocol for communicating between the components. </P> + +<H4><A name="Samples-Beta1-contributioncalculator%28forbindingSCA%29"></A>contribution-calculator (for binding SCA)</H4> + +<P><FONT color="#000000">The service and reference definitions in the Calculator.composite and CalculatorClient.composite files have no binding attributes, thereby defaulting to the SCA binding for communication between the running instances of the components.</FONT></P> + +<H3><A name="Samples-Beta1-bindingws"></A>binding-ws</H3> + + +<P>This sample contains contrributions which show how the services can be offered via a web service interfaqce.</P> + +<H4><A name="Samples-Beta1-contributioncalculator%28forbindingws%29"></A>contribution-calculator (for binding-ws)</H4> + +<P>This contribution provides the four arithmetic operations in the calculator service, with the AddService being accessible as a web service via the URL <A href="http://localhost:8085/AddServiceComponent" class="external-link" rel="nofollow">http://localhost:8085/AddServiceComponent</A>, as configured in the Calculator.composite file in the contribution project.</P> + +<H4><A name="Samples-Beta1-contributionhelloworldwssdo%28forbindingws%29"></A>contribution-helloworld-ws-sdo (for binding-ws)</H4> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document - rework the content of the README as given below</FONT></TD></TR></TABLE></DIV> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + +Hello World Web Service References using SDO Sample +=================================================== +This sample demonstrates an SCA reference that uses a web service binding which works with SDO. + +The README in the samples directory (the directory above <SPAN class="code-keyword">this</SPAN>) provides +general instructions about building and running samples. Take a look there +first. + +To run <SPAN class="code-keyword">this</SPAN> sample +------------------ +This sample is dependent on helloworld-ws-service. Open a command prompt to start +the service. If you are running ant <SPAN class="code-keyword">do</SPAN> the following: + +cd helloworld-ws-service +ant run + +<SPAN class="code-keyword">if</SPAN> you don't have ant, issue one of the following commands <SPAN class="code-keyword">for</SPAN> windows or *nix: + +java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-helloworld-ws-service.jar helloworld.HelloWorldServer + +and on *nix <SPAN class="code-keyword">do</SPAN> + +java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-helloworld-ws-service.jar helloworld.HelloWorldServer + +You should see the following output: + +Buildfile: build.xml + +run-server: + [java] log4j:WARN No appenders could be found <SPAN class="code-keyword">for</SPAN> logger (org.apache.axiom. +om.util.StAXUtils). + [java] log4j:WARN Please initialize the log4j system properly. + [java] Aug 24, 2007 11:17:33 AM org.apache.catalina.core.StandardEngine sta +rt + [java] INFO: Starting Servlet Engine: Apache Tomcat/6.0.10 + [java] Aug 24, 2007 11:17:34 AM org.apache.catalina.startup.ContextConfig d +efaultWebConfig + [java] INFO: No <SPAN class="code-keyword">default</SPAN> web.xml + [java] Aug 24, 2007 11:17:34 AM org.apache.catalina.startup.DigesterFactory + register + [java] WARNING: Could not get url <SPAN class="code-keyword">for</SPAN> /javax/servlet/jsp/resources/jsp_2_0. +xsd + [java] Aug 24, 2007 11:17:34 AM org.apache.catalina.startup.DigesterFactory + register + [java] WARNING: Could not get url <SPAN class="code-keyword">for</SPAN> /javax/servlet/jsp/resources/web-jspt +aglibrary_1_1.dtd + [java] Aug 24, 2007 11:17:34 AM org.apache.catalina.startup.DigesterFactory + register + [java] WARNING: Could not get url <SPAN class="code-keyword">for</SPAN> /javax/servlet/jsp/resources/web-jspt +aglibrary_1_2.dtd + [java] Aug 24, 2007 11:17:34 AM org.apache.catalina.startup.DigesterFactory + register + [java] WARNING: Could not get url <SPAN class="code-keyword">for</SPAN> /javax/servlet/jsp/resources/web-jspt +aglibrary_2_0.xsd + [java] Aug 24, 2007 11:17:34 AM org.apache.catalina.startup.DigesterFactory + register + [java] WARNING: Could not get url <SPAN class="code-keyword">for</SPAN> /javax/servlet/resources/j2ee_web_ser +vices_1_1.xsd + [java] Aug 24, 2007 11:17:34 AM org.apache.coyote.http11.Http11Protocol ini +t + [java] INFO: Initializing Coyote HTTP/1.1 on http-8085 + [java] Aug 24, 2007 11:17:34 AM org.apache.coyote.http11.Http11Protocol sta +rt + [java] INFO: Starting Coyote HTTP/1.1 on http-8085 + [java] Aug 24, 2007 11:17:34 AM org.apache.tuscany.sca.http.tomcat.TomcatSe +rver addServletMapping + [java] INFO: Added Servlet mapping: http:<SPAN class="code-comment">//localhost:8085/HelloWorldService +</SPAN> + [java] HelloWorld server started (press enter to shutdown) + +The server is now ready. + + +Now, open another command window to run the client. + +cd helloworld-ws-sdo +ant run + +OR <SPAN class="code-keyword">if</SPAN> you don't have ant, on Windows <SPAN class="code-keyword">do</SPAN> + +java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-helloworld-ws-sdo.jar helloworld.HelloWorldClient + +and on *nix <SPAN class="code-keyword">do</SPAN> + +java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-helloworld-ws-sdo.jar helloworl.HelloWorldClient + +You should be able to see the following result: + +Buildfile: build.xml + +run: + [java] log4j:WARN No appenders could be found <SPAN class="code-keyword">for</SPAN> logger (org.apache.axiom. +om.util.StAXUtils). + [java] log4j:WARN Please initialize the log4j system properly. + [java] Injected helloWorldService + [java] Called getGreetings + [java] Hello David Haney + +BUILD SUCCESSFUL +Total time: 9 seconds + + +Sample Overview +--------------- +The sample provides a single component that is wired to a reference with a +web service binding. The binding refers to WSDL that identifies the service +exposed by the helloworld-ws-service sample. + +helloworld-ws-sdo/ + src/ + main/ + java/ + helloworld/ + HelloWorldService.java - <SPAN class="code-keyword">interface</SPAN> description <SPAN class="code-keyword">for</SPAN> + HelloWorldServiceComponent + HelloWorldServiceComponent.java - component implementation + HelloWorldClient.java - starts the SCA <SPAN class="code-object">Runtime</SPAN> and + deploys the helloworldwsclient + .composite. It then calls the + HelloWorldServiceComponent + resources/ + wsdl + helloworld.wsdl - the service description that the + SCA reference uses to bind to service. + + test/ + java/ + helloworld/ + HelloWorldClientTestCase.java - JUnit test <SPAN class="code-keyword">case</SPAN> + helloworld-ws-sdo.png - a pictorial representation of the + sample .composite file + build.xml - the Ant build file + pom.xml - the Maven build file + +Building And Running The Sample Using Ant +----------------------------------------- +You can build and run the sample with the binary distribution using Ant. +Make sure that you have started helloworld-ws-service which <SPAN class="code-keyword">this</SPAN> sample is dependent on +in a separate command window. You can either follow the instruction at the begining of <SPAN class="code-keyword">this</SPAN> +sample file or <SPAN class="code-keyword">if</SPAN> you want to build and run the service, follow the README under helloworld-ws-service. + +Now, let's build and run helloworld-ws-sdo sample: + +cd helloworld-ws-sdo +ant +ant run + +You should see the following output from the run target. + +run: + [java] log4j:WARN No appenders could be found <SPAN class="code-keyword">for</SPAN> logger (org.apache.axiom. +om.util.StAXUtils). + [java] log4j:WARN Please initialize the log4j system properly. + [java] Injected helloWorldService + [java] Called getGreetings + [java] Hello World + +Building And Running The Sample Using Maven +------------------------------------------- +You can build and run the sample with either the binary or source distributions using Maven. Please note that you <SPAN class="code-keyword">do</SPAN> not need to start helloworld-ws-service in <SPAN class="code-keyword">this</SPAN> <SPAN class="code-keyword">case</SPAN> since Maven does <SPAN class="code-keyword">this</SPAN> <SPAN class="code-keyword">for</SPAN> you. + +cd helloworld-ws-sdo +mvn + +You should see the following output from the test phase. + +------------------------------------------------------- + T E S T S +------------------------------------------------------- +Running helloworld.HelloWorldClientTestCase +log4j:WARN No appenders could be found <SPAN class="code-keyword">for</SPAN> logger (org.apache.axiom.om.util.StAX +Utils). +log4j:WARN Please initialize the log4j system properly. +log4j:WARN No appenders could be found <SPAN class="code-keyword">for</SPAN> logger (org.apache.axiom.om.util.StAX +Utils). +log4j:WARN Please initialize the log4j system properly. +Aug 23, 2007 2:27:32 PM org.apache.catalina.core.StandardEngine start +INFO: Starting Servlet Engine: Apache Tomcat/6.0.10 +Aug 23, 2007 2:27:32 PM org.apache.catalina.startup.ContextConfig defaultWebConf +ig +INFO: No <SPAN class="code-keyword">default</SPAN> web.xml +Aug 23, 2007 2:27:32 PM org.apache.catalina.startup.DigesterFactory register +WARNING: Could not get url <SPAN class="code-keyword">for</SPAN> /javax/servlet/jsp/resources/jsp_2_0.xsd +Aug 23, 2007 2:27:32 PM org.apache.catalina.startup.DigesterFactory register +WARNING: Could not get url <SPAN class="code-keyword">for</SPAN> /javax/servlet/jsp/resources/web-jsptaglibrary_1_ +1.dtd +Aug 23, 2007 2:27:32 PM org.apache.catalina.startup.DigesterFactory register +WARNING: Could not get url <SPAN class="code-keyword">for</SPAN> /javax/servlet/jsp/resources/web-jsptaglibrary_1_ +2.dtd +Aug 23, 2007 2:27:32 PM org.apache.catalina.startup.DigesterFactory register +WARNING: Could not get url <SPAN class="code-keyword">for</SPAN> /javax/servlet/jsp/resources/web-jsptaglibrary_2_ +0.xsd +Aug 23, 2007 2:27:32 PM org.apache.catalina.startup.DigesterFactory register +WARNING: Could not get url <SPAN class="code-keyword">for</SPAN> /javax/servlet/resources/j2ee_web_services_1_1.xs +d +Aug 23, 2007 2:27:32 PM org.apache.coyote.http11.Http11Protocol init +INFO: Initializing Coyote HTTP/1.1 on http-8085 +Aug 23, 2007 2:27:32 PM org.apache.coyote.http11.Http11Protocol start +INFO: Starting Coyote HTTP/1.1 on http-8085 +Aug 23, 2007 2:27:32 PM org.apache.tuscany.sca.http.tomcat.TomcatServer addServl +etMapping +INFO: Added Servlet mapping: http:<SPAN class="code-comment">//localhost:8085/HelloWorldService +</SPAN>Injected helloWorldService +Called getGreetings +Aug 23, 2007 2:27:34 PM org.apache.coyote.http11.Http11Protocol destroy +INFO: Stopping Coyote HTTP/1.1 on http-8085 +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.502 sec + +Results : + +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 + + +This shows that the Junit test cases have run successfully. + +</PRE> +</DIV></DIV> + + +<H3><A name="Samples-Beta1-distributedosgi"></A>distributed-osgi</H3> + +<P>These samples demonstrate the execution of Tuscany contributions in a distributed OSGI environment.</P> + +<H4><A name="Samples-Beta1-dosgidynamiccalculator"></A>dosgi-dynamic-calculator</H4> + + +<H4><A name="Samples-Beta1-dosgidynamiccalculatoroperations"></A>dosgi-dynamic-calculator-operations</H4> + + +<H3><A name="Samples-Beta1-implementationbpel"></A>implementation-bpel</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR></TD></TR></TABLE></DIV> + +<H4><A name="Samples-Beta1-contributionhelloworldbpel"></A>contribution-helloworld-bpel</H4> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR>check instructions work and fix up</TD></TR></TABLE></DIV> +<P>This sample demonstrates an SCA service implemented by a BPEL process.</P> + +<P>If you just want to run it to see what happens open a command prompt, navigate<BR> +to this sample directory, and do</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +ant compile run +</PRE> +</DIV></DIV> +<P>OR if you don't have ant, on Windows do</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +mkdir target\classes +mkdir target\wsdl2java-source +java \-cp ..\..\lib\tuscany-sca-manifest.jar org.apache.tuscany.sdo.generate.XSD2JavaGenerator \-targetDirectory target/wsdl2java-source \-prefix HelloWorld \-noContainment \-noUnsettable src/main/resources/helloworld.wsdl +java \-cp ..\..\lib\tuscany-sca-manifest.jar org.apache.tuscany.tools.wsdl2java.generate.WSDL2JavaGenerator \-targetDirectory target/wsdl2java-source src/main/resources/helloworld.wsdl +unzip ..\..\lib\ode-dao-jpa-ojpa-derby-1.1.zip \-d target\database +javac \-d target\classes \-cp target\classes;..\..\lib\tuscany-sca-manifest.jar \-sourcepath src\main\java;target\wsdl2java-source \-target 1.5 \-g \-source 1.5 src\main\java\helloworld\BPELClient.java +copy src\main\resources\* target\classes +java \-cp ..\..\lib\tuscany-sca-manifest.jar;target\classes;target\database helloworld.BPELClient +</PRE> +</DIV></DIV> +<P>and on *nix do</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +mkdir target/classes +mkdir target/wsdl2java-source +java \-cp ../../lib/tuscany-sca-manifest.jar org.apache.tuscany.sdo.generate.XSD2JavaGenerator \-targetDirectory target/wsdl2java-source \-prefix HelloWorld \-noContainment \-noUnsettable src/main/resources/helloworld.wsdl +java \-cp ../../lib/tuscany-sca-manifest.jar org.apache.tuscany.tools.wsdl2java.generate.WSDL2JavaGenerator \-targetDirectory target/wsdl2java-source src/main/resources/helloworld.wsdl +unzip ../../lib/ode-dao-jpa-ojpa-derby-1.1.zip \-d target/database +javac \-d target/classes \-cp target/classes;../../lib/tuscany-sca-manifest.jar \-sourcepath src/main/java;target/wsdl2java-source \-target 1.5 \-g \-source 1.5 src/main/java/helloworld/BPELClient.java +cp src/main/resources/\* target/classes +java \-cp ../../lib/tuscany-sca-manifest.jar:target/classes:target/database helloworld.BPELClient +</PRE> +</DIV></DIV> +<P>The sample will start an embedded BPEL engine, deploy a process and invoke it.</P> + +<P><B>Sample Overview</B></P> + +<P>The sample provides a single component that is wired to a service with a<BR> +web service binding.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +helloworld-bpel/ +src/ +main/ +java/ +helloworld/ +BPELClient.java - client application <SPAN class="code-keyword">for</SPAN> +BEPELHelloWorldComponent + +resources/ +deploy.xml - ODE deployment descriptor +helloworld.bpel - helloworld bpel process +helloworld.componentType - helloworld bpel service description +helloworld.composite - the SCA assembly <SPAN class="code-keyword">for</SPAN> <SPAN class="code-keyword">this</SPAN> sample +helloworld.wsdl - the service description that describes +the bpel process +log4j.properties - logging configuration + +test/ +java/ +helloworld/ +BPELHelloWorldTestCase.java - JUnit test <SPAN class="code-keyword">case</SPAN> +helloworld-bpel.png - a pictorial representation of the +sample .composite file +build.xml - the Ant build file +pom.xml - the Maven build file +</PRE> +</DIV></DIV> +<P><B>Building And Running The Sample Using Ant</B></P> + +<P>With the binary distribution the sample can be built and run using Ant as<BR> +follows</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd helloworld-bpel +ant compile +ant run +</PRE> +</DIV></DIV> +<P>You should see the following output from the run target.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +run: +[java] Starting BPELHelloWorldComponent +[java] >>> Deploying : D:\temp\SCA1.1-RC1\tuscany-sca-1.1-incubating\samples\helloworld-bpel\target\classes +[java] ::arg:::::: <?xml version=<SPAN class="code-quote">"1.0"</SPAN> encoding=<SPAN class="code-quote">"UTF-8"</SPAN>?> +[java] <hello xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/implementation/bpel/example/helloworld.wsdl"</SPAN>><message xmlns="http://tuscany.apache.org/implementation/bpel/exampl +</SPAN>e/helloworld.wsdl">Hello</message></hello> +[java] ::message:: <?xml version=<SPAN class="code-quote">"1.0"</SPAN> encoding=<SPAN class="code-quote">"UTF-8"</SPAN>?> +[java] <message><TestPart><hello xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/implementation/bpel/example/helloworld.wsdl"</SPAN>><message xmlns="http://tuscany.apache.org/impleme +</SPAN>ntation/bpel/example/helloworld.wsdl">Hello</message></hello></TestPart></message> +[java] Status: RESPONSE +[java] Response: <?xml version=<SPAN class="code-quote">"1.0"</SPAN> encoding=<SPAN class="code-quote">"UTF-8"</SPAN>?> +[java] <message><TestPart><hello xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/implementation/bpel/example/helloworld.wsdl"</SPAN>>Hello World</hello></TestPart></message> +</SPAN>[java] Hello World +[java] Stopping BPELHelloWorldComponent +[java] Stopped \!\!\! + +BUILD SUCCESSFUL +Total time: 36 seconds +</PRE> +</DIV></DIV> +<P><B>Building And Running The Sample Using Maven</B></P> + +<P>With either the binary or source distributions the sample can be built and run<BR> +using Maven as follows. When using Maven, a simple test is present that exercise<BR> +the same logic as the client to invoke the BPEl process.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd helloworld-bpel +mvn +</PRE> +</DIV></DIV> +<P>You should see the following output from the test phase.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +\------------------------------------------------------\- +T E S T S +\------------------------------------------------------\- +Running helloworld.BPELHelloWorldTestCase +Starting BPELHelloWorldComponent +>>> Deploying : D:\dev\Opensource\Apache\Tuscany\source\java-sca-1.1\samples\helloworld-bpel\target\classes +::arg:::::: <?xml version=<SPAN class="code-quote">"1.0"</SPAN> encoding=<SPAN class="code-quote">"UTF-8"</SPAN>?> +<hello xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/implementation/bpel/example/helloworld.wsdl"</SPAN>><message xmlns="http://tuscany.apache.org/implementation/bpel/example/helloworld +</SPAN>.wsdl">Hello</message></hello> +::message:: <?xml version=<SPAN class="code-quote">"1.0"</SPAN> encoding=<SPAN class="code-quote">"UTF-8"</SPAN>?> +<message><TestPart><hello xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/implementation/bpel/example/helloworld.wsdl"</SPAN>><message xmlns="http://tuscany.apache.org/implementation/bpel +</SPAN>/example/helloworld.wsdl">Hello</message></hello></TestPart></message> +Status: RESPONSE +Response: <?xml version=<SPAN class="code-quote">"1.0"</SPAN> encoding=<SPAN class="code-quote">"UTF-8"</SPAN>?> +<message><TestPart><hello xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/implementation/bpel/example/helloworld.wsdl"</SPAN>>Hello World</hello></TestPart></message> +</SPAN>Stopping BPELHelloWorldComponent +Stopped \!\!\! +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 18.656 sec + +Results : + +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 + +[INFO] [jar:jar] +[INFO] Building jar: D:\dev\Opensource\Apache\Tuscany\source\java-sca-1.1\samples\helloworld-bpel\target\sample-helloworld-bpel.jar +[INFO] [install:install] +[INFO] Installing D:\dev\Opensource\Apache\Tuscany\source\java-sca-1.1\samples\helloworld-bpel\target\sample-helloworld-bpel.jar to C:\Documents and Settings\lresend +e\.m2\repository\org\apache\tuscany\sca\sample-helloworld-bpel\1.1-incubating-SNAPSHOT\sample-helloworld-bpel-1.1-incubating-SNAPSHOT.jar +[INFO] \-----------------------------------------------------------------------\- +[INFO] BUILD SUCCESSFUL +[INFO] \-----------------------------------------------------------------------\- +[INFO] Total time: 53 seconds +[INFO] Finished at: Sun Jan 13 09:54:39 PST 2008 +[INFO] Final Memory: 24M/43M +[INFO] \-----------------------------------------------------------------------\- +</PRE> +</DIV></DIV> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + +</PRE> +</DIV></DIV> + +<P>This shows that the Junit test cases have run successfully.</P> + +<H4><A name="Samples-Beta1-helloworldbpelwebapp"></A>helloworld-bpel-webapp</H4> + +<H3><A name="Samples-Beta1-implementationcomposite"></A>implementation-composite</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H4><A name="Samples-Beta1-helloworldrecursive"></A>helloworld-recursive</H4> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR>Understand and Document</TD></TR></TABLE></DIV> + +<H4><A name="Samples-Beta1-helloworldrecursivews"></A>helloworld-recursive-ws</H4> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H3><A name="Samples-Beta1-implementationextension"></A>implementation-extension</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H3><A name="Samples-Beta1-implementationjava"></A>implementation-java</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H4><A name="Samples-Beta1-contributioncalculator"></A>contribution-calculator</H4> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H3><A name="Samples-Beta1-implementation.osgi"></A>implementation.osgi</H3> + +<H4><A name="Samples-Beta1-dosgicalculator"></A>dosgi-calculator</H4> + + +<H4><A name="Samples-Beta1-dosgicalculatoroperations"></A>dosgi-calculator-operations</H4> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H3><A name="Samples-Beta1-implementationscript"></A>implementation-script</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H4><A name="Samples-Beta1-contributioncalculator"></A>contribution-calculator</H4> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H3><A name="Samples-Beta1-implementationspring"></A>implementation-spring</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H4><A name="Samples-Beta1-contributionhelloworldspring"></A>contribution-helloworld-spring</H4> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H4><A name="Samples-Beta1-helloworldspringwebapp"></A>helloworld-spring-webapp</H4> + +<H3><A name="Samples-Beta1-implementationwebapp"></A>implementation-webapp</H3> + +<H4><A name="Samples-Beta1-helloworldjaxrswebapp"></A>helloworld-jaxrs-webapp</H4> + + +<H4><A name="Samples-Beta1-helloworldjmswebapp"></A>helloworld-jms-webapp</H4> + + +<H4><A name="Samples-Beta1-helloworldjsclientwebapp"></A>helloworld-js-client-webapp</H4> + + +<H4><A name="Samples-Beta1-helloworldjsfwebapp"></A>helloworld-jsf-webapp</H4> + + +<H4><A name="Samples-Beta1-helloworldjspwebapp"></A>helloworld-jsp-webapp</H4> + + +<H4><A name="Samples-Beta1-helloworldservletwebapp"></A>helloworld-servlet-webapp</H4> + + +<H4><A name="Samples-Beta1-helloworldstripeswebapp"></A>helloworld-stripes-webapp</H4> + +<H3><A name="Samples-Beta1-loggingscribe"></A>logging-scribe</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H3><A name="Samples-Beta1-mavenosgijunit"></A>maven-osgi-junit</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H4><A name="Samples-Beta1-calculatorosgi"></A>calculator-osgi</H4> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H4><A name="Samples-Beta1-calculatorrestosgi"></A>calculator-rest-osgi</H4> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H3><A name="Samples-Beta1-scaclient"></A>sca-client</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H4><A name="Samples-Beta1-calculatorscaclient"></A>calculator-scaclient</H4> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H4><A name="Samples-Beta1-helloworldscaclient"></A>helloworld-scaclient</H4> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H2><A name="Samples-Beta1-applications"></A>applications</H2> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H3><A name="Samples-Beta1-store"></A>store</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + +<H3><A name="Samples-Beta1-storewebapp"></A>store-webapp</H3> +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>TODO</B><BR><FONT color="#000000">Understand and Document</FONT></TD></TR></TABLE></DIV> + </DIV> + + <DIV class="tabletitle"> + Children + <SPAN class="smalltext" id="show" style="display: inline;"> + <A href="javascript:showChildren()">Show Children</A></SPAN> + <SPAN class="smalltext" id="hide" style="display: none;"> + <A href="javascript:hideChildren()">Hide Children</A></SPAN> + </DIV> + <DIV class="greybox" id="children" style="display: none;"> + <A href="20-beta-samples-documentation.html" title="2.0-beta-Samples documentation">2.0-beta-Samples documentation</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + </DIV> + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v3.0 Documentation : Samples- Beta1'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/samples.html b/site/trunk/site-publish/documentation-2x/samples.html new file mode 100644 index 0000000000..ecb8d36f65 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/samples.html @@ -0,0 +1,158 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Samples : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="getting-started.html" title="Getting Started">Getting Started</A> > <A href="" title="Samples">Samples</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="getting-started.html" title="Getting Started">Getting Started</A> > <A href="" title="Samples">Samples</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Samples</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=23337713"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=23337713">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=23337713"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=23337713">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=23337713"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=23337713">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H1><A name="Samples-"></A><FONT color="#003366"><B>Tuscany Samples</B></FONT></H1> + +<P>The Tuscany samples are shipped with Tuscany binary and source releases. To make sure that you're looking at the documentation that matches the distribution you have downloaded select the appropriate link below:</P> + +<P><A href="20-beta-samples-documentation.html" title="2.0-beta-Samples documentation">2.0-Beta1 samples documentation</A></P> + + </DIV> + + <DIV class="tabletitle"> + Children + <SPAN class="smalltext" id="show" style="display: inline;"> + <A href="javascript:showChildren()">Show Children</A></SPAN> + <SPAN class="smalltext" id="hide" style="display: none;"> + <A href="javascript:hideChildren()">Hide Children</A></SPAN> + </DIV> + <DIV class="greybox" id="children" style="display: none;"> + <A href="20-beta-samples-documentation.html" title="2.0-beta-Samples documentation">2.0-beta-Samples documentation</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + </DIV> + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Samples'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-introduction.data/calc.jpg b/site/trunk/site-publish/documentation-2x/sca-introduction.data/calc.jpg Binary files differnew file mode 100644 index 0000000000..4c1ea05f6d --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-introduction.data/calc.jpg diff --git a/site/trunk/site-publish/documentation-2x/sca-introduction.data/calc.jpg.jpeg b/site/trunk/site-publish/documentation-2x/sca-introduction.data/calc.jpg.jpeg Binary files differnew file mode 100644 index 0000000000..b0e371f303 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-introduction.data/calc.jpg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-introduction.data/component.png b/site/trunk/site-publish/documentation-2x/sca-introduction.data/component.png Binary files differnew file mode 100644 index 0000000000..72b9d1b4d2 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-introduction.data/component.png diff --git a/site/trunk/site-publish/documentation-2x/sca-introduction.data/component.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-introduction.data/component.png.jpeg Binary files differnew file mode 100644 index 0000000000..6ab7db30aa --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-introduction.data/component.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-introduction.data/domain.jpg b/site/trunk/site-publish/documentation-2x/sca-introduction.data/domain.jpg Binary files differnew file mode 100644 index 0000000000..587094badc --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-introduction.data/domain.jpg diff --git a/site/trunk/site-publish/documentation-2x/sca-introduction.data/domain.jpg.jpeg b/site/trunk/site-publish/documentation-2x/sca-introduction.data/domain.jpg.jpeg Binary files differnew file mode 100644 index 0000000000..829bd77110 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-introduction.data/domain.jpg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-introduction.html b/site/trunk/site-publish/documentation-2x/sca-introduction.html new file mode 100644 index 0000000000..717163f95b --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-introduction.html @@ -0,0 +1,244 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Introduction : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="SCA Introduction">SCA Introduction</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="SCA Introduction">SCA Introduction</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Introduction</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=109106"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=109106">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109106"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109106">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109106"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109106">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <UL> + <LI><A href="#SCAIntroduction-whatisSCA">What is SCA?</A></LI> + <LI><A href="#SCAIntroduction-scacomponent">SCA Component</A></LI> + <LI><A href="#SCAIntroduction-scawire">SCA Wire</A></LI> + <LI><A href="#SCAIntroduction-scacomposite">SCA Composite</A></LI> + <LI><A href="#SCAIntroduction-scacontribution">SCA Contribution</A></LI> + <LI><A href="#SCAIntroduction-scadomain">SCA Domain</A></LI> + <LI><A href="#SCAIntroduction-scabinding">SCA Binding</A></LI> + <LI><A href="#SCAIntroduction-scapolicy">SCA Policy</A></LI> +</UL> + + +<H2><A name="SCAIntroduction-WhatisSCA%3F"></A><A name="SCAIntroduction-whatisSCA"></A>What is SCA?</H2> +<P>SCA is a standard programming model for abstracting business functions as components and using them as building blocks to assemble business solutions. An SCA component offers services and depends on functions that are called references. It also has an implementation associated it with it which is the business logic that can be implemented in any technology. </P> + +<P>SCA provides a declarative way to describe how the services in an assembly interact with one another and what quality of services (security, transaction, etc) is applied to the interaction. Since service interaction and quality of service is declarative, solution developers remain focus on business logic and therefore development cycle is simplified and shortened. This also promotes the development of reusable services that can be used in different contexts. For example, a shopping cart service can be used in a retail application or a travel application without changing. Services can interact with one another synchronously or asynchronously and can be implemented in any technology.</P> + +<P>SCA also brings flexibility to deployment. A solution assembled with SCA is deployed as a unit and can be distributed over one or more nodes in the network and can be reconfigured without programming changes. </P> + +<P>Applications that adopt SCA programming model can interact with non-SCA applications. Meaning non-SCA application can call into SCA enabled applications and SCA enabled applications can call out into non-SCA enabled applications.</P> + +<P>Now let's talk about SCA building blocks and concepts.</P> + +<H2><A name="SCAIntroduction-SCAComponent"></A><A name="SCAIntroduction-scacomponent"></A>SCA Component</H2> + +<P>The basic building block for SCA is a component. It is the abstraction of a given business function. A component is described with the following attributes:</P> + +<UL> + <LI><B>Service:</B> Describes the functions that this type of component provides. A component can offer one ore more services. A service is an interface.</LI> + <LI><B>Reference:</B> This describes the dependencies this type of component has in order to function. A reference is an interface.</LI> + <LI><B>Property:</B> This defines configuration parameters that can controls how the business function can behave. For example, what currency to use for an account component.</LI> + <LI><B>Intent policies:</B> This describes assumptions on how the component will behave. There are two types of policies. + <UL> + <LI>Implementation policy- Impact the behavior of an implementation. For example, transaction, monitor and logging</LI> + <LI>Interaction policy - defines how the components behave with one another. For example, security.</LI> + </UL> + </LI> + <LI><B>Implementation:</B> Every component has some implementation associated with it. This can be a new business logic or an existing one that is now being used in the assembly. A business logic can handle different operations and some of which are exposed externally as callable services. Component implementation can be in any technology, for example for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type.</LI> +</UL> + + +<P>This is demonstrated below.<BR> +<SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-introduction.data/component.png" style="border: 0px solid black"></SPAN></P> + +<P>The implementation of a component can be in any language that is suitable for the user, for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type. </P> + +<H2><A name="SCAIntroduction-SCAWire"></A><A name="SCAIntroduction-scawire"></A>SCA Wire</H2> + +<P>As mentioned above, an SCA component may have zero or more references. Refrences in SCA define how SCA components invoke services. The relationship between a reference and a service is typically demonstrated through a line in a SCA diagrams and is referred to as a wire. </P> + +<P>The term wire can at the begining seem confusing because you may ask how a wire is realized. There is no physical definition for a wire, it is really derived from the relationship between a Service and its refrence(s) at runtime. This is realized through dependency injection in Tuscany. </P> + + +<H2><A name="SCAIntroduction-SCAComposite"></A><A name="SCAIntroduction-scacomposite"></A>SCA Composite</H2> + +<P>An SCA composite consists of components, services, references, and wires that connect them. A composite is the unit of deployment for SCA.<BR> +A composite can be viewed as a component whose implementation is not code but an aggregation of one or more components co-operating to provide higher level services. Think of composite as a solution, for example a credit check composite may consist of multiple components that together perform the credit checking work. A composite can also be used within a larger solution, for example credit check can be part of a order processing composite. A composite has the same charactersitics as a component. It provides Services, has References to other dependencies, and can be configured using Properties and can have intent policies in just the same way as an individual components can. In thise case, attributes of some of the components that are embedded in the composite get 'promoted' and becom the attribute of the composite. In the example below, you see a calculator composite which consists of 5 components, a calculator service has references to four components:Add, Subtract, Multiply and Divide.</P> + +<P><SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-introduction.data/calc.jpg" style="border: 0px solid black"></SPAN><BR> +<IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/lightbulb_on.gif" height="16" width="16" align="absmiddle" alt="" border="0"> The assembly or wiring is defined in .composite file through Service Component Definition Language (SCDL) that is in XML. For example, calculator.composite would define that calculator component references the other four components.</P> + +<H2><A name="SCAIntroduction-SCAContribution"></A><A name="SCAIntroduction-scacontribution"></A>SCA Contribution</H2> + +<P>The artifacts that make up a solution get packaged into what is called a contribution. A contribution can take a number of different forms. For example, it could be a jar file, or it could be a directory tree on the file system. A contribution can contain composites, java classes, BPEL processes, XSD files, wsdl files, etc. An SCA application can be divided into multiple contributions with dependencies between them. In general, some services depend closely on other services and it makes sense to package them together. If services are more independent it is best to package them separately so that they can be reused in different contexts. A contribution is a deployable unit. A solution may require multiple contributions that share artifacts and artifacts can be shared between (imported) between contributions.</P> + +<H2><A name="SCAIntroduction-SCADomain"></A><A name="SCAIntroduction-scadomain"></A>SCA Domain</H2> + +<P>Contribution packages get contributed to what is called SCA domain which is the scope of adminstration at runtime. An SCA Domain represents a complete runtime configuration, potentially distributed over a series of interconnected runtime nodes and is a logical view of the running applications or a coherent grouping of components that are working together. An SCA Domain typically represents an area of business functionality controlled by a single organization. For example, an SCA Domain may be the whole of a business, or it may be a department within a business.</P> + +<P>Therefore, an SCA domain consists of the definitions of composites, components, their implementations, <B>and the nodes</B> on which they run. Components deployed into a domain can directly wire to other components within the same domain. Communication with services outside of a domain is done through bindings. </P> + + +<P>SCA Domains can vary in size from the very small to the very large:</P> +<UL> + <LI>a very small domain could be one within a test environment inside an IDE</LI> + <LI>a medium sized domain could be a single server or small cluster supporting a single application</LI> + <LI>a large domain could describe all the services within a department or company</LI> +</UL> + + +<P>In a large domain there may be all sorts of policies about where components can run and how they connect to each other or to external services. However, during development one is not concerned with all this. The code is packaged and made available for deployment. Tuscany SCA Java supports contributions in the form of JAR or filesystem. </P> + +<P>Below is an example of domain with two contributions.<BR> +<SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-introduction.data/domain.jpg" style="border: 0px solid black"></SPAN></P> + +<H2><A name="SCAIntroduction-SCABinding"></A><A name="SCAIntroduction-scabinding"></A>SCA Binding</H2> +<P>A binding is used as a means of communication between services and handles the protocols. It defines with what communication method a service can be accessed with or with what communication method it can will access other services. There can be different types of bindings depending on technologies used to develop a solution. For example JMS binding, Webservices binding, Atom binding for web20 interaction, etc. </P> + +<P>Services can be configured with different bindings and there can be multiple bindings for a service. Bindings for the services and references get defined declaratively in the .composite file. There is a default binding called binding.sca which when used leaves the choice of binding to the underlying infrastructure by default.</P> + +<P>The declarative bindings and the abstraction of protocols from business logic brings agility to SCA applications. This allows SCA applications to be purely focused on business logic and not be contaminated with protocol handling information. It also enables the SCA compositions to grow or change without code modification while also working with applications that are not enabled with SCA.</P> + + +<H2><A name="SCAIntroduction-SCAPolicy"></A><A name="SCAIntroduction-scapolciy"></A>SCA Policy</H2> +<P>An enterprise application requires control beyond the business functional capability which can include how security is handled in the enterprise or what transactional capability should be applied to services that are offered. SCA policies define the constraints or capabilities that get applied to services and their interaction. Two types of policies are defined in SCA.</P> +<UL> + <LI>Interaction Policies - Define the policies that influence interaction of services for example whether authentication is required or not.</LI> + <LI>Implementation Policies - Define how the components behave at runtime for example whether it is transactional or not.</LI> +</UL> + + +<P>SCA mechanisms for defining policies such as intents and policySets can only be used in the context of a single domain. The fact that policies can be defined declaratively make applications adaptive to the environment that they get deployed into or to changes in the business requirements. <BR> +For more information about policy check out the <A href="http://www.osoa.org/download/attachments/35/SCA_Policy_Framework_V100.pdf" class="external-link" rel="nofollow">sca policy framework specification</A>version=1]</P> + + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Introduction'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingatom.html b/site/trunk/site-publish/documentation-2x/sca-java-bindingatom.html new file mode 100644 index 0000000000..a8cd6b593d --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingatom.html @@ -0,0 +1,575 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java binding.atom : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java binding.atom">SCA Java binding.atom</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java binding.atom">SCA Java binding.atom</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java binding.atom</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964961"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964961">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964961"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964961">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964961"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964961">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + +<H3><A name="SCAJavabinding.atom-%3Cbinding.atom%3EIntroduction"></A><binding.atom> Introduction</H3> + +<P>The Tuscany Java SCA runtime supports Atom using the <binding.atom> extension. Tuscany can communicate with services that provide or consume items described in the Atom Syndication Format and Atom Publishing Protocol. The Atom protcol is an additional conceptual layer that operates on top of the Hyper Text Transfer Protocol, so it is useful to understand that underlying protocol as well. Reference materials on these specifications is available here.</P> + +<UL> + <LI><A href="http://tools.ietf.org/html/rfc2616" class="external-link" rel="nofollow">Hyper Text Transfer Protocol</A>.</LI> + <LI><A href="http://tools.ietf.org/html/rfc4287" class="external-link" rel="nofollow">Atom Syndication Format</A>.</LI> + <LI><A href="http://tools.ietf.org/html/rfc5023" class="external-link" rel="nofollow">Atom Publishing Protocol</A>.</LI> +</UL> + + +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/lightbulb_on.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Some of the function described here is included in the Tuscany 1.3.2 and 1.4 releases. The complete timeline of available and future plans is given in the <A href="http://tuscany.apache.org/sca-java-roadmap.html" class="external-link" rel="nofollow">Tuscany Web 2.0 Roadmap</A>.</P> + + +<H3><A name="SCAJavabinding.atom-UsingtheTuscanyAtombinding"></A>Using the Tuscany Atom binding</H3> + +<P>The primary use of the Atom binding is to provide support for collections that can be shared in a distributed fashion. Examples of shared collections includes shopping carts, telephone directories, insurance forms, and blog sites. These collections of items can be added, retrieved, updated, and deleted using the 4 basic actions of the HTTP protocol:</P> +<UL> + <LI>POST (create or add)</LI> + <LI>GET (retreive or query)</LI> + <LI>PUT (update)</LI> + <LI>DELETE (destroy or remove</LI> +</UL> + + +<P>The simplest way to use the Atom binding is to declare a collection as a service and provide an HTTP address where one can access the service. This service is declared in an SCA composite file which describes the SCA domain.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <service name=<SPAN class="code-quote">"customer"</SPAN> promote=<SPAN class="code-quote">"CustomerCollection"</SPAN>> + <tuscany:binding.atom uri = <SPAN class="code-quote">"http:<SPAN class="code-comment">//localhost:8084/customer"</SPAN>/> +</SPAN> </service> +</PRE> +</DIV></DIV> + +<P>The service can be implemented in Java or any of the the Tuscany implementation types. For example, here is a way to create an implmentation for the above CustomerCollection service in the Java type.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <component name=<SPAN class="code-quote">"CustomerCollection"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"org.apache.tuscany.sca.binding.atom.CustomerCollectionImpl"</SPAN>/> + </component> +</PRE> +</DIV></DIV> + +<P>A collection that uses the Atom binding usually implements the Collection interface given in the package org.apache.tuscany.sca.binding.atom.collection. This interface declares the basic access methods mentioned above (post, get, put, and delete), and the data types on the methods are expressed as Atom type objects Feed and Entry. In other words, one can view the collection as an Atom Feed, and manipulate items in the Feed as Atom Entries. This shows the basic methods of the Atom Collection intergface in Tuscany:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">interface</SPAN> Collection { + + Entry post(Entry entry); + Entry get(<SPAN class="code-object">String</SPAN> id) <SPAN class="code-keyword">throws</SPAN> NotFoundException; + void put(<SPAN class="code-object">String</SPAN> id, Entry entry) <SPAN class="code-keyword">throws</SPAN> NotFoundException; + void delete(<SPAN class="code-object">String</SPAN> id) <SPAN class="code-keyword">throws</SPAN> NotFoundException; + + Feed getFeed(); + Feed query(<SPAN class="code-object">String</SPAN> queryString); +} +</PRE> +</DIV></DIV> + +<P>It is up to the developer or implementer of the shopping cart, telephone directory, or blog site to provide the code that implements the Collection interface. The developer or implementor also provides the code that translates from the business objects (shopping cart items, directory entries, insurance forms, blog articles) to the Atom model objects Feed and Entry.</P> + +<P>One of the features of using this binding is that your business objects (shopping cart items, directory entries, insurance forms, and blog articles) can now be easily published and shared by the many Atom supporting tools such as feed readers, web browsers, and syndication aggregation. In other words, people can access your collection most anywhere on any device.</P> + +<H3><A name="SCAJavabinding.atom-Example"></A>Example</H3> + +<P>Continuing with the CustomerCollection example shown above, let's see how one of the common access methods. In this case, let's look at the post method and how one would add a new item to the collection. When you declared your Atom binding in your SCA composite, you also provided a uri for your collection. Using a web browser or other device, a user performs an HTTP put request to this uri, with the body of the put containing the data. Tuscany SCA performs the task of invoking the correct service and finding the Java implementation for your collection and calling the correct method. </P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <SPAN class="code-keyword">public</SPAN> Entry post(Entry entry) { + <SPAN class="code-comment">// 1. Validate entry fields +</SPAN> <SPAN class="code-keyword">if</SPAN> (entry.getTitle() != <SPAN class="code-keyword">null</SPAN> ) { + entryID = <SPAN class="code-quote">"tag:"</SPAN> + site <SPAN class="code-quote">","</SPAN> + todaysDate + <SPAN class="code-quote">":"</SPAN> + title; + entry.setID( entryID ); + } + <SPAN class="code-comment">// 2. Provide any additional data. +</SPAN> entry.setUpdated( <SPAN class="code-keyword">new</SPAN> Date() ); + <SPAN class="code-comment">// 3. Store data in local collection or data base. +</SPAN> entries.put(id, entry); + <SPAN class="code-comment">// 4. Return entry to poster. +</SPAN> <SPAN class="code-keyword">return</SPAN> entry; + } +</PRE> +</DIV></DIV> + +<P>Much of the code consists of converting from a Feed or Entry to a business data model and storing to a collection.</P> + +<P>Tuscany uses the Apache Abdera project to provide a model for Atom data. Please see <A href="http://incubator.apache.org/abdera/" class="external-link" rel="nofollow">Apache Abdera</A> for the Java method to access Atom Feeds and Entries, and how to easily convert these Java objects to and from XML.</P> + +<H3><A name="SCAJavabinding.atom-OtherFeaturesoftheTuscanyAtomBinding"></A>Other Features of the Tuscany Atom Binding</H3> + +<P>More advanced features of the Tuscany Atom binding are described below.</P> + +<H4><A name="SCAJavabinding.atom-DataCachingusingETags%2CLastModified%2CandotherHeaderCommands"></A>Data Caching using ETags, Last-Modified, and other Header Commands</H4> + +<P>Atom feeds and entries can often be very large pieces of data. Since Tuscany uses the Atom data binding as one of its supported bindings, there is the potential that many requests for data may have large pieces of data associated with a request.</P> + +<P>Hyper Text Transfer Protocol (HTTP), the basis of the web, has support to help limit or cache the amount of data shared between a client and server by adding tags to a resource reques. These header tags are the ETag and the Last-Modified tags. When used with a predicate tag such as If-Match, If-Not-Match, If-Modified-Since, If-Unmodified-Since, etc., the client and the server can avoid shipping large pieces of data when updated data is not needed. </P> + +<P>The following entry scenarios show how Tuscany supports this form of caching throught ETags, Last-Modified, and other Header Commands.</P> + +<UL> + <LI>Posting new entry data to a feed<BR> + (Show entry data post request, item does not exist on server, server response code 200, return entry data body)</LI> + <LI>Updating existing entry data in a feed<BR> + (Show data update put, If-Match precondition, item is newer and matching, matching return code 412)</LI> + <LI>Requesting existing entry data<BR> + (Show get via ETag, If-None-Match precondition, modified entry data item, matching entry body returned) </LI> + <LI>Requesting stale entry data<BR> + (Show get via ETAG, If-None-Match precondition, unmodified entry data item, not modified return code 304)</LI> + <LI>Requesting up-to-date entry data<BR> + (Show request via last-modified date, entry data is unmodified, Not modified return code 304)</LI> + <LI>Requesting out-of-date entry data<BR> + (Show request via last-modified date, entry data is modified, updated data is returned)</LI> +</UL> + + +<P>Tuscany provides a test case ProviderEntryEntityTagsTest.java in module binding.atom.abdera that validates these Entry caching scenarios via JTest. Additionally, the following Feed scenarios are provided in the test case ProviderFeedEntityTagsTest.java.</P> + +<UL> + <LI>Test feed basics<BR> + (Request Atom feed. Check that feed is non-null, has Id, title, and updated values. Check for Etag and Last-Modified headers)</LI> + <LI>Test Unmodified If-Match predicate<BR> + (Request feed based on existing ETag. Use If-Match predicate in request header. Expect status 200 and feed body.)</LI> + <LI>Test Unmodified If-None-Match predicate<BR> + (Request feed based on existing ETag. Use If-None-Match predicate in request header. Expect status 304, item not modified, no feed body.)</LI> + <LI>Test Unmodified If-Unmodified-Since predicate<BR> + (Request feed based on very current Last-Modified. Use If-Unmodified-Since predicate in request header. Expect status 304, item not modified, no feed body.)</LI> + <LI>Test Unmodified If-Modified-Since predicate<BR> + (Request feed based on very old Last-Modified. Use If-Modified-Since predicate in request header. Expect status 200, feed in body.)</LI> + <LI>Test Modified If-None-Match predicate<BR> + (Request feed based on existing ETag. Use If-None-Match predicate in request header. Expect status 200, feed in body.)</LI> + <LI>Test Modified If-Match predicate<BR> + (Request feed based on existing ETag. Use If-Match predicate in request header. Expect status 412, precondition failed, no feed in body.)</LI> + <LI>Test Modified If-UnModified-Since predicate<BR> + (Request feed based on very recent Last-Mod date. Use If-Unmodified-Since predicate in request header. Expect status 304, no feed in body.)</LI> + <LI>Test Modified If-Modified-Since predicate<BR> + (Request feed based on very old Last-Mod date. Use If-Modified-Since predicate in request header. Expect status 200, feed in body.)</LI> +</UL> + + +<P>Support of Web 2.0 data caching via ETags and Last-Modified fields allow the Tuscany user to save bandwidth and re-requests of data. Especially in the area of content feeds which can have very large data objects, the ability to cache improves server performance and reduces network bottlenecks. A full end-to-end demonstration of this network savings is being created via Jira TUSCANY-2537 which will show caching in the feed aggregator sample.</P> + +<H4><A name="SCAJavabinding.atom-SupportforNegotiatedContentTypes"></A>Support for Negotiated Content Types</H4> + +<P>Requests for data now respond with negotiated content types. In other words, the requester can now state which content types are preferred, and the responder can provide different content types. The data preference is expressed in the request header "Accept" parameter.</P> + +<P>These data binding types are supported:</P> +<UL> + <LI>Atom XML format (Request header Accept=application/atom+xml)</LI> + <LI>Atom in JSON format (Request header Accept=application/atom+json)</LI> +</UL> + + +<P>The following content types are requestable in different data bindings</P> +<UL> + <LI>Atom entry data (MIME type application/atom+xxx;type=entry where xxx=xml or json)</LI> + <LI>Atom feed data (MIME type application/atom+xxx;type=feed where xxx=xml or json)</LI> +</UL> + + +<P>For example, the requester asks for an Atom entry with no Accept header or Accept header value is application/atom+xml. The returned response body contains:</P> +<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Atom Entry response body as XML</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<?xml version='1.0' encoding='UTF-8'?> +<entry xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.w3.org/2005/Atom"</SPAN>> +</SPAN> <title type=<SPAN class="code-quote">"text"</SPAN>>customer Fred Farkle</title> + <updated>2008-08-08T18:40:30.484Z</updated> + <author> + <name>Apache Tuscany</name> + </author> + <content type=<SPAN class="code-quote">"text"</SPAN>>Fred Farkle</content> + <id>urn:uuid:customer-91d349b3-4b8b-4cfa-b9e9-d999f9937085</id> + <link href=<SPAN class="code-quote">"urn:uuid:customer-91d349b3-4b8b-4cfa-b9e9-d999f9937085"</SPAN> rel=<SPAN class="code-quote">"edit"</SPAN> /> + <link href=<SPAN class="code-quote">"urn:uuid:customer-91d349b3-4b8b-4cfa-b9e9-d999f9937085"</SPAN> rel=<SPAN class="code-quote">"alternate"</SPAN> /> +</entry> +</PRE> +</DIV></DIV> + +<P>In contrast, the requester asks for an Atom entry with Accept header value is application/atom+json. The returned response body contains:</P> +<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Atom Entry response body as JSON</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java"> +{ + <SPAN class="code-quote">"id"</SPAN>:<SPAN class="code-quote">"urn:uuid:customer-91d349b3-4b8b-4cfa-b9e9-d999f9937085"</SPAN>, + <SPAN class="code-quote">"title"</SPAN>:<SPAN class="code-quote">"customer Fred Farkle"</SPAN>, + <SPAN class="code-quote">"content"</SPAN>:<SPAN class="code-quote">"Fred Farkle"</SPAN>, + <SPAN class="code-quote">"updated"</SPAN>:<SPAN class="code-quote">"2008-08-08T18:40:30.484Z"</SPAN>, + <SPAN class="code-quote">"authors"</SPAN>:[{ + <SPAN class="code-quote">"name"</SPAN>:<SPAN class="code-quote">"Apache Tuscany"</SPAN> + } + ], + <SPAN class="code-quote">"links"</SPAN>:[{ + <SPAN class="code-quote">"href"</SPAN>:<SPAN class="code-quote">"urn:uuid:customer-91d349b3-4b8b-4cfa-b9e9-d999f9937085"</SPAN>, + <SPAN class="code-quote">"rel"</SPAN>:<SPAN class="code-quote">"edit"</SPAN> + },{ + <SPAN class="code-quote">"href"</SPAN>:<SPAN class="code-quote">"urn:uuid:customer-91d349b3-4b8b-4cfa-b9e9-d999f9937085"</SPAN>, + <SPAN class="code-quote">"rel"</SPAN>:<SPAN class="code-quote">"alternate"</SPAN> + } + ] +} +</PRE> +</DIV></DIV> + +<P>The ability to view entires and feeds in multiple data formats allows the Tuscany user extreme flexibility in parsing and processing data returned by a service or collection.</P> + +<H4><A name="SCAJavabinding.atom-ServiceandWorkspaceDocumentSupport%28application%2Fatomsvcxml%29"></A>Service and Workspace Document Support (application/atomsvc+xml)</H4> + +<P>Prior to this implementation, there was a dummy service document provided when you visited an Atom feed service address with an "atomsvc" extension. For example, running the the Atom service binding unit tests, one could visit <A href="http://localhost:8080/customer/atomsvc" class="external-link" rel="nofollow">http://localhost:8080/customer/atomsvc</A> and receive the following service document:</P> +<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Tuscany Atom Binding Dummy Service document</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <?xml version='1.0' encoding='UTF-8'?> + <service xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.w3.org/2007/app"</SPAN> xmlns:atom=<SPAN class="code-quote">"http://www.w3.org/2005/Atom"</SPAN>> +</SPAN> <workspace> + <atom:title type=<SPAN class="code-quote">"text"</SPAN>>resource</atom:title> + <collection href=<SPAN class="code-quote">"http:<SPAN class="code-comment">//luck.ibm.com:8084/customer"</SPAN>> +</SPAN> <atom:title type=<SPAN class="code-quote">"text"</SPAN>>collection</atom:title> + <accept>application/atom+xml;type=entry</accept> + <categories /> + </collection> + </workspace> + </service> +</PRE> +</DIV></DIV> +<P>This dummy implementation did not provide a true collection name, URL to the collection, accept MIME types or categories.</P> + +<P>Following the inclusion of TUSCANY-2597 and the new implentation, the Tuscany Atom binding will correctly populate an atomsvc document with information from the feed and give correct information for discovery. Now , running the the Atom service binding unit tests, one could visit <A href="http://localhost:8080/customer/atomsvc" class="external-link" rel="nofollow">http://localhost:8080/customer/atomsvc</A> and receive the following service document:</P> +<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Tuscany Atom Binding Service document</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<?xml version='1.0' encoding='UTF-8'?> +<service xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.w3.org/2007/app"</SPAN> xmlns:atom=<SPAN class="code-quote">"http://www.w3.org/2005/Atom"</SPAN>> +</SPAN> <workspace xml:base=<SPAN class="code-quote">"http:<SPAN class="code-comment">//localhost:8084/"</SPAN>> +</SPAN> <atom:title type=<SPAN class="code-quote">"text"</SPAN>>workspace</atom:title> + <collection href=<SPAN class="code-quote">"http:<SPAN class="code-comment">//localhost:8084/customer"</SPAN>> +</SPAN> <atom:title type=<SPAN class="code-quote">"text"</SPAN>>customers</atom:title> + <accept>application/atom+xml; type=feed</accept> + <accept>application/json; type=feed</accept> + <accept>application/atom+xml; type=entry</accept> + <accept>application/json; type=entry</accept> + <categories /> + </collection> + </workspace> +</service> +</PRE> +</DIV></DIV> + +<P>The service document is now properly populated with URLs, titles, accept MIME types and categories. These are elements that are needed for collection discovery and visitatin.</P> + +<H4><A name="SCAJavabinding.atom-SupportforfullJavaScriptAtomclient."></A>Support for full JavaScript Atom client.</H4> +<P><A name="SCAJavabinding.atom-JavaScriptAtomClient"></A><BR> +After creating and publishing your SCA service, it can be tedious converting to and from Atom Feeds and Entries on the client side. Tuscany provides a full JavaScript object model for Atom Feeds, Entries, and other data objects. This benefits customers and client developers by providing an easy model to use in HTML, JSP, scripts, GUIs, and other client side technology.</P> + +<P>For example, prior to this feature, developers would have to develop code in XML to manipulate nodes in the XML document that represented the current page:</P> +<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Tuscany client side XML Document Manipulation (old style)</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <SPAN class="code-keyword">var</SPAN> entries = feed.getElementsByTagName(<SPAN class="code-quote">"entry"</SPAN>); + <SPAN class="code-keyword">var</SPAN> list = ""; + <SPAN class="code-keyword">for</SPAN> (<SPAN class="code-keyword">var</SPAN> i=0; i<entries.length; i++) { + <SPAN class="code-keyword">var</SPAN> item = entries[i].getElementsByTagName(<SPAN class="code-quote">"content"</SPAN>)[0].firstChild.nodeValue; + list += item + ' <br>'; + } +</PRE> +</DIV></DIV> + +<P>Using the new JavaScript client object model, the code is greatly simplified and easier to understand:</P> +<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Tuscany client side JavaScript Atom Object Model (new style)</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <SPAN class="code-keyword">var</SPAN> entries = feed.getEntries(); + <SPAN class="code-keyword">var</SPAN> list = ""; + <SPAN class="code-keyword">for</SPAN> (<SPAN class="code-keyword">var</SPAN> i=0; i<entries.length; i++) { + <SPAN class="code-keyword">var</SPAN> item = entries[i].getContent(); + list += item + ' <br>'; + } +</PRE> +</DIV></DIV> + +<P>Additionally, the Tuscany Atom JavaScript client provides full deserialization and serialization to and from the JavaScript Atom model and its XML format. In other words let's say you create an HTML page that scrapes a data base and wants to submit the data as an entry to a collection of blog articles. You can create the Entry data using the JavaScript Entry model:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <SPAN class="code-keyword">var</SPAN> entry = <SPAN class="code-keyword">new</SPAN> Entry(); + entry.setNamespace( <SPAN class="code-quote">"http:<SPAN class="code-comment">//www.w3.org/2005/Atom"</SPAN> ); +</SPAN> entry.setTitle( <SPAN class="code-quote">"Atom-Powered Robots Run Amok"</SPAN> ); + entry.setId( <SPAN class="code-quote">"urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a"</SPAN> ); + entry.setUpdated( <SPAN class="code-quote">"2003-12-13T18:30:02Z"</SPAN> ); + entry.setContent( <SPAN class="code-quote">"Some text."</SPAN> ); + entry.addAuthor( <SPAN class="code-keyword">new</SPAN> Person( <SPAN class="code-quote">"John Doe"</SPAN> ) ); + entry.addAuthor( <SPAN class="code-keyword">new</SPAN> Person( <SPAN class="code-quote">"Mark Pilgrim"</SPAN>, <SPAN class="code-quote">"f8dy@example.com"</SPAN> )); + entry.addContributor( <SPAN class="code-keyword">new</SPAN> Person( <SPAN class="code-quote">"Sam Ruby"</SPAN> )); + entry.addContributor( <SPAN class="code-keyword">new</SPAN> Person( <SPAN class="code-quote">"Joe Gregorio"</SPAN> )); + entry.addLink( <SPAN class="code-keyword">new</SPAN> Link( <SPAN class="code-quote">"http:<SPAN class="code-comment">//example.org/edit/first-post.atom"</SPAN>, <SPAN class="code-quote">"edit"</SPAN> ));</SPAN> +</PRE> +</DIV></DIV> + +<P>Now to convert this code to XML and submit it to a site is easy using the Tuscany Atom JavaScript client:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <SPAN class="code-keyword">var</SPAN> text = entry.toXML(); +</PRE> +</DIV></DIV> + +<P>The text string now contains the fully serialized XML format of the Entry object</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <SPAN class="code-quote">"<?xml version="</SPAN>1.0"?> + <entry xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.w3.org/2005/Atom"</SPAN>> +</SPAN> <title>Atom-Powered Robots Run Amok</title> + <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> + <updated>2003-12-13T18:30:02Z</updated> + <author><name>John Doe</name></author> + <content>Some text.</content> + <link rel=<SPAN class="code-quote">"edit"</SPAN> href=<SPAN class="code-quote">"http:<SPAN class="code-comment">//example.org/edit/first-post.atom"</SPAN>/> +</SPAN> </entry>" +</PRE> +</DIV></DIV> + +<P>Similarly the Tuscany Atom JavaScript client contains methods for deserializing from XML reperesentations to a JavaScript Atom model:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <SPAN class="code-keyword">var</SPAN> feed = <SPAN class="code-keyword">new</SPAN> Feed(); + feed.readFromXML( xmlString ); +</PRE> +</DIV></DIV> + +<P>A full example showing how to use this client model is given in implementation-widgets-runtime. The store.html page shows the older style of document XML manipulation. The storeJS.html page shows the newer style of JavaScript object manipulation.</P> + +<H4><A name="SCAJavabinding.atom-SupportforPostingandPuttingMediaItems"></A>Support for Posting and Putting Media Items</H4> +<P>The Atom Publishing Protocol provides for a separate space for storage of media resources. The purpose of a separate space for these resources is to keep feeds and entries from growing too large with the contents of typically large items. Media resources can be any binary object that is supported by a MIME type, but typically media resources include video, image, and audio type files.</P> + +<P>Media resources are maintained by the collection implementor, and are given a dual identity. There is a location in the media respository, typically where one places the media files, and there is a location in the feed or entry space. This second reference is known as a media link entry.</P> + +<P>The Tuscany package at org.apache.tuscany.sca.binding.atom.collection (in tuscany-binding-atom-abdera package) has the following interface for MediaCollection:</P> +<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Tuscany MediaCollection interface</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java"> + /** + * Creates a <SPAN class="code-keyword">new</SPAN> media entry + * + * @param title + * @param slug + * @param contentType + * @param media + */ + Entry postMedia(<SPAN class="code-object">String</SPAN> title, <SPAN class="code-object">String</SPAN> slug, <SPAN class="code-object">String</SPAN> contentType, InputStream media); + + /** + * Update a media entry. + * + * @param id + * @param contentType + * @param media + * @<SPAN class="code-keyword">return</SPAN> + */ + void putMedia(<SPAN class="code-object">String</SPAN> id, <SPAN class="code-object">String</SPAN> contentType, InputStream media) <SPAN class="code-keyword">throws</SPAN> NotFoundException; +</PRE> +</DIV></DIV> + +<P>These two methods are used to create (post) new media files, and update (put) new media information and edits. The media resources may be retrieved (get) or removed (delete) via the normal HTTP get and delete operations and the links returned by the post and get methods.</P> + +<P>For instance, when creating a media resource, one typically posts the following information via an HTTP post request:</P> +<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Requesting New Media Creation (postMedia method invoke)</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java"> +POST /edit/ HTTP/1.1 +Host: media.example.org +Content-Type: image/png +Slug: The Beach +Authorization: Basic ZGFmZnk6c2VjZXJldA== +Content-Length: nnn +...binary data... +</PRE> +</DIV></DIV> + +<P>In turn, the Tuscany invocation framework invokes the postMedia shown above on the media collection implementation. The media collection implementation may then take the binary data from the media InputStream and store it to a media repository. The media collection implemenation should construct a proper Entry item via XML construction or some Atom model framework such as Apache Abdera. The Entry should contain the required elements (title, id, updated, summary, content, edit link, edit-media link) in order to provide the proper Atom Pub Protocol return headers and Entry data as given here:</P> +<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Affirming New Media Creation (postMedia method return)</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java"> +HTTP/1.1 201 Created +Content-Length: nnn +Content-Type: application/atom+xml;type=entry;charset=<SPAN class="code-quote">"utf-8"</SPAN> +Location: http:<SPAN class="code-comment">//example.org/media/edit/the_beach.atom +</SPAN><?xml version=<SPAN class="code-quote">"1.0"</SPAN>?> +<entry xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.w3.org/2005/Atom"</SPAN>> +</SPAN> <title>The Beach</title> + <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> + <updated>2005-10-07T17:17:08Z</updated> + <author><name>Daffy</name></author> + <summary type=<SPAN class="code-quote">"text"</SPAN> /> + <content type=<SPAN class="code-quote">"image/png"</SPAN> + src=<SPAN class="code-quote">"http:<SPAN class="code-comment">//media.example.org/the_beach.png"</SPAN>/> +</SPAN> <link rel=<SPAN class="code-quote">"edit-media"</SPAN> + href=<SPAN class="code-quote">"http:<SPAN class="code-comment">//media.example.org/edit/the_beach.png"</SPAN> /> +</SPAN> <link rel=<SPAN class="code-quote">"edit"</SPAN> + href=<SPAN class="code-quote">"http:<SPAN class="code-comment">//example.org/media/edit/the_beach.atom"</SPAN> /> +</SPAN></entry> +</PRE> +</DIV></DIV> + +<P>Note that the edit link provides the Atom Feed link to the media entry, and the edit-media link provides the media repository link to the media entry. Use these links to get and delete media.</P> + +<P>A special convention has been implemented to allow the media collection implementation to return properties in the response header. The summary element of the Entry returned may contain a set of key=value properties separated via commas. For example, in order to provide return Content-Type and Content-Length values in the response header, one can created this text in the postMedia Entry summary element: <TT>Content-Type=image/jpg,Content-Length=21642</TT>.</P> + +<P>The putMedia method acts in much the same way, but the URI to the item should contain an ID to the media being updated. For instance, if the usual post and get feed URI is <TT><A href="http://localhost:8084/receipt" class="external-link" rel="nofollow">http://localhost:8084/receipt</A></TT>, then to update the media given above one would put to the URI <TT><A href="http://localhost:8084/receipt/urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a" class="external-link" rel="nofollow">http://localhost:8084/receipt/urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</A></TT>. Here is an example of a put request:</P> +<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Requesting Media Update (putMedia method invoke)</B></DIV><DIV class="codeContent panelContent"> +<PRE class="code-java"> +PUT /edit/urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a HTTP/1.1 +Host: media.example.org +Content-Type: image/png +Authorization: Basic ZGFmZnk6c2VjZXJldA== +Content-Length: nnn +...binary data... +</PRE> +</DIV></DIV> + +<P>After the above put request, the Atom binding will invoke the media collection implementation putMedia method. The media collection should update the media if the ID exists (and a 200 OK status code will return), or the media collection should throw a NotFoundException if the ID does not exist (and a 404 not found status code will return).</P> + +<P>The above scenarios are documents in the MediaCollectionTestCase unit test case in the binding-atom-abdera module in the Tuscany code base.</P> + +<H3><A name="SCAJavabinding.atom-SecurityPolicysupportinHTTPandWeb2.0Bindings"></A>Security Policy support in HTTP and Web 2.0 Bindings</H3> + +<DIV class="panelMacro"><TABLE class="infoMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>work in progress</TD></TR></TABLE></DIV> + +<H3><A name="SCAJavabinding.atom-Scenarios"></A>Scenarios</H3> + +<UL> + <LI>A Web 2.0 application requires that a user get authenticated before it can access the application.</LI> + <LI>A Web 2.0 application requires that all communication between client/server be done using SSL.</LI> + <LI>A given service, exposed using a web 2.0 binding requires user authentication.</LI> + <LI>A given operation, exposed using a web 2.0 binding requires user authentication.</LI> +</UL> + + +<H3><A name="SCAJavabinding.atom-PolicyInterceptor"></A>Policy Interceptor</H3> + +<P>The design approach that is being considered is to inject policy security interceptors, that would properly validate and enforce the security intents.<BR> +The authentication will be done using JAAS modules for authentication, and initially we would support authenticating to a list of username/password supplied by the application or using an LDAP.</P> + + +<P><SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-java-bindinghttp-security-policy-section.data/policy_interceptors_high_level_design.jpg" style="border: 0px solid black"></SPAN></P> + + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java binding.atom'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingejb.html b/site/trunk/site-publish/documentation-2x/sca-java-bindingejb.html new file mode 100644 index 0000000000..67d7b36553 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingejb.html @@ -0,0 +1,196 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java binding.ejb : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java binding.ejb">SCA Java binding.ejb</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java binding.ejb">SCA Java binding.ejb</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java binding.ejb</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964955"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964955">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964955"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964955">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964955"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964955">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + +<H3><A name="SCAJavabinding.ejb-%3Cbinding.ejb%3E"></A><binding.ejb></H3> + +<P>Tuscany provides the reference-side support for the <A href="http://www.osoa.org/download/attachments/35/SCA_EJBSessionBeanBinding_V100.pdf?version=1" class="external-link" rel="nofollow">SCA EJB Session Bean Binding V1.00</A>. It allows SCA components to access existing stateless session beans.</P> + +<H3><A name="SCAJavabinding.ejb-TheXMLconfigutation"></A>The XML configutation</H3> + +<P>To access a stateless session, the uri attribute of the <binding.ejb> element needs to be be configured with a JNDI name. </P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<binding.ejb uri=<SPAN class="code-quote">"corbaname:iiop:1.2@localhost:1050#BrokerServiceBean"</SPAN> /> +</PRE> +</DIV></DIV> + +<P>Depending on which enviroment the SCA components are hosted, various styles of the JNDI names can be supported:</P> +<UL> + <LI>relative JNDI</LI> + <LI>java:comp/env/<ejb-ref></LI> + <LI>corbaname JNDI</LI> +</UL> + + +<H3><A name="SCAJavabinding.ejb-Someexamples"></A>Some examples</H3> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<composite xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.osoa.org/xmlns/sca/1.0"</SPAN> name=<SPAN class="code-quote">"account"</SPAN>> +</SPAN> <component name=<SPAN class="code-quote">"AccountDataServiceComponent"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"bigbank.accountdata.AccountDataServiceImpl"</SPAN> /> + <reference name=<SPAN class="code-quote">"brokerService"</SPAN>> + <binding.ejb uri=<SPAN class="code-quote">"corbaname:iiop:1.2@localhost:1050#BrokerServiceBean"</SPAN> /> + </reference> + </component> +</composite> +</PRE> +</DIV></DIV> + +<P>The open-ejb deployment descriptor</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<openejb-jar xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.openejb.org/xml/ns/openejb-jar-2.1"</SPAN>> +</SPAN> ... + <enterprise-beans> + <session> + <ejb-name>BrokerServiceBean</ejb-name> + <jndi-name>BrokerServiceBean</jndi-name> + <tss-link>IdentityTokenNoSecurity</tss-link> + </session> + </enterprise-beans> + ... +</openejb-jar> +</PRE> +</DIV></DIV> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>Integration with Geronimo 2.0.1</B><BR>Make sure org.apache.geronimo.configs/openejb-corba-deployer/2.0-SNAPSHOT/car is started. <BR> +Look under System Modules in Admin Console. This module is required to support CORBA Naming.</TD></TR></TABLE></DIV> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java binding.ejb'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.data/policy_interceptors_high_level_design.jpg b/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.data/policy_interceptors_high_level_design.jpg Binary files differnew file mode 100644 index 0000000000..500725ebae --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.data/policy_interceptors_high_level_design.jpg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.data/policy_interceptors_high_level_design.jpg.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.data/policy_interceptors_high_level_design.jpg.jpeg Binary files differnew file mode 100644 index 0000000000..d0f3bcc5f9 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.data/policy_interceptors_high_level_design.jpg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.html b/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.html new file mode 100644 index 0000000000..b92c64e3ed --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp-security-policy-section.html @@ -0,0 +1,162 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java binding.http security policy section : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java binding.http security policy section">SCA Java binding.http security policy section</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java binding.http security policy section">SCA Java binding.http security policy section</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java binding.http security policy section</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964967"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964967">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964967"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964967">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964967"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964967">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H3><A name="SCAJavabinding.httpsecuritypolicysection-SecurityPolicysupportinHTTPandWeb2.0Bindings"></A>Security Policy support in HTTP and Web 2.0 Bindings</H3> + +<DIV class="panelMacro"><TABLE class="infoMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>work in progress</TD></TR></TABLE></DIV> + +<H3><A name="SCAJavabinding.httpsecuritypolicysection-Scenarios"></A>Scenarios</H3> + +<UL> + <LI>A Web 2.0 application requires that a user get authenticated before it can access the application.</LI> + <LI>A Web 2.0 application requires that all communication between client/server be done using SSL.</LI> + <LI>A given service, exposed using a web 2.0 binding requires user authentication.</LI> + <LI>A given operation, exposed using a web 2.0 binding requires user authentication.</LI> +</UL> + + +<H3><A name="SCAJavabinding.httpsecuritypolicysection-PolicyInterceptor"></A>Policy Interceptor</H3> + +<P>The design approach that is being considered is to inject policy security interceptors, that would properly validate and enforce the security intents.<BR> +The authentication will be done using JAAS modules for authentication, and initially we would support authenticating to a list of username/password supplied by the application or using an LDAP.</P> + + +<P><SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-java-bindinghttp-security-policy-section.data/policy_interceptors_high_level_design.jpg" style="border: 0px solid black"></SPAN></P> + + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java binding.http security policy section'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp.html b/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp.html new file mode 100644 index 0000000000..0456869213 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindinghttp.html @@ -0,0 +1,324 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java binding.http : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java binding.http">SCA Java binding.http</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java binding.http">SCA Java binding.http</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java binding.http</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964959"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964959">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964959"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964959">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964959"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964959">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + +<H3><A name="SCAJavabinding.http-%3Cbinding.http%3EIntroduction"></A><binding.http> Introduction</H3> + +<P>The Tuscany Java SCA runtime supports Hyper Text Transfer Protocol (HTTP) using the <binding.http> extension. Tuscany can communicate with services that provide or consume business data objects via the well known actions of HTTP, for example POST, GET, PUT, and DELETE. In HTTP interactions between a client and a server takes place as a series of requests and responses. Information is comunicated by reads and rights over server socket ports. HTTP actions, also known as verbs, are communicated between a client and a server in the requests and responses. Each request and response consists of a header and a body. Typically the header contains the request action name, a URI indicating the location of object of the object of the action, and a number property name and value pairs containing other meta information about the transaction (e.g. body length, modification dates, MIME type, etc.). The body contains the subject of the action, whether it be a text or binary encoding of the data, an error message, or a serialized object.</P> + +<P>More information on the HTTP protocol is located at:</P> +<UL> + <LI><A href="http://tools.ietf.org/html/rfc2616" class="external-link" rel="nofollow">Hyper Text Transfer Protocol</A>.</LI> +</UL> + + +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/lightbulb_on.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Some of the advanced function described here is included in the Tuscany 1.3.2 and 1.4 releases. The complete timeline of available and future plans is given in the <A href="http://tuscany.apache.org/sca-java-roadmap.html" class="external-link" rel="nofollow">Tuscany Web 2.0 Roadmap</A>. Users should also be aware of the <A href="http://tuscany.apache.org/sca-java-bindingatom.html" class="external-link" rel="nofollow">Atom binding</A> and <A href="http://tuscany.apache.org/sca-java-bindingrss.html" class="external-link" rel="nofollow">RSS binding</A> which sit on top of the HTTP binding, but have additional features and data types associated with the actions.</P> + +<P>A Tuscany protocol binding such as the HTTP binding, is a way to fit a common protocol into the Tuscany abstraction and way of doing things. Each binding identifies itself to the Tuscany runtime and states under what conditions it is available. The Tuscany runtime uses the binding to translate invocations and data from the Tuscany world into the world of the protocol and back. So in the case of the HTTP binding, Tuscany uses the HTTP request and response mechanism to share business data between service components.</P> + + +<H3><A name="SCAJavabinding.http-UsingtheTuscanyHTTPbinding"></A>Using the Tuscany HTTP binding</H3> + +<P>The primary use of the HTTP binding is to share resources and services over HTTP over the web in a distributed fashion. Resources are items that have a resource implementation such as web content. Services are items that have data types and a defined business interfaces such as shared collections. Examples of shared collections includes shopping carts, telephone directories, insurance forms, and blog sites. These collections of items can be added, retrieved, updated, and deleted using the 4 basic actions of the HTTP protocol:</P> +<UL> + <LI>POST (create or add)</LI> + <LI>GET (retreive or query)</LI> + <LI>PUT (update)</LI> + <LI>DELETE (destroy or remove</LI> +</UL> + + +<P>The simplest way to use the HTTP binding is to declare a resource that can be shared over the web via HTTP and provide an HTTP address where one can access the resource. This resource is declared in an SCA composite file which describes the SCA domain.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <component name=<SPAN class="code-quote">"ResourceServiceComponent"</SPAN>> + <tuscany:implementation.resource location=<SPAN class="code-quote">"content"</SPAN>/> + <service name=<SPAN class="code-quote">"Resource"</SPAN>> + <tuscany:binding.http uri=<SPAN class="code-quote">"http:<SPAN class="code-comment">//localhost:8085/webcontent"</SPAN>/> +</SPAN> </service> + </component> +</PRE> +</DIV></DIV> +<P>No further implementation is needed with a resource. It is served on the web like any other static web content.</P> + +<P>The HTTP binding can also declare a business service that can be shared over the web and provide an HTTP address where one can access the service. This resource is declared in an SCA composite file which describes the SCA domain.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <component name=<SPAN class="code-quote">"HTTPBindingComponent"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"org.apache.tuscany.sca.binding.http.TestBindingImpl"</SPAN>/> + <service name=<SPAN class="code-quote">"TestBindingImpl"</SPAN>> + <tuscany:binding.http uri=<SPAN class="code-quote">"http:<SPAN class="code-comment">//localhost:8085/httpbinding"</SPAN>/> +</SPAN> </service> + </component> +</PRE> +</DIV></DIV> + +<H3><A name="SCAJavabinding.http-ExampleHTTPServletandServiceImplementations"></A>Example HTTP Servlet and Service Implementations</H3> + +<P>A service that uses the HTTP binding usually implements the javax.servlet.Servlet interface. This interface declares the basic access methods mentioned in the J2EE specification: init, destroy, service, getServletInfo, etc. The Tuscany runtime ensures that the proper method is invoked whenever a service does one of the HTTP actions. For example here is a TestService implemented in the package org.apache.tuscany.sca.binding.http;</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +@Service(Servlet.class) +<SPAN class="code-keyword">public</SPAN> class TestServiceImpl <SPAN class="code-keyword">implements</SPAN> Servlet { + + <SPAN class="code-keyword">public</SPAN> void init(ServletConfig config) <SPAN class="code-keyword">throws</SPAN> ServletException { + } + + <SPAN class="code-keyword">public</SPAN> void service(ServletRequest request, ServletResponse response) <SPAN class="code-keyword">throws</SPAN> ServletException, IOException { + response.getOutputStream().print(<SPAN class="code-quote">"<html><body><p>Hello from Tuscany HTTP service</body></html>"</SPAN>); + } + +} +</PRE> +</DIV></DIV> + +<P>Another way of implementing an HTTP service is to use a collection interface that matches the actions of the HTTP protocol. In this case, the methods must be named post, get, put, and delete. Tuscany ensures that the proper method is invoked via the request and response protocol of HTTP:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">public</SPAN> class TestGetImpl { + + <SPAN class="code-keyword">public</SPAN> InputStream get(<SPAN class="code-object">String</SPAN> id) { + <SPAN class="code-keyword">return</SPAN> <SPAN class="code-keyword">new</SPAN> ByteArrayInputStream((<SPAN class="code-quote">"<html><body><p>This is the service GET method, item="</SPAN> + id + <SPAN class="code-quote">"</body></html>"</SPAN>).getBytes()); + + } +} +</PRE> +</DIV></DIV> + +<P>So using the common verbs of HTTP and Java object serialization, one can implement services and run them anywhere the HTTP protocol is implemented. The service developer or implementer simply creates methods for post, get, put, and delete, and a business collection such as a shopping cart, telephone directory, insurance form, or blog sites can be created. See the Tuscany module binding-http-runtime for complete examples.</P> + +<P>Unlike the Atom or RSS bindings, which have defined data types which encapsulate the business objects, the HTTP binding uses Java object serialization for passing business object data back and forth. Thus it is up to the developer or implementer to deserialize the data and reconstitute a business object.</P> + +<H3><A name="SCAJavabinding.http-AdvancedFeaturesoftheTuscanyHTTPBinding"></A>Advanced Features of the Tuscany HTTP Binding</H3> + +<H4><A name="SCAJavabinding.http-HTTPConditionalActionsandCachingusingETagsandLastModified"></A>HTTP Conditional Actions and Caching using ETags and Last-Modified</H4> + +<P>The HTTP specification provides a set of methods for HTTP clients and servers to interact. These methods form the foundation of the World Wide Web. Tuscany implements many of these methods a binding interface to a collection. The main methods are:</P> + +<UL> + <LI>GET - retrieves an item from a collection</LI> + <LI>POST - creates or adds an item to a collection</LI> + <LI>PUT - updates or replaces an item in a collection</LI> + <LI>DELETE - removes an item in a a collection</LI> +</UL> + + +<P>The HTTP specification (HTTP 1.1 Chapter 13 - Caching) also provides a mechanism by which these methods may be executed conditionally. To perform conditional methods, an HTTP client puts 3 items in the HTTP request header:</P> + +<UL> + <LI>ETag - entity tag, a unique identifier to an item in a collection. Normally created and returned by the server when creating (POST) a new item.</LI> + <LI>LastModified - an updated field. Normally a string containing a date and time of the last modification of the item.</LI> + <LI>Predicate - a logical test (e.g. IfModified, IfUnmodified) to use with the ETag and LastModified to determine whether to act.</LI> +</UL> + + +<P>The complete list of predicates is given in the HTTP specification.</P> + +<P>The most common use of conditional methods is to prevent two requests to the server instead of one conditional request. For example, a common scenario is to check if an item has been modified, if not changed update it with a new version, if changed do not update it. With a conditional PUT method (using the IfUnmodifed predicate and a LastModified date), this can be done in one action. Another common use is to prevent multiple GETs of an item to ensure we have a valid copy. Rather than doing a second request of a large item, one can do a conditional GET request (using an IfModified predicate and a LastModified date), and avoid the second request if our object is still valid. The server responds with either a normal response body, or status code 304 (Not Modified), or status code 412 (precondition failed).</P> + +<P>Tuscany implements the logic to move these caching items to and from the HTTP request and response headers, and deliver them to the collection implementation. The items are delivered to a user implementation via a serializable object called CacheContext. This object contains the value of the ETag, the LastModified value, and any predicates. It is up to the implementer of a collection to provide the correct server logic to act on these predicates. The CacheContext class is found in found in the Tuscany module package org.apache.tuscany.sca.binding.http.</P> + +<P>To implement conditional actions on your service, the developer or implementer implements any of the condional HTTP actions: conditionalPost, conditionalGet, conditionalPut, or conditionalDelete. Tuscany automatically routes a request with proper request header fields (ETag, LastModified, and predicates) to the proper collection method.</P> + +<P>For example, the TestBindingCacheImpl class in package org.apache.tuscany.sca.binding.http implements a server collection which pays attention to conditional methods. Notice that this collection implements conditionalGet, conditionalPut, conditionalPost, and conditionalDelete methods as well as get, put, post, delete. The server collection can look at the CacheContext obect to determine whether an item or a status code should be returned. In this example code, the conditionalGet checked the If-Modified predicate and determines whether the item is not modified and if so, throws a NotModifiedException.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <SPAN class="code-keyword">public</SPAN> InputStream conditionalGet(<SPAN class="code-object">String</SPAN> id, HTTPCacheContext cacheContext) + <SPAN class="code-keyword">throws</SPAN> NotModifiedException, PreconditionFailedException { + + <SPAN class="code-keyword">if</SPAN> (cacheContext != <SPAN class="code-keyword">null</SPAN>) { + <SPAN class="code-keyword">if</SPAN> (cacheContext.ifModifiedSince) { + <SPAN class="code-keyword">if</SPAN> ((id.equals(<SPAN class="code-quote">"1"</SPAN>)) + && (0 > cacheContext.lastModifiedDate + .compareTo(<SPAN class="code-keyword">new</SPAN> Date()))) + <SPAN class="code-keyword">throw</SPAN> <SPAN class="code-keyword">new</SPAN> NotModifiedException(<SPAN class="code-quote">"item 1 was modified on "</SPAN> + + <SPAN class="code-keyword">new</SPAN> Date()); + } + ... + ... +</PRE> +</DIV></DIV> + +<P>For a full example of all conditional methods and many combinations of predicates, one can look to the module http-binding unit tests to understand how these conditional request work. The HTTPBindingCacheTestCase contains 36 tests of all 4 HTTP conditonal methods. Various predicates are tested with various ETags and LastModified fields. The fields are tested in both the positive and negative cases.</P> + +<P>Here is a complete list of the tests:</P> +<UL> + <LI>testGet() - tests normal GET method of collection, expects item</LI> + <LI>testConditionalGetIfModifiedNegative() - tests not modified GET, expects item</LI> + <LI>testConditionalGetIfModifiedPositive() - tests modified GET, expect code 304</LI> + <LI>testConditionalGetIfUnmodifiedNegative() - tests unmodifed GET, expects item</LI> + <LI>testConditionalGetIfUnmodifiedPositive() - tests modified GET, expects code 412</LI> + <LI>testConditionalGetIfMatchNegative() - tests matching GET, expects code 412</LI> + <LI>testConditionalGetIfMatchPositive() - tests matching GET, expects item</LI> + <LI>testConditionalGetIfNoneMatchNegative - tests unmatching GET, expects item</LI> + <LI>testConditionalGetIfNoneMatchPositive() - tests unmatching GET, expects code 412</LI> +</UL> + + +<P>Similarly, there are 9 tests each for DELETE, POST, and PUT, making a total of 36 test cases.</P> + +<H4><A name="SCAJavabinding.http-DifferencesBetweenHTTPBindingCachingandAtomBindingCachinginTuscany"></A>Differences Between HTTP Binding Caching and Atom Binding Caching in Tuscany</H4> + +<P>A similar sort of conditional posting is implemented in the Atom Binding. The difference is that the HTTP binding requires an implementer to provide conditional methods. The Atom binding caching uses the Abdera Atom model objects to automatically derive an ETag and a LastModified tags. In the Atom model, the Entry or Feed ID is used to make an item ETag field. The Atom Entry or Feed updated field is used to make an item LastModified field.</P> + +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/lightbulb_on.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Use the HTTP binding caching when you are not using Atom Entries and Feeds as your business objects. However, the more flexible HTTP binding caching requires you to implement special conditional methods. Use the Atom binding when you can model your business data in terms of Atom Entries and Feeds. The more constrictive Atom binding caching will derive caching tags from your data model fields.</P> + +<H3><A name="SCAJavabinding.http-SecurityPolicysupportinHTTPandWeb2.0Bindings"></A>Security Policy support in HTTP and Web 2.0 Bindings</H3> + +<DIV class="panelMacro"><TABLE class="infoMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>work in progress</TD></TR></TABLE></DIV> + +<H3><A name="SCAJavabinding.http-Scenarios"></A>Scenarios</H3> + +<UL> + <LI>A Web 2.0 application requires that a user get authenticated before it can access the application.</LI> + <LI>A Web 2.0 application requires that all communication between client/server be done using SSL.</LI> + <LI>A given service, exposed using a web 2.0 binding requires user authentication.</LI> + <LI>A given operation, exposed using a web 2.0 binding requires user authentication.</LI> +</UL> + + +<H3><A name="SCAJavabinding.http-PolicyInterceptor"></A>Policy Interceptor</H3> + +<P>The design approach that is being considered is to inject policy security interceptors, that would properly validate and enforce the security intents.<BR> +The authentication will be done using JAAS modules for authentication, and initially we would support authenticating to a list of username/password supplied by the application or using an LDAP.</P> + + +<P><SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-java-bindinghttp-security-policy-section.data/policy_interceptors_high_level_design.jpg" style="border: 0px solid black"></SPAN></P> + + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java binding.http'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png Binary files differnew file mode 100644 index 0000000000..05e62f3b8c --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png.jpeg Binary files differnew file mode 100644 index 0000000000..75743c1552 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-reference.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-service.png b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-service.png Binary files differnew file mode 100644 index 0000000000..7db2eb03f5 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-service.png diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-service.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-service.png.jpeg Binary files differnew file mode 100644 index 0000000000..f2674bcddd --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/DataFormatScenarios-2-service.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/jmstextxml-invocation-chain.png b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/jmstextxml-invocation-chain.png Binary files differnew file mode 100644 index 0000000000..5dc161000d --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/jmstextxml-invocation-chain.png diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/jmstextxml-invocation-chain.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/jmstextxml-invocation-chain.png.jpeg Binary files differnew file mode 100644 index 0000000000..8850a896f6 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/jmstextxml-invocation-chain.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/providers.png b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/providers.png Binary files differnew file mode 100644 index 0000000000..737772334e --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/providers.png diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/providers.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/providers.png.jpeg Binary files differnew file mode 100644 index 0000000000..c704d7bd74 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.data/providers.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.html b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.html new file mode 100644 index 0000000000..9548360ebe --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingjms.html @@ -0,0 +1,753 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java binding.jms : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java binding.jms">SCA Java binding.jms</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java binding.jms">SCA Java binding.jms</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java binding.jms</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964952"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964952">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964952"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964952">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964952"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964952">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H3><A name="SCAJavabinding.jms-%3Cbinding.jms%3E"></A><binding.jms></H3> + +<P>The Tuscany Java SCA runtime supports the Java Messaging Service using the <binding.jms> SCDL extension. New JMS based service endpoints can be provided using a <binding.jms> element within a SCA <service>, existing JMS queues can be accessed using a <binding.jms> element within a SCA <reference>.</P> + +<P>The JMS binding is one of the SCA extensions which is being formalized in the OASIS Open Composite Services Architecture with a published <A href="http://www.oasis-opencsa.org/sca-bindings" class="external-link" rel="nofollow">specifications </A> document.</P> + +<H4><A name="SCAJavabinding.jms-UsingtheJMSbinding"></A>Using the JMS binding</H4> + +<P>The simplest way to use the JMS binding is to use the URI syntax to configure the binding, for example:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"><binding.jms uri=<SPAN class="code-quote">"jms:RequestQueue"</SPAN>/></PRE> +</DIV></DIV> +<P>This tells the binding to use a JMS destination named "RequestQueue", with all the other configuration options using default values. </P> + +<P>By default Tuscany will use a JMS connection factory named 'ConnectionFactory', this can be changed by using a query parameter in the URI, for example, to use a connection factory named 'myCF' can be done as follows:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"><binding.jms uri=<SPAN class="code-quote">"jms:RequestQueue?connectionFactoryName=myCF"</SPAN>/></PRE> +</DIV></DIV> + +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/lightbulb_on.gif" height="16" width="16" align="absmiddle" alt="" border="0"> When using a SCA reference for RPC style requests and no response destination is defined in the SCDL then a temporary replyTo queue will automatically be created and used. </P> + +<P>When using the JMS binding with SCA services the syntax can be simplified even further by letting the destination name default to the service name. For example, the following SCDL snippet creates a JMS service listening on a JMS destination named "MyService":</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<service name=<SPAN class="code-quote">"MyService"</SPAN>> + <binding.jms /> +</service> +</PRE> +</DIV></DIV> + +<H3><A name="SCAJavabinding.jms-ValidationintheJMSBinding"></A>Validation in the JMS Binding</H3> + +<P>Tuscany performs two types of validation of the JMS Binding specified in a composite file.</P> + +<OL> + <LI>All XML is validated according to the schema to be valid XML. Elements are validated to be of the correct number<BR> +and order. URIs are validated to be of the correct form. Required attributes and elements are checked.</LI> + <LI>The model data for the JMS binding is validated. These are semantic issues such as the connection factory should not contradict destination type, connection factory and activation specification are mutually exclusive, and response connection must<BR> +either be a name attribute or a response element.</LI> +</OL> + + +<P>Validation rules are taken from the binding schema and the OSOA and OASIS specs:</P> +<UL> + <LI><A href="http://www.oasis-open.org/committees/documents.php?wg_abbrev=sca-bindings" class="external-link" rel="nofollow">http://www.oasis-open.org/committees/documents.php?wg_abbrev=sca-bindings</A> (sca-binding-jms-1.1-spec-cd01-rev4.pdf)</LI> + <LI><A href="http://www.osoa.org/display/Main/Service%20Component%20Architecture%20Specifications" class="external-link" rel="nofollow">http://www.osoa.org/display/Main/Service+Component+Architecture+Specifications</A> (SCA JMS Binding V1.00 )</LI> +</UL> + + +<P>Invalid JMS bindings usually result in a JMSBindingException with error message and specific context of the error. See the JMSBindingProcessor for a complete list of validation rules.</P> + +<H3><A name="SCAJavabinding.jms-SomeExamples"></A>Some Examples</H3> + +<H4><A name="SCAJavabinding.jms-HelloWorld"></A>HelloWorld</H4> + +<P>The <A href="https://svn.apache.org/repos/asf/incubator/tuscany/java/sca/samples/helloworld-jms-webapp/" class="external-link" rel="nofollow">helloworld-jms</A> sample demonstrates basic RPC style operations over JMS. The sample has one component exposing a JMS service on a queue name 'HelloWorldService' and another component which invokes the service by sending JMS messages to that queue. A temporary destination is used for the response messages. The .composite file for this is shown below, see the helloworld sample <A href="https://svn.apache.org/repos/asf/incubator/tuscany/java/sca/samples/helloworld-jms-webapp/README" class="external-link" rel="nofollow">README</A> for full details.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<composite xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.osoa.org/xmlns/sca/1.0"</SPAN> +</SPAN> targetNamespace=<SPAN class="code-quote">"http:<SPAN class="code-comment">//sample"</SPAN> +</SPAN> xmlns:sample=<SPAN class="code-quote">"http:<SPAN class="code-comment">//sample"</SPAN> +</SPAN> name=<SPAN class="code-quote">"HelloWorld"</SPAN>> + + <component name=<SPAN class="code-quote">"HelloWorldClient"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"helloworld.HelloWorldClient"</SPAN>/> + <reference name=<SPAN class="code-quote">"helloWorldRef"</SPAN>> + <binding.jms uri=<SPAN class="code-quote">"jms:HelloWorldService"</SPAN>/> + </reference> + </component> + + <component name=<SPAN class="code-quote">"HelloWorldServiceComponent"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"helloworld.HelloWorldServiceImpl"</SPAN> /> + <service name=<SPAN class="code-quote">"HelloWorldService"</SPAN>> + <binding.jms /> + </service> + </component> + +</composite> +</PRE> +</DIV></DIV> + +<H3><A name="SCAJavabinding.jms-OperationSelection"></A>Operation Selection</H3> + +<P>Operation selection extensions allow you to choose how the JMS bindings determines which service operation to call based on the incoming MS message. </P> + +<DIV class="table-wrap"> +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> operatiion selector </TH> +<TH class="confluenceTh"> description </TH> +</TR> +<TR> +<TD class="confluenceTd"> <opertionSelector.jmsdefault/> </TD> +<TD class="confluenceTd"> The default operations selector as described in the <A href="http://www.osoa.org/download/attachments/35/SCA_JMSBinding_V100.pdf?version=2" class="external-link" rel="nofollow">JMS Binding Specification 1.0</A>; +<UL> + <LI>If there is only one operation on the service interface then this operation is chosen.</LI> + <LI>Else If the property scaOperationName appears in the incoming JMS message then its value determines the service operation</LI> + <LI>Else the operation is assumed to be called onMessage</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <opertionSelector.jmsUserProp propertyName="somePropertyName"/> </TD> +<TD class="confluenceTd"> The named property, in this case somePropertyName, on the incoming JMS message holds name of the service operation that will be called </TD> +</TR> +</TBODY></TABLE> +</DIV> + + +<P>While you can specify the default operation selector there is no need to as in lieu of other operation selectors being specified this one it assumed to be in force. You can add new operation selectors by adding the appropriate model objects, processors and providers.</P> + +<P>Following operation selection the actual operation that is called may be further affected by operationProperties configuration.</P> + +<H3><A name="SCAJavabinding.jms-WireFormats"></A>Wire Formats</H3> + +<P>Wire format extensions allow you to choose how message data is expected to appear inside the JMS message as it flows across the wire. </P> + +<DIV class="table-wrap"> +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> wire format </TH> +<TH class="confluenceTh"> description </TH> +</TR> +<TR> +<TD class="confluenceTd"> <wireFormat.jmsdefault sendFormat="text or bytes"/> </TD> +<TD class="confluenceTd"> The default wire format as described in the <A href="http://www.osoa.org/download/attachments/35/SCA_JMSBinding_V100.pdf?version=2" class="external-link" rel="nofollow">JMS Binding Specification 1.0</A>; +<UL> + <LI>If the service operation has a single parameter of type javax.jms.Message then the incoming JMS message is passed in as is</LI> + <LI>Else the incoming message is a text message containing XML (we have added the sendFormat attribute to control whether the message type is actially text or bytes) + <UL> + <LI>If there is a single parameter in the service operation signature then the data in the JMS message is assumed to be a direct serialization of the data coming from/going to the service operation</LI> + <LI>Else there are multiple parameters in the servioce operation signature and the data in the JMS message is assumed to be a document literal wrapped serialization of the data coming from/going to the service operation</LI> + </UL> + </LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <wireFormat.jmsBytes/> </TD> +<TD class="confluenceTd"> The data in the JMS message is the native bytes of the data coming from/going to the service operation. The service operation signature is expected to have a single byte[] parameter </TD> +</TR> +<TR> +<TD class="confluenceTd"> <wireFormat.jmsBytesXML/> </TD> +<TD class="confluenceTd">The data in the JMS message is an XML document literal wrapped representation of the parameters of the service operation presented as a series of bytes </TD> +</TR> +<TR> +<TD class="confluenceTd"> <wireFormat.jmsText/> </TD> +<TD class="confluenceTd"> The data in the JMS message is the string representation of data coming from/going to the service operation. The service operation signature is expected to have a single String parameter </TD> +</TR> +<TR> +<TD class="confluenceTd"> <wireFormat.jmsTextXML/> </TD> +<TD class="confluenceTd"> The data in the JMS message is an XML document literal wrapped representation of the parameters of the service operation presented as a String </TD> +</TR> +<TR> +<TD class="confluenceTd"> <wireFormat.jmsObject/> </TD> +<TD class="confluenceTd"> The data in the JMS message is the Java object serialization of data coming from/going to the service operation </TD> +</TR> +</TBODY></TABLE> +</DIV> + + +<P>While you can specify this wire format there is no need to as in lieu of other operation selectors being specified this one it assumed to be in force. You can add new wire formats by adding the appropriate model objects, processors and providers.</P> + +<H3><A name="SCAJavabinding.jms-UsingSCAcallbackswiththeJMSbinding"></A>Using SCA callbacks with the JMS binding</H3> + +<P>The Tuscany JMS binding supports using SCA callbacks for creating asynchronous clients and services.</P> + +<P>This is done by using a <callback> element in the SCDL for the service or reference as shown in the following example. <BR> +See the <A href="https://svn.apache.org/repos/asf/tuscany/java/sca/samples/callbacks-jms/" class="external-link" rel="nofollow">callbacks-jms</A> sample for a complete example of using callbacks</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<composite xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.osoa.org/xmlns/sca/1.0"</SPAN> +</SPAN> targetNamespace=<SPAN class="code-quote">"http:<SPAN class="code-comment">//sample"</SPAN> +</SPAN> name=<SPAN class="code-quote">"CallbacksComposite"</SPAN>> + + <component name=<SPAN class="code-quote">"ClientComponent"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"callbacks.OrderServiceClient"</SPAN> /> + <reference name=<SPAN class="code-quote">"orderService"</SPAN> target=<SPAN class="code-quote">"ServiceComponent/OrderService"</SPAN>> + <binding.jms uri=<SPAN class="code-quote">"jms:OrderService"</SPAN>/> + <callback> + <binding.jms /> + </callback> + </reference> + </component> + + <component name=<SPAN class="code-quote">"ServiceComponent"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"callbacks.OrderServiceImpl"</SPAN> /> + <service name=<SPAN class="code-quote">"OrderService"</SPAN>> + <binding.jms /> + <callback> + <binding.jms /> + </callback> + </service> + </component> + +</composite> +</PRE> +</DIV></DIV> + +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/lightbulb_on.gif" height="16" width="16" align="absmiddle" alt="" border="0"> When no destination is defined on the callback binding of a <reference> then a JMS temporary queue will be used.</P> + +<H3><A name="SCAJavabinding.jms-SettingJMSheadersanduserproperties"></A>Setting JMS headers and user properties</H3> + +<P>JMS headers and user properties can be set on JMS messages sent from Tuscany by using the <Headers> and <OperationProperties> elements of the JMS binding. The <Headers> element applies to all messages, the <OperationProperties> applies to individual operations and may override values set on the <Headers> element.</P> + +<P>An example of using these is shown in the following snippet of SCDL:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<binding.jms uri=<SPAN class="code-quote">"jms:ServiceQueue"</SPAN>> + <headers JMSType=<SPAN class="code-quote">"someTypeValue"</SPAN> /> + <operationProperties name=<SPAN class="code-quote">"op2"</SPAN>> + <headers JMSType=<SPAN class="code-quote">"op2SpecificTypeValue"</SPAN> /> + </operationProperties> +</binding.jms> +</PRE> +</DIV></DIV> + +<P>A complete working example of using <Headers> and <OperationProperties> can be seen in the <A href="https://svn.apache.org/repos/asf/tuscany/java/sca/itest/jms/src/test/java/org/apache/tuscany/sca/binding/jms/PropertiesTestCase.java" class="external-link" rel="nofollow">properties itest </A></P> + +<H3><A name="SCAJavabinding.jms-UsingJMSmessageselectors"></A>Using JMS message selectors </H3> + +<P>Services using the JMS binding to receive messages may only want a subset of the messages arriving on a queue or topic. This can be done by using the <SubscriptionHeaders> element which enables defining a <A href="http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JMS4.html#wp79281" class="external-link" rel="nofollow">JMS message selector </A> to filter the messages that will be received. </P> + +<P>An example of using these is shown in the following snippet of SCDL:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<binding.jms uri=<SPAN class="code-quote">"jms:ServiceTopic"</SPAN> > + <SubscriptionHeaders JMSSelector=<SPAN class="code-quote">"JMSType = 'type1'"</SPAN>/> +</binding.jms> +</PRE> +</DIV></DIV> + +<P>A complete working example of using <SubscriptionHeaders> can be seen in the <A href="https://svn.apache.org/repos/asf/tuscany/java/sca/itest/jms-selectors" class="external-link" rel="nofollow">jms selectors itest </A>.</P> + +<H3><A name="SCAJavabinding.jms-Usingadefinitions.xmlfileandtherequestConnection%2FresponseConnectionattributes"></A>Using a definitions.xml file and the requestConnection/responseConnection attributes</H3> + +<P>It can be useful to define the details of the JMS resources separately from the SCA composite, to support this the SCA definitions.xml file can be used to define 'model' <binding.jms> elements which can then be referred to from the binding within the composite. </P> + +<P>For example, the following shows a definitions.xml file defining a JMS queue and connection factory which are then used by a JMS binding within a composite.</P> + +<P>The definitions.xml file:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<definitions xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.osoa.org/xmlns/sca/1.0"</SPAN> +</SPAN> xmlns:itest=<SPAN class="code-quote">"http:<SPAN class="code-comment">//jms"</SPAN> +</SPAN> targetNamespace=<SPAN class="code-quote">"http:<SPAN class="code-comment">//jms"</SPAN> > +</SPAN> + <binding.jms name=<SPAN class="code-quote">"itest:TestService"</SPAN> > + <destination name=<SPAN class="code-quote">"MyServiceQueue"</SPAN> create=<SPAN class="code-quote">"never"</SPAN>/> + <connectionFactory name=<SPAN class="code-quote">"MyConnectionFactory"</SPAN>/> + </binding.jms> + +</definitions> +</PRE> +</DIV></DIV> + +<P>and a binding which uses the definitions.xml binding:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"><binding.jms requestConnection=<SPAN class="code-quote">"itest:TestService"</SPAN> /></PRE> +</DIV></DIV> + +<P>A complete working example of using the requestConnection/responseConnection attributes can be seen in the <A href="https://svn.apache.org/repos/asf/tuscany/java/sca/itest/jms-definitions" class="external-link" rel="nofollow">jms definitions itest </A>.</P> + +<H3><A name="SCAJavabinding.jms-ConfiguringJMSresources"></A>Configuring JMS resources</H3> + +<P>Tuscany locates all JMS resources from JNDI so the environment where Tuscany is running needs to have JNDI and JMS correctly configured in order to use the Tuscany JMS binding. </P> + +<P>The following describes how to configure JMS in some common environments:</P> + +<H4><A name="SCAJavabinding.jms-TuscanyJ2SEstandaloneenvironmentwithActiveMQ"></A>Tuscany J2SE standalone environment with ActiveMQ</H4> + +<P>The Tuscany standalone runtime can use an embedded <A href="http://activemq.apache.org/" class="external-link" rel="nofollow">Apache ActiveMQ</A> message broker. To use ActiveMQ the application needs to include the JMS API and ActiveMQ jars in the classpath and include a jndi.properties file to configure the ActiveMQ resources in JNDI. </P> + +<P>An example of this can be seen in the Tuscany <A href="https://svn.apache.org/repos/asf/tuscany/java/sca/itest/jms/" class="external-link" rel="nofollow">JMS itest</A> which uses the <A href="http://repo1.maven.org/maven2/org/apache/activemq/activemq-core/4.1.1/activemq-core-4.1.1.jar" class="external-link" rel="nofollow">ActiveMQ 4.1.1</A> release and <A href="https://svn.apache.org/repos/asf/tuscany/java/sca/itest/jms/src/main/resources/jndi.properties" class="external-link" rel="nofollow">this</A> jndi.properties file. </P> + +<P>For more information on using ActiveMQ see the Apache ActiveMQ website and specifically <A href="http://activemq.apache.org/jndi-support.html" class="external-link" rel="nofollow">this</A> page for information about configuring JNDI resources. </P> + +<H4><A name="SCAJavabinding.jms-ApacheTomcat"></A>Apache Tomcat</H4> + +<P>Tomcat does not include a JMS broker by default so you need to either embed one in each Tuscany application, install a broker into the tomcat installation, or use an external broker. Once that is done JNDI resources can be defined using the standard Tomcat facilities, see the Tomcat <A href="http://tomcat.apache.org/tomcat-6.0-doc/jndi-resources-howto.html" class="external-link" rel="nofollow">JNDI How-to</A>. </P> + +<P>The Tuscany samples that use JMS and Tomcat demonstrate how to embed a JMS broker within the application by including ActiveMQ and its dependencies within the sample WAR, and using the webapp META-INF/context.xml file to define the JMS resources in JNDI. </P> + + +<H4><A name="SCAJavabinding.jms-JEEapplicationserverssuchasApacheGeronimo%2CWebSphereetc"></A>JEE application servers such as Apache Geronimo, WebSphere etc</H4> + +<P>JEE Application servers such as Geronimo, WebSphere, WebLogic etc come with their own JMS broker that can be used by Tuscany. All the JMS resources used by a Tuscany application must be manually defined in the application server. Usually the application server has some sort of admin console where the resources can be defined using a web browser. </P> + +<P>The Tuscany helloworld JMS sample <A href="https://svn.apache.org/repos/asf/tuscany/java/sca/samples/helloworld-jms-webapp/README" class="external-link" rel="nofollow">README</A> describes the specific details of how to do this for some common application servers.</P> + +<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>ClassCastExceptions when using Tuscany applications in an Application Server</B><BR>Tuscany applications, specifically the JMS samples, are built to work out of-the-box on Tomcat by including a JMS broker embedded within the application. This causes incompatibilities with some Application Servers because the Java class of JMS resources may use different class loaders in the server and the application. The solution is to delete any JMS API jar included in the application WAR, for example, the geronimo-jms_1.1_spec-1.1.jar.</TD></TR></TABLE></DIV> + +<H4><A name="SCAJavabinding.jms-%28%2F%29UsingJEEresourcereferences"></A><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Using JEE resource references</H4> + +<P>When running Tuscany in a JEE environment it can be useful to use JEE resource references to map local application resource names to global JNDI names. This can be done by using <resource-ref> elements in the application deployment descriptor. If a <resource-ref> exists for a JMS binding resource then Tuscany will use that instead of looking up the resource directly in the global JNDI.</P> + +<P>For example, adding the following definitions to the helloworld JMS sample <A href="https://svn.apache.org/repos/asf/incubator/tuscany/java/sca/samples/helloworld-jms-webapp/src/main/webapp/WEB-INF/web.xml" class="external-link" rel="nofollow">web.xml</A> will enable mapping the 'ConnectionFactory' and 'HelloWorldService' names used by the JMS binding into names for the actual resources used on the Application Server. This will normally occur when the application is dployed with the deploy tool asking what real resource names the resourecs should be mapped to.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<resource-ref> + <res-ref-name>ConnectionFactory</res-ref-name> + <res-type>javax.jms.ConnectionFactory</res-type> + <res-auth>Container</res-auth> + <res-sharing-scope>Shareable</res-sharing-scope> +</resource-ref> + +<resource-ref> + <res-ref-name>HelloWorldService</res-ref-name> + <res-type>javax.jms.Queue</res-type> + <res-auth>Container</res-auth> + <res-sharing-scope>Shareable</res-sharing-scope> +</resource-ref> +</PRE> +</DIV></DIV> + + +<H4><A name="SCAJavabinding.jms-UsinganexternalJMSbroker"></A>Using an external JMS broker</H4> + +<P>When the Tuscany environment does not include a JMS broker then an external broker may be used by specifying the initialContextFactory and jndiURL attributes on the binding.jms element. Any JMS 1.1 compatible broker should work such as Apache ActiveMQ or any other proprietary broker. The Tuscany application classpath will need to include jars for the initial context factory and all of its dependencies.</P> + +<P>An example of using the Tuscany JMS binding with an external ActiveMQ broker is as follows:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<binding.jms initialContextFactory=<SPAN class="code-quote">"org.apache.activemq.jndi.ActiveMQInitialContextFactory"</SPAN> jndiURL=<SPAN class="code-quote">"tcp:<SPAN class="code-comment">//localhost:61616"</SPAN>> +</SPAN> <destination name=<SPAN class="code-quote">"DestQueueA"</SPAN>/> +</binding.jms> +</PRE> +</DIV></DIV> + +<H4><A name="SCAJavabinding.jms-UsingtheWebSphereclientforJMS"></A>Using the WebSphere client for JMS</H4> + +<P>The Tuscany JMS binding now (post Tuscany SCA 1.2) works the <A href="http://www-1.ibm.com/support/docview.wss?uid=swg24012804" class="external-link" rel="nofollow">WebSphere client for JMS </A> which enables Tuscany applications running outside of WebSphere to use JMS resources defined within WebSphere. You need to include the JMS client jars in the Tuscany classpath and ensure that the JMS connection factory has the "endpoint providers" field configured in WebSphere. See this <A href="http://apache.markmail.org/message/qufruqdwxuvaagev" class="external-link" rel="nofollow">email thread </A> for more information.</P> + +<H3><A name="SCAJavabinding.jms-JMSMessagetypesandmessagebodyformat"></A>JMS Message types and message body format</H3> + +<P>The SCA JMS specification only defines how to use JMS TextMessages which contain XML in the message body, however it is a common requirement to use alternative message types and body formats. Currently Tuscany defines an additional "messageProcessor" attribute on the binding.jms element to support additional message types and payload formats. For the time being this should be considered an interim solution which will be changed in future Tuscany releases.</P> + +<P>The messageProcessor attribute value may be "XMLTextMessage", "TextMessage", "ObjectMessage", or the name of a Java class that implements the org.apache.tuscany.sca.binding.jms.provider.JMSMessageProcessor interface. For example:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<reference name=<SPAN class="code-quote">"serviceA"</SPAN> promote=<SPAN class="code-quote">"HelloWorldClient/serviceA"</SPAN>> + <binding.jms messageProcessor=<SPAN class="code-quote">"my.TestMessageProcessor"</SPAN> /> +</reference> +</PRE> +</DIV></DIV> + +<P>For a complete example of using the messageProcessor attribute see the <A href="https://svn.apache.org/repos/asf/tuscany/java/sca/itest/jms/src/test/java/org/apache/tuscany/sca/binding/jms/MessageProcessorTestCase.java" class="external-link" rel="nofollow">MessageProcessorTestCase</A> itest. </P> + +<H3><A name="SCAJavabinding.jms-UsingpolicytocontroltheJMSbinding"></A>Using policy to control the JMS binding</H3> +<P>The JMS binding is aware of the following policy implementations. </P> + +<UL class="alternate" type="square"> + <LI>org.apache.tuscany.sca.binding.jms.policy.header.JMSHeaderPolicy + <UL class="alternate" type="square"> + <LI>Used to set various JMS message headers including JMSType, JMSCorrelationID, JMSDeliveryMode, JMSTimeToLive, JMSPriority and arbitrary user defined header properties</LI> + </UL> + </LI> + <LI>org.apache.tuscany.sca.binding.jms.policy.authentication.token.JMSTokenAuthenticationPolicy + <UL class="alternate" type="square"> + <LI>Used to insert a user defined authentication property into the JMS header.</LI> + </UL> + </LI> +</UL> + + +<P>Intents and policy sets can be constructed to control the application of these policies. The following intents are defined by default</P> +<UL class="alternate" type="square"> + <LI>pritority</LI> + <LI>deliveryMode</LI> +</UL> + + +<P>New intents and policy sets can be designed are required to provide the level of control you need over your application. </P> + +<H4><A name="SCAJavabinding.jms-Intent%3Apriority"></A>Intent: priority</H4> +<P>The priority intent provides a coarse grained approach to setting message priority. For example,</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <reference name=<SPAN class="code-quote">"serviceA"</SPAN> promote=<SPAN class="code-quote">"HelloWorldClient/serviceA"</SPAN> requires=<SPAN class="code-quote">"priotiry.meduim"</SPAN>> + <binding.jms messageProcessor=<SPAN class="code-quote">"my.TestMessageProcessor"</SPAN> /> +</reference> +</PRE> +</DIV></DIV> + +<P>The values "priority.high", "priority.medium", "priority.low" are supported. It is the responsibility of the user to define a policy set to support these intents. The following policy set could be used to support these priority values.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <policySet name=<SPAN class="code-quote">"JMSPolicySet1"</SPAN> + provides=<SPAN class="code-quote">"priority"</SPAN> + appliesTo=<SPAN class="code-quote">"sca:binding.jms"</SPAN>> + <intentMap provides=<SPAN class="code-quote">"priority"</SPAN> <SPAN class="code-keyword">default</SPAN>=<SPAN class="code-quote">"medium"</SPAN>> + <qualifier name=<SPAN class="code-quote">"high"</SPAN>> + <tuscany:jmsHeader JMSPriority=<SPAN class="code-quote">"9"</SPAN>/> + </qualifier> + <qualifier name=<SPAN class="code-quote">"medium"</SPAN>> + <tuscany:jmsHeader JMSPriority=<SPAN class="code-quote">"4"</SPAN>/> + </qualifier> + <qualifier name=<SPAN class="code-quote">"low"</SPAN>> + <tuscany:jmsHeader JMSPriority=<SPAN class="code-quote">"0"</SPAN>/> + </qualifier> + </intentMap> + </policySet> +</PRE> +</DIV></DIV> + +<H4><A name="SCAJavabinding.jms-Intent%3AdeliveryMode"></A>Intent: deliveryMode</H4> + +<P>The deliveryMode intent provides s simple way of specifying whether a message should be delivered persistently or non-persistently. For example, </P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <reference name=<SPAN class="code-quote">"serviceA"</SPAN> promote=<SPAN class="code-quote">"HelloWorldClient/serviceA"</SPAN> requires=<SPAN class="code-quote">"deliveryMode.persistent"</SPAN>> + <binding.jms messageProcessor=<SPAN class="code-quote">"my.TestMessageProcessor"</SPAN> /> +</reference> +</PRE> +</DIV></DIV> + +<P>The values "deliveryMode.persistent" and "deliveryMode.nonPersistent" are supported. It is the responsibility of the user to define a policy set to support these intents. The following policy set could be used to support these delivery mode values.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <policySet name=<SPAN class="code-quote">"JMSPolicySet2"</SPAN> + provides=<SPAN class="code-quote">"deliveryMode"</SPAN> + appliesTo=<SPAN class="code-quote">"sca:binding.jms"</SPAN>> + <intentMap provides=<SPAN class="code-quote">"deliveryMode"</SPAN> <SPAN class="code-keyword">default</SPAN>=<SPAN class="code-quote">"nonPersistent"</SPAN>> + <qualifier name=<SPAN class="code-quote">"persistent"</SPAN>> + <tuscany:jmsHeader JMSDeliveryMode=<SPAN class="code-quote">"PERSISTENT"</SPAN>/> + </qualifier> + <qualifier name=<SPAN class="code-quote">"nonPersistent"</SPAN>> + <tuscany:jmsHeader JMSDeliveryMode=<SPAN class="code-quote">"NON_PERSISTENT"</SPAN>/> + </qualifier> + </intentMap> + </policySet> +</PRE> +</DIV></DIV> + +<H4><A name="SCAJavabinding.jms-Otherheadervalues"></A>Other header values</H4> + +<P>TBD</P> + + +<H3><A name="SCAJavabinding.jms-JMSbindingschema"></A>JMS binding schema</H3> + +<P>The complete JMS binding SCDL schema has the following format:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<binding.jms correlationScheme=<SPAN class="code-quote">"string"</SPAN>? + initialContextFactory=<SPAN class="code-quote">"xs:anyURI"</SPAN>? + jndiURL=<SPAN class="code-quote">"xs:anyURI"</SPAN>? + requestConnection=<SPAN class="code-quote">"QName"</SPAN>? + responseConnection=<SPAN class="code-quote">"QName"</SPAN>? + operationProperties=<SPAN class="code-quote">"QName"</SPAN>? + ... > + + <destination name=<SPAN class="code-quote">"xs:anyURI"</SPAN> type=<SPAN class="code-quote">"string"</SPAN>? create=<SPAN class="code-quote">"string"</SPAN>?> + <property name=<SPAN class="code-quote">"NMTOKEN"</SPAN> type=<SPAN class="code-quote">"NMTOKEN"</SPAN>>* + </destination>? + + <connectionFactory name=<SPAN class="code-quote">"xs:anyURI"</SPAN> create=<SPAN class="code-quote">"string"</SPAN>?> + <property name=<SPAN class="code-quote">"NMTOKEN"</SPAN> type=<SPAN class="code-quote">"NMTOKEN"</SPAN>>* + </connectionFactory>? + + <activationSpec name=<SPAN class="code-quote">"xs:anyURI"</SPAN> create=<SPAN class="code-quote">"string"</SPAN>?> + <property name=<SPAN class="code-quote">"NMTOKEN"</SPAN> type=<SPAN class="code-quote">"NMTOKEN"</SPAN>>* + </activationSpec>? + + <response> + <destination name=<SPAN class="code-quote">"xs:anyURI"</SPAN> type=<SPAN class="code-quote">"string"</SPAN>? create=<SPAN class="code-quote">"string"</SPAN>?> + <property name=<SPAN class="code-quote">"NMTOKEN"</SPAN> type=<SPAN class="code-quote">"NMTOKEN"</SPAN>>* + </destination>? + <connectionFactory name=<SPAN class="code-quote">"xs:anyURI"</SPAN> create=<SPAN class="code-quote">"string"</SPAN>?> + <property name=<SPAN class="code-quote">"NMTOKEN"</SPAN> type=<SPAN class="code-quote">"NMTOKEN"</SPAN>>* + </connectionFactory>? + <activationSpec name=<SPAN class="code-quote">"xs:anyURI"</SPAN> create=<SPAN class="code-quote">"string"</SPAN>?> + <property name=<SPAN class="code-quote">"NMTOKEN"</SPAN> type=<SPAN class="code-quote">"NMTOKEN"</SPAN>>* + </activationSpec>? + </response>? + + <complexType name=<SPAN class="code-quote">"SubscriptionHeaders"</SPAN>> + <attribute name=<SPAN class="code-quote">"JMSSelector"</SPAN> type=<SPAN class="code-quote">"string"</SPAN>/> + </complexType> + + <resourceAdapter name=<SPAN class="code-quote">"NMTOKEN"</SPAN>>? + <property name=<SPAN class="code-quote">"NMTOKEN"</SPAN> type=<SPAN class="code-quote">"NMTOKEN"</SPAN>>* + </resourceAdapter>? + + <headers JMSType=<SPAN class="code-quote">"string"</SPAN>? + JMSCorrelationId=<SPAN class="code-quote">"string"</SPAN>? + JMSDeliveryMode=<SPAN class="code-quote">"string"</SPAN>? + JMSTimeToLive=<SPAN class="code-quote">"<SPAN class="code-object">int</SPAN>"</SPAN>? + JMSPriority=<SPAN class="code-quote">"string"</SPAN>?> + <property name=<SPAN class="code-quote">"NMTOKEN"</SPAN> type=<SPAN class="code-quote">"NMTOKEN"</SPAN>>* + </headers>? + + <operationProperties name=<SPAN class="code-quote">"string"</SPAN> nativeOperation=<SPAN class="code-quote">"string"</SPAN>?> + <headers JMSType=<SPAN class="code-quote">"string"</SPAN>? + JMSCorrelationId=<SPAN class="code-quote">"string"</SPAN>? + JMSDeliveryMode=<SPAN class="code-quote">"string"</SPAN>? + JMSTimeToLive=<SPAN class="code-quote">"<SPAN class="code-object">int</SPAN>"</SPAN>? + JMSPriority=<SPAN class="code-quote">"string"</SPAN>?> + <property name=<SPAN class="code-quote">"NMTOKEN"</SPAN> type=<SPAN class="code-quote">"NMTOKEN"</SPAN>>* + </headers>? + </operationProperties>* + + <opertionSelector.jmsdefault/>? | <opertionSelector.jmsUserProp propertyName=<SPAN class="code-quote">"somePropertyName"</SPAN>/>? + <wireFormat.jmsdefault sendFormat+<SPAN class="code-quote">"text|bytes"</SPAN>/>? | <wireFormat.jmsBytes/>? | <wireFormat.jmsBytesXML/>? | <wireFormat.jmsText/>? | <wireFormat.jmsTextXML/>? | <wireFormat.jmsObject/>? + +</binding.jms> +</PRE> +</DIV></DIV> + +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/help_16.gif" height="16" width="16" align="absmiddle" alt="" border="0"> See the <A href="http://www.osoa.org/download/attachments/35/SCA_JMSBinding_V100.pdf?version=2" class="external-link" rel="nofollow">JMS Binding Specification 1.0</A> for full details of each of these configuration options.</P> + +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Not all these elements are supported by Tuscany. Specifically, the <activationSpec> and <resourceAdapter> elements are not supported as Tuscany does not use JCA or MDBs for its JMS support.</P> + +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" height="16" width="16" align="absmiddle" alt="" border="0"> The create attribute on the destination element is not supported in most environments and all JMS resources (connection factories, queues and topics) need to be pre-configured. An exception to this is when using Apache ActiveMQ as the JMS broker then Tuscany may be able to dynamically create queue and topic resources. This is mainly only useful for unit testing and it is recommended that user applications are designed with the expectation that JMS resources need to be preconfigured.</P> + +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" height="16" width="16" align="absmiddle" alt="" border="0"> the "operationSelector" and "wireFormat" elements are declared in the tuscany namespace (<A href="http://tuscany.apache.org/xmlns/sca/1.0" class="external-link" rel="nofollow">http://tuscany.apache.org/xmlns/sca/1.0</A>). The default operation selection and wire format behvaviour is defined in the <A href="http://www.osoa.org/download/attachments/35/SCA_JMSBinding_V100.pdf?version=2" class="external-link" rel="nofollow">JMS Binding Specification 1.0</A> but we have added a selection of other formats and selectors as alternatives. </P> + +<H3><A name="SCAJavabinding.jms-ImplementationNotes"></A>Implementation Notes</H3> + +<P>The JMS binding is the first binding where we have started to exploit the binding wire concept. This affects how the JMS binding is implemented.</P> + +<P>The addition of a binding wire to the infrastructure allows interceptors to be added that operate on message data in the context of the binding. This allows wire formats to be specified. This is important for bindings like JMS where the data format on the wire does not necessarily follow a well known specification. The default wire format in the Tuscany JMS binding is as described in the SCA JMS specification, i.e. a JMS text message containing XML. However JMS messages using any arbitrary format can be supported by constructing new wire format extensions. </P> + +<P>The following diagram shows an overview of how a reference JMS binding may be configured to talk to a service JMS binding using the Text XML wire format. </P> + +<P><SPAN class="image-wrap" style=""><IMG src="sca-java-bindingjms.data/jmstextxml-invocation-chain.png" style="border: 0px solid black"></SPAN></P> + +<P>In the above diagram, <BR> +1) databinding interceptor normalizes the data into an intermediate format that the binding can understand<BR> +2) wire format interceptor, that is called WireFormat.jmsTextXML, marshals the normalized data into the protocol-specific message, JMSMessage for binding.jms</P> + +<P>An example of a composite file which results in this kind of configuration is as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<composite xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.osoa.org/xmlns/sca/1.0"</SPAN> +</SPAN> targetNamespace=<SPAN class="code-quote">"http:<SPAN class="code-comment">//helloworld"</SPAN> +</SPAN> xmlns:hw=<SPAN class="code-quote">"http:<SPAN class="code-comment">//helloworld"</SPAN> +</SPAN> name=<SPAN class="code-quote">"helloworld"</SPAN>> + + <component name=<SPAN class="code-quote">"HelloWorldReferenceComponent"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"org.apache.tuscany.sca.binding.jms.format.jmstextxml.helloworld.HelloWorldReferenceImpl"</SPAN> /> + <reference name=<SPAN class="code-quote">"helloWorldService1"</SPAN> > + <binding.jms> + <destination name=<SPAN class="code-quote">"HelloWorldService1"</SPAN>/> + <wireFormat.jmsTextXML/> + </binding.jms> + </reference> + </component> + + <component name=<SPAN class="code-quote">"HelloWorldServiceComponent1"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"org.apache.tuscany.sca.binding.jms.format.jmstextxml.helloworld.HelloWorldServiceImpl"</SPAN> /> + <service name=<SPAN class="code-quote">"HelloWorldService"</SPAN>> + <binding.jms> + <destination name=<SPAN class="code-quote">"HelloWorldService1"</SPAN>/> + </binding.jms> + </service> + </component> +</composite> +</PRE> +</DIV></DIV> + +<P>Note that <wireFormat.jmsTextXML/> is explicitly specified on the reference binding. As this is the default wire format it can be omitted as is the case on the service binding. </P> + +<P>Of course Tuscany already has a databinding framework that is able to transform between datatypes generically. So think of the wire format functionality as performing binding specific transformations. </P> + +<P>The following diagram gives an overview of the difference between the databinding and wireformat transformations on the reference side: </P> + +<P><SPAN class="image-wrap" style=""><IMG src="sca-java-bindingjms.data/DataFormatScenarios-2-reference.png" style="border: 0px solid black"></SPAN></P> + +<P>The following diagram gives an overview of the difference between the databinding and wireformat transformations on the service side:</P> + +<P><SPAN class="image-wrap" style=""><IMG src="sca-java-bindingjms.data/DataFormatScenarios-2-service.png" style="border: 0px solid black"></SPAN></P> + +<P>When looking at the code itself you will see the following structure:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +binding-jms + The jms binding model + +binding-jms-runtime + /org/apache/tuscany/sca/binding/jms/provider + The base JMS binding runtime implementation. Exploits the Tuscany provider pattern. + + /org/apache/tuscany/sca/binding/jms/context + A structure that passes the binding context with the message and allows the wire format and operation selection interceptors to <SPAN class="code-keyword">do</SPAN> binding specific things + /org/apache/tuscany/sca/binding/jms/transport + JMS transport processing implmented as an interceptor + /org/apache/tuscany/sca/binding/jms/headers + JMS header processing implmented as an interceptor + /org/apache/tuscany/sca/binding/jms/wireformat + JMS wire format interceptors + /org/apache/tuscany/sca/binding/jms/operationselector + JMS operation selector interceptors + +binding-jms-policy + Some base JMS policy implementations +</PRE> +</DIV></DIV> + +<P>The providers can be replaced in order to change the way that the JMS binding is constructed. </P> + +<P><SPAN class="image-wrap" style=""><IMG src="sca-java-bindingjms.data/providers.png" style="border: 0px solid black"></SPAN><BR> +<SPAN class="image-wrap" style=""><IMG src="sca-java-bindingjms.data/providers.png" style="border: 0px solid black"></SPAN></P> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java binding.jms'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingjsonrpc.html b/site/trunk/site-publish/documentation-2x/sca-java-bindingjsonrpc.html new file mode 100644 index 0000000000..8362ee137f --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingjsonrpc.html @@ -0,0 +1,329 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java binding.jsonrpc : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java binding.jsonrpc">SCA Java binding.jsonrpc</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java binding.jsonrpc">SCA Java binding.jsonrpc</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java binding.jsonrpc</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964964"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964964">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964964"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964964">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964964"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964964">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H3><A name="SCAJavabinding.jsonrpc-%3Cbinding.jsonrpc%3E"></A><binding.jsonrpc></H3> + +<P>Tuscany supports <A href="http://json-rpc.org/" class="external-link" rel="nofollow">JSON-RPC</A> as a protcol for use with SCA services by using the <binding.jsonrpc> element in your Application composite. This enables remote web browser clients to easily make RPC style calls to server-side SCA components.</P> + +<H3><A name="SCAJavabinding.jsonrpc-UserStories"></A>User Stories</H3> +<UL> + <LI>A client application invoke a remote SCA Service using JSON-RPC and the invocation return business objects in JSON format. <IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> + <UL> + <LI>e.g. Retrieve catalog items</LI> + </UL> + </LI> + <LI>A SCA component can define a reference to a remote SCA Service and use JSON-RPC for the invocation. <IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> + <UL> + <LI>e.g. A catalog aggregator invoke various catalog services using JSON-RPC and aggregate the returned items into a single response</LI> + </UL> + </LI> + <LI>A client application invoke a SCA Service using JSON-RPC and the invocation returns a business exception. <IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> + <UL> + <LI>e.g. Empty catalog throws a Busines Exception. Business Exception should properly propagate and display nicely to client.</LI> + </UL> + </LI> + <LI>A client application invoke a SCA Service using JSON-RPC and the invocation returns a runtime exception. <IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> + <UL> + <LI>e.g. Try to retrieve catalog items from a catalog service that is un-available. Runtime exception properly propagate and display nicely to client.</LI> + </UL> + </LI> + <LI>A client application needs to access a service exposed trough JSON-RPC binding that requires authentication. + <UL> + <LI>e.g. make sure if nobody can get to the catalog if it's not authenticated</LI> + </UL> + </LI> +</UL> + + + +<H3><A name="SCAJavabinding.jsonrpc-UsingtheTuscanyJSONRPCbinding"></A>Using the Tuscany JSON-RPC binding</H3> + +<P>You could use this binding without any configuration, or by providing a specific service URI. <BR> +To include it on a SCA service or Reference, choose one of the examples below :</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<composite xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//docs.oasis-open.org/ns/opencsa/sca/200903"</SPAN> +</SPAN> xmlns:tuscany=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/xmlns/sca/1.1"</SPAN> +</SPAN> ... + + <tuscany:binding.jsonrpc/> +</PRE> +</DIV></DIV> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<composite xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//docs.oasis-open.org/ns/opencsa/sca/200903"</SPAN> +</SPAN> xmlns:tuscany=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/xmlns/sca/1.1"</SPAN> +</SPAN> ... + + <binding.jsonrpc uri=<SPAN class="code-quote">"http:<SPAN class="code-comment">//localhost:8080/store/catalog"</SPAN>/></SPAN> +</PRE> +</DIV></DIV> + +<H3><A name="SCAJavabinding.jsonrpc-ConsumingJSONRPCservicesontheclientapplication"></A>Consuming JSON-RPC services on the client application</H3> + +<P>Any JSON-RPC client may be used to access SCA services which use <binding.jsonrpc>, below we are going to describe different ways you could consume the Tuscany JSON-RPC services in your client application.</P> + +<H4><A name="SCAJavabinding.jsonrpc-UtilizingTuscanyImplementation.widget"></A>Utilizing Tuscany Implementation.widget</H4> + +<P>When your web client application is defined as an SCA component utilizing <A href="sca-java-implementationwidget.html" title="SCA Java implementation.widget">Tuscany Widgets</A>, a JavaScript is generated which may be included within an HTML document to properly inject services references to SCA references defined on the same HTML document.</P> + +<P>This script is used by simply including the following tag within the HTML page :</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<script type=<SPAN class="code-quote">"text/javascript"</SPAN> src=<SPAN class="code-quote">"html-page-name.js"</SPAN> /> +</PRE> +</DIV></DIV> + +<P>This initializes the proxys for the SCA services which can then be injected into SCA references to make requests to the server-side components. For example, if there was a service named "myService" which had operations "aOnewayRequest" and "anRpcRequest" the scripts in the HTML page could now invoke these operations with the following:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-comment">//@Reference +</SPAN><SPAN class="code-keyword">var</SPAN> myService = <SPAN class="code-keyword">new</SPAN> Reference(<SPAN class="code-quote">"myService"</SPAN>); +myService.aOnewayRequest(args); +</PRE> +</DIV></DIV> +<P>or</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-comment">//@Reference +</SPAN><SPAN class="code-keyword">var</SPAN> myService = <SPAN class="code-keyword">new</SPAN> JSONRpcClient(<SPAN class="code-quote">"myService"</SPAN>); +myService.anRpcRequest(args, responseFunction); +</PRE> +</DIV></DIV> + +<P>Also see <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%2BJava%2Bimplementation.widget&linkCreation=true&fromPageId=5964964" class="createlink">Tuscany Widgets</A> for more details.</P> + +<H4><A name="SCAJavabinding.jsonrpc-UtilizingaJavaScriptClientProxy"></A>Utilizing a JavaScript Client Proxy</H4> + +<P>To simplify the task for web browsers developers Tuscany provides a 'binding-jsonrpc.js" JavaScript client proxy code that can be included in your application. </P> + +<P>After copying the script to your application, it can be used bu simply including the following tag within the HTML page :</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<script type=<SPAN class="code-quote">"text/javascript"</SPAN> src=<SPAN class="code-quote">"binding-jsonrpc.js"</SPAN> /> +</PRE> +</DIV></DIV> + +<P>This initializes the proxys for the SCA services which can then be used make requests to the server-side components. Based on the scenario described above, below are the to invoke these operations.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">var</SPAN> myService = <SPAN class="code-keyword">new</SPAN> JSONRpcClient(<SPAN class="code-quote">"Catalog"</SPAN>).service; +myService.aOnewayRequest(args); +</PRE> +</DIV></DIV> +<P>or</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">var</SPAN> myService = <SPAN class="code-keyword">new</SPAN> JSONRpcClient(<SPAN class="code-quote">"Catalog"</SPAN>).service; +myService.anRpcRequest(args, responseFunction); +</PRE> +</DIV></DIV> + +<H4><A name="SCAJavabinding.jsonrpc-HandlingJSONRPCResponsewithcallbacks"></A>Handling JSON-RPC Response with callbacks</H4> + +<P>In that example 'responseFunction' is the name of a function which is called to process the response and which gets called asynchronously on another thread when the response is avaialble. RPC requests are done this way instead of the simpler "answer = myService.anRpcRequest(args)" to avoid hanging the browser while the (potentially slow) request is being processed. An example of the responseFunction for the previous example is:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +function responseFunction(answer){ + <SPAN class="code-comment">// <SPAN class="code-keyword">do</SPAN> something with answer +</SPAN>} +</PRE> +</DIV></DIV> + +<H4><A name="SCAJavabinding.jsonrpc-Handlingerrors"></A>Handling errors</H4> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-comment">//initialization code +</SPAN><SPAN class="code-keyword">try</SPAN>{ + myService.anRpcRequest(args, responseFunction); +} <SPAN class="code-keyword">catch</SPAN>(e) { + <SPAN class="code-comment">//handle error +</SPAN> alert(e); +} + +function responseFunction(answer, exception){ + <SPAN class="code-comment">//handle exception information +</SPAN> <SPAN class="code-keyword">if</SPAN>(exception){ + alert(exception.message); + <SPAN class="code-keyword">return</SPAN>; + } + <SPAN class="code-comment">// <SPAN class="code-keyword">do</SPAN> something with answer +</SPAN>} + +</PRE> +</DIV></DIV> + +<H4><A name="SCAJavabinding.jsonrpc-UsingSCAJSONRPCserviceswithDojo"></A>Using SCA JSON-RPC services with Dojo</H4> + +<P>Apache Tuscany JSON-RPC services provide built-in support for <A href="http://manual.dojotoolkit.org/WikiHome/DojoDotBook/Book9" class="external-link" rel="nofollow">Dojo RPC</A>. The <A href="http://dojotoolkit.org/" class="external-link" rel="nofollow">Dojo</A> toolkit is a popular framework for writing Ajax/Web 2.0 style browser client applications. Tuscany SCA services which use <binding.jsonrpc> will by default support the <A href="http://dojo.jot.com/SMD" class="external-link" rel="nofollow">Simple Method Description (SMD) </A> protocol. SMD is similar to ?wsdl for Web services, entering a service endpoint appended with ?smd will return a SMD descriptor for the service. </P> + +<P>Using Tuscany SCA services with Dojo can therefore be as simple as the following:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <SPAN class="code-keyword">var</SPAN> myService = <SPAN class="code-keyword">new</SPAN> dojo.rpc.JsonService(<SPAN class="code-quote">"myService?smd"</SPAN>); +</PRE> +</DIV></DIV> + +<H4><A name="SCAJavabinding.jsonrpc-Supporteddatatypes"></A>Supported data types</H4> + +<P>The JSON-RPC binding utilize the Databinding Framework to provide support for the following data transformations :</P> + +<UL> + <LI>Primitive Type <==> JSON <==> Primitive Type</LI> + <LI>Array of Primitive Type <==> JSON <==> Array of Primitive Type</LI> + <LI>Java bean <==> JSON <==> Java bean</LI> + <LI>List <==> JSON <==> List</LI> + <LI>Map <==> JSON <==> Map</LI> + <LI>Set <==> JSON <==> Set</LI> +</UL> + + +<H4><A name="SCAJavabinding.jsonrpc-Someexamples%3A"></A>Some examples:</H4> + +<P>There are two samples showing using <binding.jsonrpc>, one which uses the Dojo Toolkit on the client, and another which uses the Tuscany scaDomain.js script. The samples are <A href="https://svn.apache.org/repos/asf/incubator/tuscany/java/sca/samples/helloworld-dojo/" class="external-link" rel="nofollow">helloworld-dojo</A> and <A href="https://svn.apache.org/repos/asf/incubator/tuscany/java/sca/samples/helloworld-jsonrpc/" class="external-link" rel="nofollow">helloworld-jsonrpc</A>.</P> + + + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java binding.jsonrpc'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingrest.html b/site/trunk/site-publish/documentation-2x/sca-java-bindingrest.html new file mode 100644 index 0000000000..5c7fa11f94 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingrest.html @@ -0,0 +1,515 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java binding.rest : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java binding.rest">SCA Java binding.rest</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java binding.rest">SCA Java binding.rest</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java binding.rest</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=20644360"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=20644360">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=20644360"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=20644360">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=20644360"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=20644360">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H3><A name="SCAJavabinding.rest-%3Cbinding.rest%3EIntroduction"></A><binding.rest> Introduction</H3> + +<P>The Tuscany Java SCA runtime supports Representational State Transfer (REST) services invocations via the <binding.rest> extension. Tuscany REST binding leverage JAX-RS Standards based annotations to map business operations to HTTP operations such as POST, GET, PUT and DELETE and utilizes Tuscany Databindings to provide support for different wire formats such as JSON, XML, Binary, etc shielding the application developer from contaminating his business logic with code to handle payload production/transformation details.</P> + +<H3><A name="SCAJavabinding.rest-UsingtheTuscanyRESTbinding"></A>Using the Tuscany REST binding</H3> + +<P>The primary use of the REST binding is to provide business services over HTTP in a distributed fashion. The simplest way to use the REST binding is to declare a business service that can be shared over the web and provide an HTTP address where one can access the service. This service is declared in an SCA composite file.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <component name=<SPAN class="code-quote">"Catalog"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"services.store.FruitsCatalogImpl"</SPAN>/> + <service name=<SPAN class="code-quote">"Catalog"</SPAN>> + <tuscany:binding.<SPAN class="code-keyword">rest</SPAN> uri=<SPAN class="code-quote">"http:<SPAN class="code-comment">//localhost:8085/Catalog"</SPAN>> +</SPAN> <tuscany:wireFormat.json /> + <tuscany:operationSelector.jaxrs /> + </tuscany:binding.<SPAN class="code-keyword">rest</SPAN>> + </service> + </component> +</PRE> +</DIV></DIV> + + +<P>Another way of implementing a REST service is to use a collection interface that matches the actions of the HTTP protocol. In this case, the methods must be named post, get, put, and delete. Tuscany ensures that the proper method is invoked via the request and response protocol of HTTP:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">public</SPAN> class TestGetImpl { + + <SPAN class="code-keyword">public</SPAN> InputStream get(<SPAN class="code-object">String</SPAN> id) { + <SPAN class="code-keyword">return</SPAN> <SPAN class="code-keyword">new</SPAN> ByteArrayInputStream((<SPAN class="code-quote">"<html><body><p>This is the service GET method, item="</SPAN> + id + <SPAN class="code-quote">"</body></html>"</SPAN>).getBytes()); + + } +} +</PRE> +</DIV></DIV> + +<P>So using the common verbs of HTTP and Java object serialization, one can implement services and run them anywhere the HTTP protocol is implemented. The service developer or implementer simply creates methods for post, get, put, and delete, and a business collection such as a shopping cart, telephone directory, insurance form, or blog sites can be created. See the Tuscany module binding-rest-runtime for complete examples.</P> + + +<H3><A name="SCAJavabinding.rest-MappingbusinessinterfacestoHTTPOperationsusingJAXRSStandardAnnotations"></A>Mapping business interfaces to HTTP Operations using JAX-RS Standard Annotations</H3> + +<P>JAX-RS offers standards based annotations that allow properly configuration of the REST service endpoint and mappings of specific HTTP operations (e.g. get, put, post, delete) to java operations. The following subset of JAX-RS annotations are currently supported :</P> + +<H4><A name="SCAJavabinding.rest-URIMappings"></A>URI Mappings</H4> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +@Path +@Path(<SPAN class="code-quote">"{id}"</SPAN>) +@PathParam(<SPAN class="code-quote">"id"</SPAN>) +</PRE> +</DIV></DIV> + +<H4><A name="SCAJavabinding.rest-OperationMappings"></A>Operation Mappings</H4> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +@GET +@PUT +@POST +@DELETE +</PRE> +</DIV></DIV> + +<H4><A name="SCAJavabinding.rest-EnablingJAXRSannotationprocessing"></A>Enabling JAX-RS annotation processing</H4> + +<P>In order to enable JAX-RS annotation processing, a component need to be configured to use JAX-RS Operation Selector.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <component name=<SPAN class="code-quote">"Catalog"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"services.store.FruitsCatalogImpl"</SPAN>/> + <property name=<SPAN class="code-quote">"currencyCode"</SPAN>>USD</property> + <service name=<SPAN class="code-quote">"Catalog"</SPAN>> + <tuscany:binding.<SPAN class="code-keyword">rest</SPAN> uri=<SPAN class="code-quote">"http:<SPAN class="code-comment">//localhost:8085/Catalog"</SPAN>> +</SPAN> <tuscany:wireFormat.json /> + <tuscany:operationSelector.jaxrs /> + </tuscany:binding.<SPAN class="code-keyword">rest</SPAN>> + </service> + <reference name=<SPAN class="code-quote">"currencyConverter"</SPAN> target=<SPAN class="code-quote">"CurrencyConverter"</SPAN>/> + </component> +</PRE> +</DIV></DIV> + +<DIV class="panelMacro"><TABLE class="infoMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>Integration with a existent JAX-RS engine might help on processing the full set of JAX-RS annotations. I have started looking into leveraging Wink resourceProcessor or related code to help on this layer.</TD></TR></TABLE></DIV> + +<H3><A name="SCAJavabinding.rest-MappingRPCstylecallsoverHTTPGET"></A>Mapping RPC style calls over HTTP GET</H3> + +<P>In some cases, there isn't a simple mapping of a business operation as resources, but there is still a desire to take advantage of HTTP caching and other benefits that HTTP GET type of operations provide. In order to accomplish this, binding.rest has built in functionality that allows you to map RPC style calls to HTTP GET operations.</P> + + + +<H4><A name="SCAJavabinding.rest-ClientInvocation"></A>Client Invocation</H4> + +<P>The URL schema follows a simple pattern :</P> + +<UL class="alternate" type="square"> + <LI><base service URI> ?<B>method=</B><operation name>&<B>parm1=</B><value>&<B>parm2=</B><value></LI> +</UL> + + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +http:<SPAN class="code-comment">//localhost:8085/EchoService?method=echo&msg=Hello RPC</SPAN> +</PRE> +</DIV></DIV> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +http:<SPAN class="code-comment">//localhost:8085/EchoService?method=echoArrayString&msgArray=Hello RPC1&msgArray=Hello RPC2"</SPAN> +</PRE> +</DIV></DIV> + +<H4><A name="SCAJavabinding.rest-MappingQueryStringstoBusinessOperationparameters"></A>Mapping QueryStrings to Business Operation parameters</H4> + +<P>Standard JAX-RS annotation @QueryParam is used to map parameters sent over HTTP GET invocations using query string to business operation parameter</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +@Remotable +<SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">interface</SPAN> Echo { + + <SPAN class="code-object">String</SPAN> echo(@QueryParam(<SPAN class="code-quote">"msg"</SPAN>) <SPAN class="code-object">String</SPAN> msg); + + <SPAN class="code-object">int</SPAN> echoInt(<SPAN class="code-object">int</SPAN> param); + + <SPAN class="code-object">boolean</SPAN> echoBoolean(<SPAN class="code-object">boolean</SPAN> param); + + <SPAN class="code-object">String</SPAN> [] echoArrayString(@QueryParam(<SPAN class="code-quote">"msgArray"</SPAN>) <SPAN class="code-object">String</SPAN>[] stringArray); + + <SPAN class="code-object">int</SPAN> [] echoArrayInt(<SPAN class="code-object">int</SPAN>[] intArray); + +} +</PRE> +</DIV></DIV> + +<H4><A name="SCAJavabinding.rest-EnablingRPCtoHTTPGETmapping"></A>Enabling RPC to HTTP GET mapping</H4> + +<P>In order to enable automatically mapping, a component need to be configured to use RPC Operation Selector.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <component name=<SPAN class="code-quote">"Catalog"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"services.store.FruitsCatalogImpl"</SPAN>/> + <property name=<SPAN class="code-quote">"currencyCode"</SPAN>>USD</property> + <service name=<SPAN class="code-quote">"Catalog"</SPAN>> + <tuscany:binding.<SPAN class="code-keyword">rest</SPAN> uri=<SPAN class="code-quote">"http:<SPAN class="code-comment">//localhost:8085/Catalog"</SPAN>> +</SPAN> <tuscany:wireFormat.json /> + <tuscany:response> + <tuscany:operationSelector.rpc /> + </tuscany:response> + </tuscany:binding.<SPAN class="code-keyword">rest</SPAN>> + </service> + <reference name=<SPAN class="code-quote">"currencyConverter"</SPAN> target=<SPAN class="code-quote">"CurrencyConverter"</SPAN>/> + </component> +</PRE> +</DIV></DIV> + +<H3><A name="SCAJavabinding.rest-WireFormats"></A>Wire Formats</H3> + +<P>This binding will support two styles of wire formats and will be used to control what type of payload will be generated by the service:</P> + +<UL class="alternate" type="square"> + <LI>hardWired : where you hard code the wire format expectations in the composite when configuring the binding. In the example below, service will be using JSON payload.</LI> +</UL> + + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<binding...> + <wireFormat.json> +</binding...> +</PRE> +</DIV></DIV> + +<UL class="alternate" type="square"> + <LI>dynamic : based on Content-Type header for request and Accept header for response. In the case below, the request content will be parsed based on the Content-Type request header and the response payload will be based on the request Accept header.</LI> +</UL> + + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<binding...> + <wireFormat.dynamic> +</binding...> +</PRE> +</DIV></DIV> + +<DIV class="panelMacro"><TABLE class="infoMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>In progress</TD></TR></TABLE></DIV> + +<H3><A name="SCAJavabinding.rest-CachecontrolusingETags%2CLastModifiedandotherHTTPHeaders"></A>Cache control using ETags, Last-Modified and other HTTP Headers</H3> + +<P>The HTTP specification provides a set of methods for HTTP clients and servers to interact. These methods form the foundation of the World Wide Web. Tuscany implements many of these methods a binding interface to a collection. The main methods are:</P> + +<UL> + <LI>GET - retrieves an item from a collection</LI> + <LI>POST - creates or adds an item to a collection</LI> + <LI>PUT - updates or replaces an item in a collection</LI> + <LI>DELETE - removes an item in a a collection</LI> +</UL> + + +<P>The HTTP specification (HTTP 1.1 Chapter 13 - Caching) also provides a mechanism by which these methods may be executed conditionally. To perform conditional methods, an HTTP client puts 3 items in the HTTP request header:</P> + +<UL> + <LI>ETag - entity tag, a unique identifier to an item in a collection. Normally created and returned by the server when creating (POST) a new item.</LI> + <LI>LastModified - an updated field. Normally a string containing a date and time of the last modification of the item.</LI> + <LI>Predicate - a logical test (e.g. IfModified, IfUnmodified) to use with the ETag and LastModified to determine whether to act.</LI> +</UL> + + +<P>The complete list of predicates is given in the HTTP specification.</P> + +<P>The most common use of conditional methods is to prevent two requests to the server instead of one conditional request. For example, a common scenario is to check if an item has been modified, if not changed update it with a new version, if changed do not update it. With a conditional PUT method (using the IfUnmodifed predicate and a LastModified date), this can be done in one action. Another common use is to prevent multiple GETs of an item to ensure we have a valid copy. Rather than doing a second request of a large item, one can do a conditional GET request (using an IfModified predicate and a LastModified date), and avoid the second request if our object is still valid. The server responds with either a normal response body, or status code 304 (Not Modified), or status code 412 (precondition failed).</P> + +<P>Default cache control is done by using generated ETags based on response content checksum. To avoid data to be overwriten during concurrent updates, include an HTTP If-Match header that contains the original content ETag value. If you want to force an update regardless of whether someone else has updated it since you retrieved it, then use If-Match: * and don't include the ETag.</P> + +<H4><A name="SCAJavabinding.rest-Declarativecachecontrol"></A>Declarative cache control</H4> +<P>In order to allow for better flexibility, and re-usability of the components exposed as REST services, there is an option to declare cache controls when configuring the REST Binding as show the example below :</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <component name=<SPAN class="code-quote">"CustomerService"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"services.customer.CustomerServiceImpl"</SPAN>/> + <service name=<SPAN class="code-quote">"CustomerService"</SPAN>> + <tuscany:binding.<SPAN class="code-keyword">rest</SPAN> uri=<SPAN class="code-quote">"http:<SPAN class="code-comment">//localhost:8085/Customer"</SPAN>> +</SPAN> <tuscany:wireFormat.xml /> + <tuscany:operationSelector.jaxrs /> + <tuscany:http-headers> + <tuscany:header name=<SPAN class="code-quote">"Cache-Control"</SPAN> value=<SPAN class="code-quote">"no-cache"</SPAN>/> + <tuscany:header name=<SPAN class="code-quote">"Expires"</SPAN> value=<SPAN class="code-quote">"-1"</SPAN>/> + <tuscany:header name=<SPAN class="code-quote">"X-Tuscany"</SPAN> value=<SPAN class="code-quote">"tuscany"</SPAN>/> + </tuscany:http-headers> + </tuscany:binding.<SPAN class="code-keyword">rest</SPAN>> + </service> + </component> +</PRE> +</DIV></DIV> + +<DIV class="panelMacro"><TABLE class="infoMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>This could be enhanced to enable more complex injection of fields to cache control headers.</TD></TR></TABLE></DIV> + + + +<H3><A name="SCAJavabinding.rest-StorescenariosgoesRESTCatalogServicesusingbinding.rest"></A>Store scenarios goes REST - Catalog Services using binding.rest</H3> + +<P>Below is our Store Catalog exposed as REST services utilizing the new binding.rest.</P> + +<P>Let's start by looking on how the component gets defined and configured in the composite file, particularly the following details :</P> + +<UL class="alternate" type="square"> + <LI>binding.rest uri defines the Catalog service endpoint</LI> + <LI>wireFormat.json configure the service to use JSON as the payload</LI> + <LI>operationSelector.jaxrs configure the binding to use JAX-RS annotations to map the HTTP operations to business operations</LI> +</UL> + + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<composite xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//docs.oasis-open.org/ns/opencsa/sca/200912"</SPAN> +</SPAN> xmlns:tuscany=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/xmlns/sca/1.1"</SPAN> +</SPAN> targetNamespace=<SPAN class="code-quote">"http:<SPAN class="code-comment">//store"</SPAN> +</SPAN> name=<SPAN class="code-quote">"store"</SPAN>> + + <component name=<SPAN class="code-quote">"Catalog"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"services.store.FruitsCatalogImpl"</SPAN>/> + <property name=<SPAN class="code-quote">"currencyCode"</SPAN>>USD</property> + <service name=<SPAN class="code-quote">"Catalog"</SPAN>> + <tuscany:binding.<SPAN class="code-keyword">rest</SPAN> uri=<SPAN class="code-quote">"http:<SPAN class="code-comment">//localhost:8085/Catalog"</SPAN>> +</SPAN> <tuscany:wireFormat.json /> + <tuscany:operationSelector.jaxrs /> + </tuscany:binding.<SPAN class="code-keyword">rest</SPAN>> + </service> + <reference name=<SPAN class="code-quote">"currencyConverter"</SPAN> target=<SPAN class="code-quote">"CurrencyConverter"</SPAN>/> + </component> + + <component name=<SPAN class="code-quote">"CurrencyConverter"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"services.store.CurrencyConverterImpl"</SPAN>/> + </component> + +</composite> +</PRE> +</DIV></DIV> + + +<P>Below is the Catalog Interface utilizing JAX-RS standard annotations to map HTTP operations to business operations.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">package</SPAN> services.store; + +<SPAN class="code-keyword">import</SPAN> javax.ws.rs.DELETE; +<SPAN class="code-keyword">import</SPAN> javax.ws.rs.GET; +<SPAN class="code-keyword">import</SPAN> javax.ws.rs.POST; +<SPAN class="code-keyword">import</SPAN> javax.ws.rs.PUT; +<SPAN class="code-keyword">import</SPAN> javax.ws.rs.Path; +<SPAN class="code-keyword">import</SPAN> javax.ws.rs.PathParam; + +<SPAN class="code-keyword">import</SPAN> org.oasisopen.sca.annotation.Remotable; + + +@Remotable +<SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">interface</SPAN> Catalog { + + @GET + Item[] getAll(); + + @GET + @Path(<SPAN class="code-quote">"{id}"</SPAN>) + Item getItemById(@PathParam(<SPAN class="code-quote">"id"</SPAN>) <SPAN class="code-object">String</SPAN> itemId); + + @POST + void addItem(Item item); + + @PUT + void updateItem(Item item); + + @DELETE + @Path(<SPAN class="code-quote">"{id}"</SPAN>) + void deleteItem(@PathParam(<SPAN class="code-quote">"id"</SPAN>) <SPAN class="code-object">String</SPAN> itemId); +} +</PRE> +</DIV></DIV> + +<P>Below is the Fuit catalog implementation</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +@Scope(<SPAN class="code-quote">"COMPOSITE"</SPAN>) +<SPAN class="code-keyword">public</SPAN> class FruitsCatalogImpl <SPAN class="code-keyword">implements</SPAN> Catalog { + + @Property + <SPAN class="code-keyword">public</SPAN> <SPAN class="code-object">String</SPAN> currencyCode = <SPAN class="code-quote">"USD"</SPAN>; + + @Reference + <SPAN class="code-keyword">public</SPAN> CurrencyConverter currencyConverter; + + <SPAN class="code-keyword">private</SPAN> Map<<SPAN class="code-object">String</SPAN>, Item> catalog = <SPAN class="code-keyword">new</SPAN> HashMap<<SPAN class="code-object">String</SPAN>, Item>(); + + @Init + <SPAN class="code-keyword">public</SPAN> void init() { + <SPAN class="code-object">String</SPAN> currencySymbol = currencyConverter.getCurrencySymbol(currencyCode); + catalog.put(<SPAN class="code-quote">"Apple"</SPAN>, <SPAN class="code-keyword">new</SPAN> Item(<SPAN class="code-quote">"Apple"</SPAN>, currencySymbol + currencyConverter.getConversion(<SPAN class="code-quote">"USD"</SPAN>, currencyCode, 2.99))); + catalog.put(<SPAN class="code-quote">"Orange"</SPAN>, <SPAN class="code-keyword">new</SPAN> Item(<SPAN class="code-quote">"Orange"</SPAN>, currencySymbol + currencyConverter.getConversion(<SPAN class="code-quote">"USD"</SPAN>, currencyCode, 3.55))); + catalog.put(<SPAN class="code-quote">"Pear"</SPAN>, <SPAN class="code-keyword">new</SPAN> Item(<SPAN class="code-quote">"Pear"</SPAN>, currencySymbol + currencyConverter.getConversion(<SPAN class="code-quote">"USD"</SPAN>, currencyCode, 1.55))); + } + + <SPAN class="code-keyword">public</SPAN> Item[] getAll() { + Item[] catalogArray = <SPAN class="code-keyword">new</SPAN> Item[catalog.size()]; + catalog.values().toArray(catalogArray); + <SPAN class="code-keyword">return</SPAN> catalogArray; + } + + <SPAN class="code-keyword">public</SPAN> Item getItemById(<SPAN class="code-object">String</SPAN> itemId) { + <SPAN class="code-keyword">return</SPAN> catalog.get(itemId); + } + + <SPAN class="code-keyword">public</SPAN> void addItem(Item item) { + catalog.put(item.getName(),item); + } + + <SPAN class="code-keyword">public</SPAN> void updateItem(Item item) { + <SPAN class="code-keyword">if</SPAN>(catalog.get(item.getName()) != <SPAN class="code-keyword">null</SPAN>) { + catalog.put(item.getName(), item); + } + } + + <SPAN class="code-keyword">public</SPAN> void deleteItem(<SPAN class="code-object">String</SPAN> itemId) { + <SPAN class="code-keyword">if</SPAN>(catalog.get(itemId) != <SPAN class="code-keyword">null</SPAN>) { + catalog.remove(itemId); + } + } +} +</PRE> +</DIV></DIV> + + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java binding.rest'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingrmi.html b/site/trunk/site-publish/documentation-2x/sca-java-bindingrmi.html new file mode 100644 index 0000000000..db3ef6e3c6 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingrmi.html @@ -0,0 +1,181 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java binding.rmi : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java binding.rmi">SCA Java binding.rmi</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java binding.rmi">SCA Java binding.rmi</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java binding.rmi</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964949"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964949">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964949"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964949">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964949"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964949">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + +<H3><A name="SCAJavabinding.rmi-%3Cbinding.rmi%3E"></A><binding.rmi></H3> + +<P>Tuscany supports <A href="http://java.sun.com/javase/technologies/core/basic/rmi/index.jsp" class="external-link" rel="nofollow">Remote Method Invocation (RMI)</A> as a protocol for use with SCA services and references by using the <binding.rmi> SCDL extension. </P> + +<P>The RMI binding enables SCA components to use or be used by any other application which uses the standard Java RMI protocol. One use of this is to easily integrate the Tuscany runtime with existing Java applications which use RMI.</P> + +<P>This RMI binding SCDL has the following format:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <binding.rmi host=<SPAN class="code-quote">"" port="</SPAN><SPAN class="code-quote">" serviceName="</SPAN>"/> +</PRE> +</DIV></DIV> + + + + +<H4><A name="SCAJavabinding.rmi-Someexamples%3A"></A>Some examples:</H4> + +<P>This example composite shows how to make an SCA component available as an RMI service:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<composite xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.osoa.org/xmlns/sca/1.0"</SPAN> +</SPAN> xmlns:rmi=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/xmlns/binding/rmi/1.0-SNAPSHOT"</SPAN> +</SPAN> name=<SPAN class="code-quote">"HelloWorldRmiComposite"</SPAN>> + + <service name=<SPAN class="code-quote">"HelloWorldRmiService"</SPAN> promote=<SPAN class="code-quote">"HelloWorldServiceComponent"</SPAN>> + <<SPAN class="code-keyword">interface</SPAN>.java <SPAN class="code-keyword">interface</SPAN>=<SPAN class="code-quote">"helloworld.HelloWorldService"</SPAN>/> + <binding.rmi host=<SPAN class="code-quote">"localhost"</SPAN> port=<SPAN class="code-quote">"8099"</SPAN> serviceName=<SPAN class="code-quote">"HelloWorldRemoteService"</SPAN> /> + <reference target=<SPAN class="code-quote">"HelloWorldServiceComponent"</SPAN>>HelloWorldServiceComponent</reference> + </service> + + <component name=<SPAN class="code-quote">"HelloWorldServiceComponent"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"helloworld.HelloWorldImpl"</SPAN>/> + </component> + +</composite> +</PRE> +</DIV></DIV> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java binding.rmi'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-bindingws.html b/site/trunk/site-publish/documentation-2x/sca-java-bindingws.html new file mode 100644 index 0000000000..6f3d5a9946 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-bindingws.html @@ -0,0 +1,232 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java binding.ws : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java binding.ws">SCA Java binding.ws</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java binding.ws">SCA Java binding.ws</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java binding.ws</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964946"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964946">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964946"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964946">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964946"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964946">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + +<H3><A name="SCAJavabinding.ws-%3Cbinding.ws%3E"></A><binding.ws></H3> + +<P>The Tuscany Java SCA runtime supports Web services by using the <binding.ws> SCDL extension. New Web service endpoints can be provided by using <binding.ws> within a SCA <service>, existing Web services can be invoked by using <binding.ws> within a SCA <reference>.</P> + +<P>The Web service binding is one of the SCA extensions which is being formalized in the OASIS Open Composite Services Architecture with a published <A href="http://www.oasis-opencsa.org/sca-bindings" class="external-link" rel="nofollow">specifications </A> document.</P> + +<P>The Web service binding SCDL has the following format:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<binding.ws name=<SPAN class="code-quote">"NCName"</SPAN>? uri=<SPAN class="code-quote">"xs:anyURI"</SPAN>? wsdlElement=<SPAN class="code-quote">"xs:anyURI"</SPAN>? wsdli:wsdlLocation=<SPAN class="code-quote">"list of xs:anyURI"</SPAN>? > + <wsa:EndpointReference>...</wsa:EndpointReference>* +</binding.ws> +</PRE> +</DIV></DIV> + +<H4><A name="SCAJavabinding.ws-simpleuse"></A>simple use</H4> + +<P>All the attributes and elements of the Web service binding are optional, so the simplest way to use it is to use all the defaults:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"><binding.ws/></PRE> +</DIV></DIV> + +<P>With that simplest form the endpoint which will be used is derived from the names of the component and binding. This works well for services but for references its likely not what you want, so with references the following is a more useful simplest form:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"><binding.ws uri=<SPAN class="code-quote">"http:<SPAN class="code-comment">//someHost/someService"</SPAN>/></SPAN></PRE> +</DIV></DIV> + +<H4><A name="SCAJavabinding.ws-wsdlElement"></A>wsdlElement</H4> + +<P>The wsdlElement attribute indicates that a WSDL document exists which should be used and it points to the element within that WSDL to use. The value of the wsdlElement attribute can have one of the following four forms:</P> + +<OL> + <LI>Service:<BR> + <WSDL-namespace-URI>#wsdl.service(<service-name>)<BR> + In this case, all the endpoints in the WSDL Service that have equivalent PortTypes with the SCA service or reference must be available to the SCA service or reference.</LI> + <LI>Port (WSDL 1.1):<BR> + <WSDL-namespace-URI>#wsdl.port(<service-name>/<port-name>)<BR> + In this case, the identified port in the WSDL 1.1 Service must have an equivalent PortType with the SCA service or reference.</LI> + <LI>Endpoint (WSDL 2.0):<BR> + <WSDL-namespace-URI>#wsdl.endpoint(<service-name>/<endpoint-name>)<BR> + In this case, the identified endpoint in the WSDL 2.0 Service must have an equivalent PortType with the SCA service or reference.</LI> + <LI>Binding:<BR> + <WSDL-namespace-URI>#wsdl.binding(<binding-name>)<BR> + In this case, the identified WSDL binding must have an equivalent PortType with the SCA service or reference. In this case the endpoint address URI for the SCA service or reference must be provided via the URI attribute on the binding.</LI> +</OL> + + +<DIV class="panelMacro"><TABLE class="infoMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>What will the endpoint be?</B><BR>The actual Web service endpoint used depends on whether or not a WSDL port is being used, if the EndpointReference element or the uri attribute of the <binding.ws> has been specified, and the names of the component and binding. The actual alogrythim defined in the Web service binding specification is: + +<OL> + <LI>Either the URIs in the endpoint(s) of the referenced WSDL<BR> + or the URI specified by the wsa:Address element of the wsa:EndpointReference</LI> + <LI>The explicitly stated URI in the "uri" attribute of the binding.ws element, which may be relative,</LI> + <LI>The implicit URI as defined by the Assembly specification</LI> +</OL> + + +<P>The URI in the WSDL endpoint or in the wsa:Address of an EPR may be a relative URI, in which case it is relative to the URI defined in (2) or (3). The wsa:Address element can be the empty relative URI, in which case it uses the URI defined in (2) or (3) directly. This allows the EPR writer to specify reference parameters, metadata and other EPR contents while allowing the URI to be chosen by the deployer. To reference a WSDL document and also specify an EPR, the wsdlElement attribute must refer to a binding element in the WSDL and not an endpoint or service.</P></TD></TR></TABLE></DIV> + +<H4><A name="SCAJavabinding.ws-wsdlLocation"></A>wsdlLocation</H4> + +<P>The wsdlLocation attribute enables defining the location of the WSDL document to be used. Using wsdlLocation is not normally necessary as the Tuscany contrabution service will have discovered all the WSDL documents within a deployed SCA contrabution.</P> + +<H4><A name="SCAJavabinding.ws-wsa%3AEndpointReference"></A>wsa:EndpointReference</H4> + +<P>This attribute enables using a WS-Addressing EndpointReference that specifies the endpoint for the service or reference, or any WSA reference parameters, metadata and other EPR contents to be used.</P> + +<H3><A name="SCAJavabinding.ws-Someexamples%3A"></A>Some examples:</H3> + +<P>This example shows making a HelloWorld component available as a Web service endpoint. All the Web service binding defaults are used so the endpoint of the Web service will be <A href="http://localhost:8080/HelloWorldComponent" class="external-link" rel="nofollow">http://localhost:8080/HelloWorldComponent</A>.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<composite xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.osoa.org/xmlns/sca/1.0"</SPAN> +</SPAN> targetNamespace=<SPAN class="code-quote">"http:<SPAN class="code-comment">//helloworld"</SPAN> +</SPAN> xmlns:hw=<SPAN class="code-quote">"http:<SPAN class="code-comment">//helloworld"</SPAN> +</SPAN> name=<SPAN class="code-quote">"helloworldws"</SPAN>> + + <service name=<SPAN class="code-quote">"HelloWorldService"</SPAN> promote=<SPAN class="code-quote">"HelloWorldComponent"</SPAN>> + <<SPAN class="code-keyword">interface</SPAN>.java <SPAN class="code-keyword">interface</SPAN>=<SPAN class="code-quote">"helloworld.HelloWorldService"</SPAN> /> + <binding.ws /> + </service> + + <component name=<SPAN class="code-quote">"HelloWorldComponent"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"helloworld.HelloWorldImpl"</SPAN> /> + </component> + +</composite> +</PRE> +</DIV></DIV> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java binding.ws'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-definitionsxml.html b/site/trunk/site-publish/documentation-2x/sca-java-definitionsxml.html new file mode 100644 index 0000000000..6474cfcd7f --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-definitionsxml.html @@ -0,0 +1,271 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java definitions.xml : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java definitions.xml">SCA Java definitions.xml</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java definitions.xml">SCA Java definitions.xml</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java definitions.xml</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964975"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964975">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964975"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964975">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964975"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964975">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H1><A name="SCAJavadefinitions.xml-definitions.xml"></A>definitions.xml</H1> + +<P>Section 1.8 describes the definitions.xml file as holding all of the artifacts that are useful for configuring an SCA domain but that are not specific to a particular composite or component. It goes on to say that "All of these artifacts within and SCA Domain are defined in a global, SCA Domain-wide file named definitions.xml". To achieve our extensibility goals we, in Tuscany, consider the SCA Domain wide definitions.xml file to be a logical concept that is constructed at runtime from the contents of definitions.xml files provided in contributions and in Tuscany extensions. </P> + +<P>Each definitions.xml file may contain.</P> + +<UL> + <LI>Intents</LI> + <LI>Policy sets</LI> + <LI>Predefined binding specifications</LI> + <LI>Binding type descriptions</LI> + <LI>Implementation type descriptions</LI> +</UL> + + +<H2><A name="SCAJavadefinitions.xml-CompleteFeatures"></A>Complete Features</H2> + +<H3><A name="SCAJavadefinitions.xml-AddIntentsandPolicySetswithanExtension"></A>Add Intents and Policy Sets with an Extension</H3> + +<P>An extension, such as the modules/policy-security extension relies on some policy sets and intents being available in the SCA Domain. The definitions.xml is the place to define these and hence if you look in this extension module you will find the following. </P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<definitions xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.osoa.org/xmlns/sca/1.0"</SPAN> +</SPAN> targetNamespace=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.osoa.org/xmlns/sca/1.0"</SPAN> +</SPAN> xmlns:sca=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.osoa.org/xmlns/sca/1.0"</SPAN> +</SPAN> xmlns:tuscany=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/xmlns/sca/1.0"</SPAN>> +</SPAN> + <!-- POLICY SETS --> + <policySet name=<SPAN class="code-quote">"runAs"</SPAN> appliesTo=<SPAN class="code-quote">"sca:implementation.java"</SPAN>/> + <policySet name=<SPAN class="code-quote">"allow"</SPAN> appliesTo=<SPAN class="code-quote">"sca:implementation.java"</SPAN>/> + <policySet name=<SPAN class="code-quote">"rolesAllowed"</SPAN> appliesTo=<SPAN class="code-quote">"sca:implementation.java"</SPAN>/> + <policySet name=<SPAN class="code-quote">"permitAll"</SPAN> appliesTo=<SPAN class="code-quote">"sca:implementation.java"</SPAN>/> + <policySet name=<SPAN class="code-quote">"denyAll"</SPAN> appliesTo=<SPAN class="code-quote">"sca:implementation.java"</SPAN>/> + + <!-- Policy Intents Defined by the SCA <SPAN class="code-object">Runtime</SPAN> --> + <intent name=<SPAN class="code-quote">"authentication"</SPAN> + constrains=<SPAN class="code-quote">"sca:binding"</SPAN>> + <description> + Specifying <SPAN class="code-keyword">this</SPAN> intent on references requires necessary authentication information + to be sent along with outgoing messages. Specifying <SPAN class="code-keyword">this</SPAN> intent on service requires + incoming messages to be authenticated + </description> + </intent> + + <intent name=<SPAN class="code-quote">"confidentiality"</SPAN> + constrains=<SPAN class="code-quote">"sca:binding"</SPAN>> + <description> + Specifying <SPAN class="code-keyword">this</SPAN> intent requires message exchanged to be encrypted + </description> + </intent> + + <intent name=<SPAN class="code-quote">"integrity"</SPAN> + constrains=<SPAN class="code-quote">"sca:binding"</SPAN>> + <description> + Specifying <SPAN class="code-keyword">this</SPAN> intent requires message exchanged to be signed + </description> + </intent> +</definitions> +</PRE> +</DIV></DIV> + +<P>When this module is loaded at runtime the contents of this file are made generally available and hence in you composite you can use statements such at. </P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + +<component name=<SPAN class="code-quote">"CalculatorServiceComponent"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"calculator.CalculatorServiceImpl"</SPAN>/> + <reference name=<SPAN class="code-quote">"addService"</SPAN> > + <<SPAN class="code-keyword">interface</SPAN>.java <SPAN class="code-keyword">interface</SPAN>=<SPAN class="code-quote">"calculator.AddService"</SPAN> /> + <binding.ws uri=<SPAN class="code-quote">"http:<SPAN class="code-comment">//localhost:8080/sample-calculator-ws-secure-webapp/AddServiceComponent"</SPAN> +</SPAN> requires=<SPAN class="code-quote">"authentication"</SPAN> /> + </reference> +</component> +</PRE> +</DIV></DIV> + +<P>Where <TT>requires="authentication"</TT> refers to <TT>intent name="authentication"</TT> which is now available as an SCA Domain level definition.</P> + +<H2><A name="SCAJavadefinitions.xml-TODOFeatures"></A>TODO Features</H2> + +<H3><A name="SCAJavadefinitions.xml-AddIntentsandPolicySetswithaContribution"></A>Add Intents and Policy Sets with a Contribution</H3> + +<P>If contributionA provides a file such as:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<sca:definitions xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.osoa.org/xmlns/sca/1.0"</SPAN> +</SPAN> targetNamespace=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/xmlns/sca/1.0"</SPAN> +</SPAN> xmlns:sca=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.osoa.org/xmlns/sca/1.0"</SPAN> +</SPAN> xmlns:tuscany=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/xmlns/sca/1.0"</SPAN>> +</SPAN> +<sca:intent name=<SPAN class="code-quote">"specialAuthentication"</SPAN> + constrains=<SPAN class="code-quote">"sca:binding.ws"</SPAN>> + <description> + Communitcation thro <SPAN class="code-keyword">this</SPAN> binding required Authentication. + </description> +</sca:intent> + +</sca:definitions> +</PRE> +</DIV></DIV> + +<P>and ContributionB provides a file such as:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<sca:policySet name=<SPAN class="code-quote">"specialAuthenticationPolicy"</SPAN> + provides=<SPAN class="code-quote">"tuscany:wsAuthentication"</SPAN> + appliesTo=<SPAN class="code-quote">"<SPAN class="code-comment">//sca:binding.ws"</SPAN>> +</SPAN> <tuscany:wsConfigParam> + <parameter name=<SPAN class="code-quote">"OutflowSecurity"</SPAN>> + <action> + <items>UsernameToken</items> + <user>TuscanyWsUser</user> + <passwordCallbackClass>my.PWCBHandler</passwordCallbackClass>" + <passwordType>PasswordText</passwordType> + </action> + </parameter> + </tuscany:wsConfigParam> +</sca:policySet> +</PRE> +</DIV></DIV> + +<P>Then both the itent and the policySet should be available in the logical SCA Domain-wide definitions.xml and the policySet "specialAuthenticationPolicy" should successfully find the intent "tuscany:wsAuthentication". Composite files contributed to the domain will successfully be able to reference both the intent and the policy set. </P> + +<P>See: </P> + +<P><A href="https://issues.apache.org/jira/browse/TUSCANY-2499" class="external-link" rel="nofollow">https://issues.apache.org/jira/browse/TUSCANY-2499</A><BR> +<A href="http://www.mail-archive.com/dev@tuscany.apache.org/msg01077.html" class="external-link" rel="nofollow">http://www.mail-archive.com/dev%40tuscany.apache.org/msg01077.html</A></P> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java definitions.xml'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/Contribution-ClassLoading.doc b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/Contribution-ClassLoading.doc new file mode 100644 index 0000000000..6787543f14 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/Contribution-ClassLoading.doc @@ -0,0 +1,508 @@ +{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch11\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1041{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
+{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}
+{\f11\fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt ?l?r ??\'81\'66c};}{\f36\fmodern\fcharset128\fprq1{\*\panose 00000000000000000000}@MS Mincho;}{\f37\froman\fcharset238\fprq2 Times New Roman CE;}
+{\f38\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f40\froman\fcharset161\fprq2 Times New Roman Greek;}{\f41\froman\fcharset162\fprq2 Times New Roman Tur;}{\f42\froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\f43\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f44\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f45\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f47\fswiss\fcharset238\fprq2 Arial CE;}
+{\f48\fswiss\fcharset204\fprq2 Arial Cyr;}{\f50\fswiss\fcharset161\fprq2 Arial Greek;}{\f51\fswiss\fcharset162\fprq2 Arial Tur;}{\f52\fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f53\fswiss\fcharset178\fprq2 Arial (Arabic);}
+{\f54\fswiss\fcharset186\fprq2 Arial Baltic;}{\f55\fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f57\fmodern\fcharset238\fprq1 Courier New CE;}{\f58\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f60\fmodern\fcharset161\fprq1 Courier New Greek;}
+{\f61\fmodern\fcharset162\fprq1 Courier New Tur;}{\f62\fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f63\fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f64\fmodern\fcharset186\fprq1 Courier New Baltic;}
+{\f65\fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f149\fmodern\fcharset0\fprq1 MS Mincho Western{\*\falt ?l?r ??\'81\'66c};}{\f147\fmodern\fcharset238\fprq1 MS Mincho CE{\*\falt ?l?r ??\'81\'66c};}
+{\f148\fmodern\fcharset204\fprq1 MS Mincho Cyr{\*\falt ?l?r ??\'81\'66c};}{\f150\fmodern\fcharset161\fprq1 MS Mincho Greek{\*\falt ?l?r ??\'81\'66c};}{\f151\fmodern\fcharset162\fprq1 MS Mincho Tur{\*\falt ?l?r ??\'81\'66c};}
+{\f154\fmodern\fcharset186\fprq1 MS Mincho Baltic{\*\falt ?l?r ??\'81\'66c};}{\f399\fmodern\fcharset0\fprq1 @MS Mincho Western;}{\f397\fmodern\fcharset238\fprq1 @MS Mincho CE;}{\f398\fmodern\fcharset204\fprq1 @MS Mincho Cyr;}
+{\f400\fmodern\fcharset161\fprq1 @MS Mincho Greek;}{\f401\fmodern\fcharset162\fprq1 @MS Mincho Tur;}{\f404\fmodern\fcharset186\fprq1 @MS Mincho Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
+\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\f0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 \snext0 Normal;}{\*\cs10 \additive
+\ssemihidden Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\loch\f0\hich\af0\dbch\af11\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{\*\cs15 \additive \ul\cf2
+\sbasedon10 \styrsid10050314 Hyperlink;}{\s16\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\f0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041
+\sbasedon0 \snext16 \styrsid10161153 Normal (Web);}}{\*\listtable{\list\listtemplateid1580348194\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid1261573102
+\'01\u-4051 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698691
+\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698693
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698689
+\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698691
+\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698693
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698689
+\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698691
+\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698693
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid314066308}{\list\listtemplateid-523760100\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace360\levelindent0{\leveltext\leveltemplateid546055038\'01\u-3913 ?;}{\levelnumbers;}\f3\cf0\fbias0\hres0\chhres0 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li1800\jclisttab\tx1800\lin1800 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li3960\jclisttab\tx3960\lin3960 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li4680\jclisttab\tx4680\lin4680 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5400\jclisttab\tx5400\lin5400 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6120\jclisttab\tx6120\lin6120 }{\listname ;}\listid715159185}{\list\listtemplateid-1763118866{\listlevel\levelnfc23
+\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fs20\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fs20\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0
+\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0
+{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid731079578}{\list\listtemplateid1667669574\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace360\levelindent0{\leveltext\leveltemplateid546055038\'01\u-3913 ?;}{\levelnumbers;}\f3\cf0\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid891424629}{\list\listtemplateid-2081029930{\listlevel\levelnfc23
+\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fs20\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fs20\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0
+\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0
+{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid891693059}{\list\listtemplateid292338260{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
+\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fs20\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'01o;}{\levelnumbers;}\f2\fs20\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fs20\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fs20\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fs20\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1116608126}{\list\listtemplateid-1536026092\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0
+{\leveltext\leveltemplateid546055038\'01\u-3913 ?;}{\levelnumbers;}\f3\cf0\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
+{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
+\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
+\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
+\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
+\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
+\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
+\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
+\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1181050274}{\list\listtemplateid1701054940{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace360\levelindent0{\leveltext\'01\u-4051 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0
+{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880
+\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel
+\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0
+\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace360\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1313297007}{\list\listtemplateid1701054940\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace360\levelindent0{\leveltext\leveltemplateid1261573102\'01\u-4051 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1378965984}{\list\listtemplateid-2073944638{\listlevel\levelnfc23
+\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fs20\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fs20\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0
+\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0
+{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1460950139}{\list\listtemplateid-1418542954{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fs20\fbias0\hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'01o;}{\levelnumbers;}\f2\fs20\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fs20\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fs20\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fs20\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fs20\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fs20\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1871453387}}{\*\listoverridetable{\listoverride\listid891693059\listoverridecount0\ls1}{\listoverride\listid731079578\listoverridecount0\ls2}
+{\listoverride\listid1116608126\listoverridecount0\ls3}{\listoverride\listid1871453387\listoverridecount0\ls4}{\listoverride\listid1460950139\listoverridecount0\ls5}{\listoverride\listid1378965984\listoverridecount0\ls6}{\listoverride\listid1313297007
+\listoverridecount0\ls7}{\listoverride\listid1181050274\listoverridecount0\ls8}{\listoverride\listid891424629\listoverridecount0\ls9}{\listoverride\listid715159185\listoverridecount0\ls10}{\listoverride\listid314066308\listoverridecount0\ls11}}{\*\pgptbl
+{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}}{\*\rsidtbl \rsid28757\rsid329786\rsid485903\rsid539137\rsid548600\rsid548764\rsid664037\rsid672375\rsid723666\rsid861443\rsid861593\rsid1127291\rsid1316508\rsid1455334\rsid1466653
+\rsid1575154\rsid1705583\rsid1932963\rsid2051197\rsid2174974\rsid2235070\rsid2296172\rsid2313813\rsid2439906\rsid2441954\rsid2501940\rsid2629112\rsid2635705\rsid2713663\rsid2758865\rsid2769575\rsid2780748\rsid2822041\rsid2843319\rsid2888904\rsid2960142
+\rsid3038408\rsid3107992\rsid3482368\rsid3826780\rsid3877851\rsid3891453\rsid4027380\rsid4073862\rsid4260013\rsid4344555\rsid4391115\rsid4462937\rsid4608592\rsid4618129\rsid4720541\rsid4731966\rsid4734635\rsid4738754\rsid4999167\rsid5056151\rsid5243868
+\rsid5314898\rsid5389511\rsid5452951\rsid5468238\rsid5580748\rsid5703112\rsid5724989\rsid5794882\rsid5854839\rsid5917115\rsid5927568\rsid5971993\rsid6121198\rsid6189819\rsid6357399\rsid6448318\rsid6517470\rsid6585698\rsid6643333\rsid6911675\rsid6973915
+\rsid7020819\rsid7030027\rsid7031409\rsid7109352\rsid7153642\rsid7209946\rsid7217972\rsid7348812\rsid7434793\rsid7437856\rsid7549295\rsid7741077\rsid7955637\rsid8015483\rsid8067903\rsid8069675\rsid8078383\rsid8091336\rsid8132030\rsid8215713\rsid8396446
+\rsid8475943\rsid8543011\rsid8733147\rsid8748637\rsid8995845\rsid9051788\rsid9177086\rsid9188473\rsid9199563\rsid9270497\rsid9306821\rsid9372065\rsid9399793\rsid9401222\rsid9468978\rsid9469928\rsid9519892\rsid9532276\rsid9635826\rsid9665659\rsid9708269
+\rsid9774965\rsid9796414\rsid9915706\rsid10050314\rsid10161153\rsid10355341\rsid10435185\rsid10494592\rsid10582935\rsid10637518\rsid10701367\rsid10754746\rsid10755770\rsid10955544\rsid10973461\rsid11015475\rsid11163266\rsid11172638\rsid11288764
+\rsid11304604\rsid11425526\rsid11470771\rsid11566354\rsid11946342\rsid11952921\rsid12022509\rsid12063004\rsid12075301\rsid12090221\rsid12210718\rsid12280750\rsid12324527\rsid12333177\rsid12468982\rsid12548043\rsid12792170\rsid12859467\rsid12918761
+\rsid13198821\rsid13325517\rsid13333265\rsid13396628\rsid13517596\rsid13593376\rsid13701908\rsid13713842\rsid13830030\rsid13983957\rsid13991654\rsid14158236\rsid14169179\rsid14180275\rsid14434127\rsid14439776\rsid14830590\rsid14879766\rsid14892148
+\rsid14952634\rsid14952839\rsid14972237\rsid15012329\rsid15290583\rsid15420045\rsid15475977\rsid15559859\rsid15622462\rsid15669620\rsid15809868\rsid15889451\rsid15947457\rsid15957589\rsid16001292\rsid16266353\rsid16278179\rsid16387045\rsid16453325
+\rsid16454606\rsid16464510\rsid16519714\rsid16523468\rsid16589844\rsid16650932\rsid16670320\rsid16719075\rsid16724526}{\*\generator Microsoft Word 10.0.6854;}{\info{\operator Ramkumar Ramalingam}{\creatim\yr2009\mo12\dy17\hr17\min8}
+{\revtim\yr2010\mo1\dy5\hr16\min25}{\version199}{\edmins585}{\nofpages3}{\nofwords812}{\nofchars4629}{\nofcharsws5431}{\vern16393}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 urn:schemas-microsoft-com:office:smarttags}}
+\paperw12240\paperh15840\margl1800\margr1800\margt1440\margb1440\gutter0 \widowctrl\ftnbj\aenddoc\grfdocevents0\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3
+\jcompress\viewkind1\viewscale115\nolnhtadjtbl\rsidroot10050314 \fet0{\*\wgrffmtfilter 013f}\sectd \linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}
+{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}
+{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain
+\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid8067903 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\f1\insrsid8067903\charrsid11566354 \hich\af1\dbch\af11\loch\f1 SCA Contribution Framework:
+
+\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\lang1024\langfe1024\noproof\insrsid8067903
+\par }{\lang1024\langfe1024\noproof\insrsid28757 {\shpgrp{\*\shpinst\shpleft21\shptop64\shpright8181\shpbottom9424\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr3\shpwrk1\shpfblwtxt0\shpz0\shplid1026
+{\sp{\sn groupLeft}{\sv 1821}}{\sp{\sn groupTop}{\sv 2056}}{\sp{\sn groupRight}{\sv 9981}}{\sp{\sn groupBottom}{\sv 11416}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}
+{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shpgrp{\*\shpinst\shplid1027{\sp{\sn groupLeft}{\sv 1941}}{\sp{\sn groupTop}{\sv 6184}}{\sp{\sn groupRight}{\sv 5661}}
+{\sp{\sn groupBottom}{\sv 8584}}{\sp{\sn relLeft}{\sv 1821}}{\sp{\sn relTop}{\sv 2104}}{\sp{\sn relRight}{\sv 5541}}{\sp{\sn relBottom}{\sv 4504}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn posh}{\sv 0}}{\sp{\sn posv}{\sv 0}}
+{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shp{\*\shpinst\shplid1028{\sp{\sn relLeft}{\sv 1941}}{\sp{\sn relTop}{\sv 6184}}{\sp{\sn relRight}{\sv 5661}}
+{\sp{\sn relBottom}{\sv 8584}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 65536}}{\sp{\sn hspNext}{\sv 1028}}
+{\sp{\sn lidRegroup}{\sv 2}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
+\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid2822041\charrsid15290583 \hich\af0\dbch\af11\loch\f0 ContributionScannerExtensionPoint
+\par }}}}{\shp{\*\shpinst\shplid1029{\sp{\sn relLeft}{\sv 2065}}{\sp{\sn relTop}{\sv 6564}}{\sp{\sn relRight}{\sv 5417}}{\sp{\sn relBottom}{\sv 6944}}{\sp{\sn fRelFlipH}{\sv 0}}
+{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 131072}}{\sp{\sn hspNext}{\sv 1029}}{\sp{\sn lidRegroup}{\sv 2}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2822041\charrsid12859467 \hich\af0\dbch\af11\loch\f0
+Jar Contribution Scanner
+\par }}}}{\shp{\*\shpinst\shplid1030{\sp{\sn relLeft}{\sv 2065}}{\sp{\sn relTop}{\sv 7039}}{\sp{\sn relRight}{\sv 5417}}{\sp{\sn relBottom}{\sv 7419}}{\sp{\sn fRelFlipH}{\sv 0}}
+{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 196608}}{\sp{\sn hspNext}{\sv 1030}}{\sp{\sn lidRegroup}{\sv 2}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2822041\charrsid12859467 \hich\af0\dbch\af11\loch\f0
+Directory Contribution Scanner
+\par }}}}{\shp{\*\shpinst\shplid1031{\sp{\sn relLeft}{\sv 2065}}{\sp{\sn relTop}{\sv 7514}}{\sp{\sn relRight}{\sv 5417}}{\sp{\sn relBottom}{\sv 7894}}{\sp{\sn fRelFlipH}{\sv 0}}
+{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 262144}}{\sp{\sn hspNext}{\sv 1031}}{\sp{\sn lidRegroup}{\sv 2}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2822041\charrsid12859467 \hich\af0\dbch\af11\loch\f0
+OSGiBundle Contribution Scanner
+\par }}}}{\shp{\*\shpinst\shplid1032{\sp{\sn relLeft}{\sv 2065}}{\sp{\sn relTop}{\sv 7989}}{\sp{\sn relRight}{\sv 5417}}{\sp{\sn relBottom}{\sv 8369}}{\sp{\sn fRelFlipH}{\sv 0}}
+{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 327680}}{\sp{\sn hspNext}{\sv 1032}}{\sp{\sn lidRegroup}{\sv 2}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2822041\charrsid12859467 \loch\af0\dbch\af11\hich\f0 \'85\'85\'85\'85
+\'85
+\par }}}}}}{\shpgrp{\*\shpinst\shplid1033{\sp{\sn groupLeft}{\sv 6261}}{\sp{\sn groupTop}{\sv 2056}}{\sp{\sn groupRight}{\sv 9981}}{\sp{\sn groupBottom}{\sv 4624}}{\sp{\sn relLeft}{\sv 6261}}
+{\sp{\sn relTop}{\sv 2056}}{\sp{\sn relRight}{\sv 9981}}{\sp{\sn relBottom}{\sv 4624}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}
+{\sp{\sn fLayoutInCell}{\sv 1}}{\shp{\*\shpinst\shplid1034{\sp{\sn relLeft}{\sv 6261}}{\sp{\sn relTop}{\sv 2056}}{\sp{\sn relRight}{\sv 9981}}{\sp{\sn relBottom}{\sv 4624}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}
+{\sp{\sn lTxid}{\sv 393216}}{\sp{\sn hspNext}{\sv 1034}}{\sp{\sn lidRegroup}{\sv 6}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
+\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid14879766\charrsid4731966 \hich\af0\dbch\af11\loch\f0 Artifact}{\b\fs20\insrsid539137\charrsid4731966 \hich\af0\dbch\af11\loch\f0 Processor}{
+\b\fs20\insrsid14879766\charrsid4731966 \hich\af0\dbch\af11\loch\f0 ExtentionPoint}{\b\fs20\insrsid539137\charrsid4731966
+\par }{\insrsid14879766
+\par }}}}{\shp{\*\shpinst\shplid1035{\sp{\sn relLeft}{\sv 6381}}{\sp{\sn relTop}{\sv 2536}}{\sp{\sn relRight}{\sv 9741}}{\sp{\sn relBottom}{\sv 2896}}{\sp{\sn fRelFlipH}{\sv 0}}
+{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 458752}}{\sp{\sn hspNext}{\sv 1035}}{\sp{\sn lidRegroup}{\sv 6}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid8015483 \hich\af0\dbch\af11\loch\f0 XSD}{\fs20\insrsid8132030
+\hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid8015483 \hich\af0\dbch\af11\loch\f0 Document}{\fs20\insrsid6911675\charrsid8015483 \hich\af0\dbch\af11\loch\f0 Processor}{\fs20\insrsid12468982\charrsid8015483
+\par }}}}{\shp{\*\shpinst\shplid1036{\sp{\sn relLeft}{\sv 6381}}{\sp{\sn relTop}{\sv 3016}}{\sp{\sn relRight}{\sv 9741}}{\sp{\sn relBottom}{\sv 3376}}{\sp{\sn fRelFlipH}{\sv 0}}
+{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 524288}}{\sp{\sn hspNext}{\sv 1036}}{\sp{\sn lidRegroup}{\sv 6}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8015483 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid8015483 \hich\af0\dbch\af11\loch\f0 WSDL}{
+\fs20\insrsid8132030 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid8015483\charrsid8015483 \hich\af0\dbch\af11\loch\f0 DocumentProcessor
+\par }\pard \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\insrsid12468982
+\par }}}}{\shp{\*\shpinst\shplid1037{\sp{\sn relLeft}{\sv 6381}}{\sp{\sn relTop}{\sv 3496}}{\sp{\sn relRight}{\sv 9741}}{\sp{\sn relBottom}{\sv 3904}}{\sp{\sn fRelFlipH}{\sv 0}}
+{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 589824}}{\sp{\sn hspNext}{\sv 1037}}{\sp{\sn lidRegroup}{\sv 6}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4999167 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid4999167\charrsid4999167 \hich\af0\dbch\af11\loch\f0
+Composite}{\fs20\insrsid4999167 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid4999167\charrsid4999167 \hich\af0\dbch\af11\loch\f0 DocumentProcessor}{\fs20\insrsid12468982\charrsid4999167
+\par }}}}{\shp{\*\shpinst\shplid1038{\sp{\sn relLeft}{\sv 6381}}{\sp{\sn relTop}{\sv 4024}}{\sp{\sn relRight}{\sv 9741}}{\sp{\sn relBottom}{\sv 4384}}{\sp{\sn fRelFlipH}{\sv 0}}
+{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 655360}}{\sp{\sn hspNext}{\sv 1038}}{\sp{\sn lidRegroup}{\sv 6}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid6585698 \hich\af0\dbch\af11\loch\f0 Java Import/Export Processor}{
+\fs20\insrsid6585698\charrsid13198821
+\par }}}}}}{\shpgrp{\*\shpinst\shplid1039{\sp{\sn groupLeft}{\sv 1941}}{\sp{\sn groupTop}{\sv 9414}}{\sp{\sn groupRight}{\sv 3861}}{\sp{\sn groupBottom}{\sv 11934}}{\sp{\sn relLeft}{\sv 1821}}
+{\sp{\sn relTop}{\sv 5104}}{\sp{\sn relRight}{\sv 3741}}{\sp{\sn relBottom}{\sv 7624}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn posh}{\sv 0}}
+{\sp{\sn posv}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shp{\*\shpinst\shplid1040{\sp{\sn relLeft}{\sv 1941}}{\sp{\sn relTop}{\sv 9414}}{\sp{\sn relRight}{\sv 3861}}
+{\sp{\sn relBottom}{\sv 11934}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 720896}}{\sp{\sn hspNext}{\sv 1040}}
+{\sp{\sn lidRegroup}{\sv 3}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
+\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid5468238\charrsid4731966 \hich\af0\dbch\af11\loch\f0 Artifact}{\b\fs20\insrsid5468238 \hich\af0\dbch\af11\loch\f0 s}{\b\fs20\insrsid5468238\charrsid4731966
+
+\par }{\insrsid5468238
+\par }}}}{\shp{\*\shpinst\shplid1041{\sp{\sn relLeft}{\sv 2061}}{\sp{\sn relTop}{\sv 9894}}{\sp{\sn relRight}{\sv 3621}}{\sp{\sn relBottom}{\sv 10254}}{\sp{\sn fRelFlipH}{\sv 0}}
+{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 786432}}{\sp{\sn hspNext}{\sv 1041}}{\sp{\sn lidRegroup}{\sv 3}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5468238 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid5468238\charrsid5468238 \hich\af0\dbch\af11\loch\f0 XSD
+
+\par }}}}{\shp{\*\shpinst\shplid1042{\sp{\sn relLeft}{\sv 2061}}{\sp{\sn relTop}{\sv 10374}}{\sp{\sn relRight}{\sv 3621}}{\sp{\sn relBottom}{\sv 10734}}{\sp{\sn fRelFlipH}{\sv 0}}
+{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 851968}}{\sp{\sn hspNext}{\sv 1042}}{\sp{\sn lidRegroup}{\sv 3}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid5468238 \hich\af0\dbch\af11\loch\f0 WSDL}{
+\fs20\insrsid5468238\charrsid5468238
+\par }}}}{\shp{\*\shpinst\shplid1043{\sp{\sn relLeft}{\sv 2061}}{\sp{\sn relTop}{\sv 10854}}{\sp{\sn relRight}{\sv 3621}}{\sp{\sn relBottom}{\sv 11214}}{\sp{\sn fRelFlipH}{\sv 0}}
+{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 917504}}{\sp{\sn hspNext}{\sv 1043}}{\sp{\sn lidRegroup}{\sv 3}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5468238 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid5468238\charrsid5468238 \hich\af0\dbch\af11\loch\f0
+SCDL
+\par }}}}{\shp{\*\shpinst\shplid1044{\sp{\sn relLeft}{\sv 2061}}{\sp{\sn relTop}{\sv 11334}}{\sp{\sn relRight}{\sv 3621}}{\sp{\sn relBottom}{\sv 11694}}{\sp{\sn fRelFlipH}{\sv 0}}
+{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 983040}}{\sp{\sn hspNext}{\sv 1044}}{\sp{\sn lidRegroup}{\sv 3}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid5468238 \hich\af0\dbch\af11\loch\f0 Java Classes}{
+\fs20\insrsid5468238\charrsid13198821
+\par }}}}}}{\shpgrp{\*\shpinst\shplid1045{\sp{\sn groupLeft}{\sv 6261}}{\sp{\sn groupTop}{\sv 5776}}{\sp{\sn groupRight}{\sv 9861}}{\sp{\sn groupBottom}{\sv 8296}}{\sp{\sn relLeft}{\sv 6381}}
+{\sp{\sn relTop}{\sv 5464}}{\sp{\sn relRight}{\sv 9981}}{\sp{\sn relBottom}{\sv 7984}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn posh}{\sv 0}}
+{\sp{\sn posv}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shp{\*\shpinst\shplid1046{\sp{\sn relLeft}{\sv 6261}}{\sp{\sn relTop}{\sv 5776}}{\sp{\sn relRight}{\sv 9861}}
+{\sp{\sn relBottom}{\sv 8296}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 1048576}}{\sp{\sn hspNext}{\sv 1046}}
+{\sp{\sn lidRegroup}{\sv 7}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
+\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid2713663 \hich\af0\dbch\af11\loch\f0 Model Resolvers}{\b\fs20\insrsid2713663\charrsid4731966
+\par }{\insrsid2713663
+\par }}}}{\shp{\*\shpinst\shplid1047{\sp{\sn relLeft}{\sv 6464}}{\sp{\sn relTop}{\sv 6256}}{\sp{\sn relRight}{\sv 9621}}{\sp{\sn relBottom}{\sv 6616}}{\sp{\sn fRelFlipH}{\sv 0}}
+{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 1114112}}{\sp{\sn hspNext}{\sv 1047}}{\sp{\sn lidRegroup}{\sv 7}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5468238 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2713663\charrsid5468238 \hich\af0\dbch\af11\loch\f0 XSD
+}{\fs20\insrsid548600 \hich\af0\dbch\af11\loch\f0 ModelResolver}{\fs20\insrsid2713663\charrsid5468238
+\par }}}}{\shp{\*\shpinst\shplid1048{\sp{\sn relLeft}{\sv 6464}}{\sp{\sn relTop}{\sv 6736}}{\sp{\sn relRight}{\sv 9621}}{\sp{\sn relBottom}{\sv 7096}}{\sp{\sn fRelFlipH}{\sv 0}}
+{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 1179648}}{\sp{\sn hspNext}{\sv 1048}}{\sp{\sn lidRegroup}{\sv 7}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2713663 \hich\af0\dbch\af11\loch\f0 WSDL}{\fs20\insrsid548600
+\hich\af0\dbch\af11\loch\f0 ModelResolver}{\fs20\insrsid2713663\charrsid5468238
+\par }}}}{\shp{\*\shpinst\shplid1049{\sp{\sn relLeft}{\sv 6464}}{\sp{\sn relTop}{\sv 7216}}{\sp{\sn relRight}{\sv 9621}}{\sp{\sn relBottom}{\sv 7576}}{\sp{\sn fRelFlipH}{\sv 0}}
+{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 1245184}}{\sp{\sn hspNext}{\sv 1049}}{\sp{\sn lidRegroup}{\sv 7}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5468238 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid4999167\charrsid4999167 \hich\af0\dbch\af11\loch\f0
+Composite}{\fs20\insrsid15669620 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid4999167\charrsid4999167 \hich\af0\dbch\af11\loch\f0 ModelResolver}{\fs20\insrsid2713663\charrsid4999167
+\par }}}}{\shp{\*\shpinst\shplid1050{\sp{\sn relLeft}{\sv 6464}}{\sp{\sn relTop}{\sv 7696}}{\sp{\sn relRight}{\sv 9621}}{\sp{\sn relBottom}{\sv 8056}}{\sp{\sn fRelFlipH}{\sv 0}}
+{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 1310720}}{\sp{\sn hspNext}{\sv 1050}}{\sp{\sn lidRegroup}{\sv 7}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2713663 \hich\af0\dbch\af11\loch\f0 Java }{\fs20\insrsid15809868
+\hich\af0\dbch\af11\loch\f0 Import/Export ModelResolver}{\fs20\insrsid2713663\charrsid13198821
+\par }}}}}}{\shp{\*\shpinst\shplid1051{\sp{\sn relLeft}{\sv 2901}}{\sp{\sn relTop}{\sv 4504}}{\sp{\sn relRight}{\sv 4341}}{\sp{\sn relBottom}{\sv 5104}}{\sp{\sn fRelFlipH}{\sv 1}}
+{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 20}}{\sp{\sn shapePath}{\sv 4}}{\sp{\sn fFillOK}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn lineEndArrowhead}{\sv 1}}
+{\sp{\sn fArrowheadsOK}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}}{\shp{\*\shpinst\shplid1052{\sp{\sn relLeft}{\sv 3741}}{\sp{\sn relTop}{\sv 4264}}
+{\sp{\sn relRight}{\sv 6261}}{\sp{\sn relBottom}{\sv 6304}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 1}}{\sp{\sn shapeType}{\sv 20}}{\sp{\sn shapePath}{\sv 4}}{\sp{\sn fFillOK}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn lineEndArrowhead}{\sv 1}}
+{\sp{\sn fArrowheadsOK}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}}{\shp{\*\shpinst\shplid1053{\sp{\sn relLeft}{\sv 8061}}{\sp{\sn relTop}{\sv 4624}}
+{\sp{\sn relRight}{\sv 8901}}{\sp{\sn relBottom}{\sv 5464}}{\sp{\sn fRelFlipH}{\sv 1}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 20}}{\sp{\sn shapePath}{\sv 4}}{\sp{\sn fFillOK}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn lineEndArrowhead}{\sv 1}}
+{\sp{\sn fArrowheadsOK}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}}{\shp{\*\shpinst\shplid1054{\sp{\sn relLeft}{\sv 7821}}{\sp{\sn relTop}{\sv 7984}}
+{\sp{\sn relRight}{\sv 8301}}{\sp{\sn relBottom}{\sv 8944}}{\sp{\sn fRelFlipH}{\sv 1}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 20}}{\sp{\sn shapePath}{\sv 4}}{\sp{\sn fFillOK}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn lineEndArrowhead}{\sv 1}}
+{\sp{\sn fArrowheadsOK}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}}{\shpgrp{\*\shpinst\shplid1055{\sp{\sn groupLeft}{\sv 4221}}{\sp{\sn groupTop}{\sv 8896}}
+{\sp{\sn groupRight}{\sv 8181}}{\sp{\sn groupBottom}{\sv 11416}}{\sp{\sn relLeft}{\sv 4221}}{\sp{\sn relTop}{\sv 8896}}{\sp{\sn relRight}{\sv 8181}}{\sp{\sn relBottom}{\sv 11416}}
+{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shp{\*\shpinst\shplid1056{\sp{\sn relLeft}{\sv 4221}}
+{\sp{\sn relTop}{\sv 8896}}{\sp{\sn relRight}{\sv 8181}}{\sp{\sn relBottom}{\sv 11416}}{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}
+{\sp{\sn lTxid}{\sv 1376256}}{\sp{\sn hspNext}{\sv 1056}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
+\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid5724989 \hich\af0\dbch\af11\loch\f0 Domain: sca://1.1/domain/default}{\b\fs20\insrsid12280750\charrsid4731966
+\par }{\insrsid12280750
+\par }}}}{\shp{\*\shpinst\shplid1057{\sp{\sn relLeft}{\sv 4401}}{\sp{\sn relTop}{\sv 9304}}{\sp{\sn relRight}{\sv 7821}}{\sp{\sn relBottom}{\sv 11224}}{\sp{\sn fRelFlipH}{\sv 0}}
+{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 1441792}}{\sp{\sn hspNext}{\sv 1057}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid10355341 \hich\af0\dbch\af11\loch\f0 s}{
+\fs20\insrsid10355341\charrsid10355341 \hich\af0\dbch\af11\loch\f0 ca://1.1/domain/default/contribution1}{\fs20\insrsid6973915\charrsid10355341
+\par }}}}{\shp{\*\shpinst\shplid1058{\sp{\sn relLeft}{\sv 4569}}{\sp{\sn relTop}{\sv 9712}}{\sp{\sn relRight}{\sv 7569}}{\sp{\sn relBottom}{\sv 11032}}{\sp{\sn fRelFlipH}{\sv 0}}
+{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 1507328}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt {\listtext\pard\plain\f3\fs20\insrsid3038408\charrsid3038408 \loch\af3\dbch\af11\hich\f3 \'b7\tab}
+\pard\plain \ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls10\adjustright\rin0\lin360\itap0\pararsid7348812 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {
+\fs20\insrsid3038408\charrsid3038408 \hich\af0\dbch\af11\loch\f0 Contribution }{\fs20\insrsid7348812\charrsid3038408 \hich\af0\dbch\af11\loch\f0 Deployable}{\fs20\insrsid7348812 \hich\af0\dbch\af11\loch\f0 s}{\fs20\insrsid10355341\charrsid3038408
+\par {\listtext\pard\plain\f3\fs20\insrsid3038408\charrsid3038408 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\fs20\insrsid3038408\charrsid3038408 \hich\af0\dbch\af11\loch\f0 Imports
+\par {\listtext\pard\plain\f3\fs20\insrsid3038408\charrsid3038408 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af0\dbch\af11\loch\f0 Exports}{\fs20\insrsid3038408
+\par {\listtext\pard\plain\f3\fs20\insrsid1127291 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\fs20\insrsid1127291 \loch\af0\dbch\af11\hich\f0 \'85\loch\f0 .}{\fs20\insrsid1127291\charrsid3038408
+\par }\pard \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\insrsid3038408
+\par }}}}}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8192\dpgroup\dpcount10\dpx21\dpy64\dpxsize8160\dpysize9360\dpgroup\dpcount6\dpx0\dpy48\dpxsize3720\dpysize2400\dptxbx\dptxlrtb{\dptxbxtext\pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid2822041\charrsid15290583 \hich\af0\dbch\af11\loch\f0
+ContributionScannerExtensionPoint
+\par }}\dpx0\dpy0\dpxsize3720\dpysize2400\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2822041\charrsid12859467 \hich\af0\dbch\af11\loch\f0
+Jar Contribution Scanner
+\par }}\dpx124\dpy380\dpxsize3352\dpysize380\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2822041\charrsid12859467 \hich\af0\dbch\af11\loch\f0
+Directory Contribution Scanner
+\par }}\dpx124\dpy855\dpxsize3352\dpysize380\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2822041\charrsid12859467 \hich\af0\dbch\af11\loch\f0
+OSGiBundle Contribution Scanner
+\par }}\dpx124\dpy1330\dpxsize3352\dpysize380\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2822041\charrsid12859467 \loch\af0\dbch\af11\hich\f0 \'85\'85\'85\'85
+\'85
+\par }}\dpx124\dpy1805\dpxsize3352\dpysize380\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0
+\dpendgroup\dpx0\dpy0\dpxsize0\dpysize0\dpgroup\dpcount6\dpx4440\dpy0\dpxsize3720\dpysize2568\dptxbx\dptxlrtb{\dptxbxtext\pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
+\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid14879766\charrsid4731966 \hich\af0\dbch\af11\loch\f0 Artifact}{\b\fs20\insrsid539137\charrsid4731966 \hich\af0\dbch\af11\loch\f0 Processor}{
+\b\fs20\insrsid14879766\charrsid4731966 \hich\af0\dbch\af11\loch\f0 ExtentionPoint}{\b\fs20\insrsid539137\charrsid4731966
+\par }{\insrsid14879766
+\par }}\dpx0\dpy0\dpxsize3720\dpysize2568\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid8015483 \hich\af0\dbch\af11\loch\f0 XSD}{\fs20\insrsid8132030
+\hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid8015483 \hich\af0\dbch\af11\loch\f0 Document}{\fs20\insrsid6911675\charrsid8015483 \hich\af0\dbch\af11\loch\f0 Processor}{\fs20\insrsid12468982\charrsid8015483
+\par }}\dpx120\dpy480\dpxsize3360\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8015483 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid8015483 \hich\af0\dbch\af11\loch\f0 WSDL}{
+\fs20\insrsid8132030 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid8015483\charrsid8015483 \hich\af0\dbch\af11\loch\f0 DocumentProcessor
+\par }\pard \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\insrsid12468982
+\par }}\dpx120\dpy960\dpxsize3360\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4999167 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid4999167\charrsid4999167 \hich\af0\dbch\af11\loch\f0
+Composite}{\fs20\insrsid4999167 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid4999167\charrsid4999167 \hich\af0\dbch\af11\loch\f0 DocumentProcessor}{\fs20\insrsid12468982\charrsid4999167
+\par }}\dpx120\dpy1440\dpxsize3360\dpysize408\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid6585698 \hich\af0\dbch\af11\loch\f0 Java Import/Export Processor}{
+\fs20\insrsid6585698\charrsid13198821
+\par }}\dpx120\dpy1968\dpxsize3360\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0
+\dpendgroup\dpx0\dpy0\dpxsize0\dpysize0\dpgroup\dpcount6\dpx0\dpy3048\dpxsize1920\dpysize2520\dptxbx\dptxlrtb{\dptxbxtext\pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
+\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid5468238\charrsid4731966 \hich\af0\dbch\af11\loch\f0 Artifact}{\b\fs20\insrsid5468238 \hich\af0\dbch\af11\loch\f0 s}{\b\fs20\insrsid5468238\charrsid4731966
+
+\par }{\insrsid5468238
+\par }}\dpx0\dpy0\dpxsize1920\dpysize2520\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5468238 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid5468238\charrsid5468238 \hich\af0\dbch\af11\loch\f0 XSD
+
+\par }}\dpx120\dpy480\dpxsize1560\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid5468238 \hich\af0\dbch\af11\loch\f0 WSDL}{
+\fs20\insrsid5468238\charrsid5468238
+\par }}\dpx120\dpy960\dpxsize1560\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5468238 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid5468238\charrsid5468238 \hich\af0\dbch\af11\loch\f0
+SCDL
+\par }}\dpx120\dpy1440\dpxsize1560\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid5468238 \hich\af0\dbch\af11\loch\f0 Java Classes}{
+\fs20\insrsid5468238\charrsid13198821
+\par }}\dpx120\dpy1920\dpxsize1560\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0
+\dpendgroup\dpx0\dpy0\dpxsize0\dpysize0\dpgroup\dpcount6\dpx4560\dpy3408\dpxsize3600\dpysize2520\dptxbx\dptxlrtb{\dptxbxtext\pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
+\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid2713663 \hich\af0\dbch\af11\loch\f0 Model Resolvers}{\b\fs20\insrsid2713663\charrsid4731966
+\par }{\insrsid2713663
+\par }}\dpx0\dpy0\dpxsize3600\dpysize2520\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5468238 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2713663\charrsid5468238 \hich\af0\dbch\af11\loch\f0 XSD
+}{\fs20\insrsid548600 \hich\af0\dbch\af11\loch\f0 ModelResolver}{\fs20\insrsid2713663\charrsid5468238
+\par }}\dpx203\dpy480\dpxsize3157\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2713663 \hich\af0\dbch\af11\loch\f0 WSDL}{\fs20\insrsid548600
+\hich\af0\dbch\af11\loch\f0 ModelResolver}{\fs20\insrsid2713663\charrsid5468238
+\par }}\dpx203\dpy960\dpxsize3157\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5468238 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid4999167\charrsid4999167 \hich\af0\dbch\af11\loch\f0
+Composite}{\fs20\insrsid15669620 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid4999167\charrsid4999167 \hich\af0\dbch\af11\loch\f0 ModelResolver}{\fs20\insrsid2713663\charrsid4999167
+\par }}\dpx203\dpy1440\dpxsize3157\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid2713663 \hich\af0\dbch\af11\loch\f0 Java }{\fs20\insrsid15809868
+\hich\af0\dbch\af11\loch\f0 Import/Export ModelResolver}{\fs20\insrsid2713663\charrsid13198821
+\par }}\dpx203\dpy1920\dpxsize3157\dpysize360\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0
+\dpendgroup\dpx0\dpy0\dpxsize0\dpysize0\dpline\dpptx1440\dppty0\dpptx0\dppty600\dpastartsol\dpastartw2\dpastartl2\dpx1080\dpy2448\dpxsize1440\dpysize600\dplinew15\dplinecor0\dplinecog0\dplinecob0
+\dpline\dpptx2520\dppty0\dpptx0\dppty2040\dpaendsol\dpaendw2\dpaendl2\dpx1920\dpy2208\dpxsize2520\dpysize2040\dplinew15\dplinecor0\dplinecog0\dplinecob0\dpline\dpptx840\dppty0\dpptx0\dppty840\dpastartsol\dpastartw2\dpastartl2
+\dpx6240\dpy2568\dpxsize840\dpysize840\dplinew15\dplinecor0\dplinecog0\dplinecob0\dpline\dpptx480\dppty0\dpptx0\dppty960\dpastartsol\dpastartw2\dpastartl2\dpx6000\dpy5928\dpxsize480\dpysize960\dplinew15\dplinecor0\dplinecog0\dplinecob0
+\dpgroup\dpcount4\dpx2400\dpy6840\dpxsize3960\dpysize2520\dptxbx\dptxlrtb{\dptxbxtext\pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
+\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\b\fs20\insrsid5724989 \hich\af0\dbch\af11\loch\f0 Domain: sca://1.1/domain/default}{\b\fs20\insrsid12280750\charrsid4731966
+\par }{\insrsid12280750
+\par }}\dpx0\dpy0\dpxsize3960\dpysize2520\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext\pard\plain
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid10355341 \hich\af0\dbch\af11\loch\f0 s}{
+\fs20\insrsid10355341\charrsid10355341 \hich\af0\dbch\af11\loch\f0 ca://1.1/domain/default/contribution1}{\fs20\insrsid6973915\charrsid10355341
+\par }}\dpx180\dpy408\dpxsize3420\dpysize1920\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0\dptxbx\dptxlrtb{\dptxbxtext{\listtext\pard\plain
+\f3\fs20\insrsid3038408\charrsid3038408 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\pard\plain \ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls10\adjustright\rin0\lin360\itap0\pararsid7348812
+\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\fs20\insrsid3038408\charrsid3038408 \hich\af0\dbch\af11\loch\f0 Contribution }{\fs20\insrsid7348812\charrsid3038408 \hich\af0\dbch\af11\loch\f0 Deployable}{
+\fs20\insrsid7348812 \hich\af0\dbch\af11\loch\f0 s}{\fs20\insrsid10355341\charrsid3038408
+\par {\listtext\pard\plain\f3\fs20\insrsid3038408\charrsid3038408 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\fs20\insrsid3038408\charrsid3038408 \hich\af0\dbch\af11\loch\f0 Imports
+\par {\listtext\pard\plain\f3\fs20\insrsid3038408\charrsid3038408 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af0\dbch\af11\loch\f0 Exports}{\fs20\insrsid3038408
+\par {\listtext\pard\plain\f3\fs20\insrsid1127291 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\fs20\insrsid1127291 \loch\af0\dbch\af11\hich\f0 \'85\loch\f0 .}{\fs20\insrsid1127291\charrsid3038408
+\par }\pard \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\insrsid3038408
+\par }}\dpx348\dpy816\dpxsize3000\dpysize1320\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0
+\dpendgroup\dpx0\dpy0\dpxsize0\dpysize0\dpendgroup\dpx0\dpy0\dpxsize0\dpysize0}}}}{\lang1024\langfe1024\noproof\insrsid10435185
+\par }{\f1\fs20\insrsid539137
+\par }{\f1\fs20\insrsid16724526
+\par }{\f1\fs20\insrsid2235070
+\par }{\f1\fs20\insrsid548764
+\par }{\f1\fs20\insrsid672375
+\par }{\f1\fs20\insrsid2235070
+\par }{\b\f1\fs20\insrsid2822041
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par }{\b\f1\fs20\insrsid539137
+\par
+\par
+\par }{\b\f1\fs20\insrsid5468238
+\par
+\par
+\par
+\par
+\par }{\b\f1\fs20\insrsid6121198
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par }{\b\f1\fs20\insrsid6448318
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par }\pard\plain \s16\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid10161153 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {
+\fs21\insrsid10161153\charrsid6517470 \hich\af0\dbch\af11\loch\f0 The {\*\xmlopen\xmlns1{\factoidname place}}{\*\xmlopen\xmlns1{\factoidname State}}\hich\af0\dbch\af11\loch\f0 Tuscany{\*\xmlclose}{\*\xmlclose}
+ runtime provides a framework to support SCA contributions. The framework can be extended against the following two extension points:
+\par }{\b\fs21\insrsid4462937\charrsid6517470 \hich\af0\dbch\af11\loch\f0 ContributionScannerExtensionPoin}{\b\fs21\insrsid10161153\charrsid6517470 \hich\af0\dbch\af11\loch\f0 t:}{\fs21\insrsid10161153\charrsid6517470 \hich\af0\dbch\af11\loch\f0
+ It accepts extensions that can handle\~different packaging\~format/archives s\hich\af0\dbch\af11\loch\f0 uch as a directory, a JAR, an OSGi bundle, an EAR, a WAR and a ZIP.\~
+\par }{\b\fs21\insrsid10161153\charrsid6517470 \hich\af0\dbch\af11\loch\f0 ArtifactProcessorExtensionPoint:}{\fs21\insrsid10161153\charrsid6517470 \hich\af0\dbch\af11\loch\f0 It accepts extensions that can handle specific types of artifacts}{
+\fs21\insrsid8475943\charrsid6517470 \hich\af0\dbch\af11\loch\f0 such as WSDL, XSD, composite and}{\fs21\insrsid16453325\charrsid6517470 \hich\af0\dbch\af11\loch\f0 J}{\fs21\insrsid8475943\charrsid6517470 \hich\af0\dbch\af11\loch\f0 ava classes.}{
+\fs21\insrsid10161153\charrsid6517470
+\par }\pard\plain \ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11172638 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {
+\fs21\insrsid11172638\charrsid6517470 \hich\af0\dbch\af11\loch\f0 Contribution Scanner scans the contributi\hich\af0\dbch\af11\loch\f0 on being installed and generates a list of artifacts that needs to be processed. Currently there is}{
+\fs21\insrsid11425526\charrsid6517470 \hich\af0\dbch\af11\loch\f0 support for folder/file system, JAR and OSGi bundle c}{\fs21\insrsid11172638\charrsid6517470 \hich\af0\dbch\af11\loch\f0
+ontribution packages. In order to be available to the contribution service, a }{\fs21\insrsid4027380\charrsid6517470 {\*\bkmkstart OLE_LINK1}\hich\af0\dbch\af11\loch\f0 contribution {\*\bkmkend OLE_LINK1}\hich\af0\dbch\af11\loch\f0 scanners}{
+\fs21\insrsid11172638\charrsid6517470 \hich\af0\dbch\af11\loch\f0 needs to register itself with the }{\fs21\insrsid4027380\charrsid6517470 \hich\af0\dbch\af11\loch\f0 contribution scanner}{\fs21\insrsid11172638\charrsid6517470
+\hich\af0\dbch\af11\loch\f0 extension.
+\par \hich\af0\dbch\af11\loch\f0 Artifact processors are used to process each artifact available on the contribution. In order to be available to the contribution service, a artifact process\hich\af0\dbch\af11\loch\f0
+or needs to register itself with the artifact processor extension. An artifact processor will be called for each artifact in two phases:
+\par {\listtext\pard\plain\f3\fs21\insrsid11172638\charrsid6517470 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard \ql \fi-360\li720\ri0\sb100\sa100\sbauto1\saauto1\widctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls8\adjustright\rin0\lin720\itap0\pararsid11566354 {\b\fs21\insrsid11172638\charrsid6517470 \hich\af0\dbch\af11\loch\f0 read }{\b\fs21\insrsid12792170\charrsid6517470 \hich\af0\dbch\af11\loch\f0 phase:}{
+\fs21\insrsid11172638\charrsid6517470 \hich\af0\dbch\af11\loch\f0 This is where you read an artifact (a document, an XML element, classes etc.), populate a model represent\hich\af0\dbch\af11\loch\f0
+ing the artifact and return it. The SCA contribution service calls ArtifactProcessor.read() on all artifacts that have an ArtifactProcessor registered for them. If your model points to other models, instead of trying to load these other models right away,
+\hich\af0\dbch\af11\loch\f0 \hich\af0\dbch\af11\loch\f0
+you should just keep the information representing that reference, which you'll turn into a pointer to the referenced model in the resolve() phase. Note that you don't necessarily need to fully read and populate your model at this point, you can choose to
+\hich\af0\dbch\af11\loch\f0 c\hich\af0\dbch\af11\loch\f0 omplete it later.
+\par {\listtext\pard\plain\f3\fs21\insrsid11172638\charrsid6517470 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\b\fs21\insrsid11172638\charrsid6517470 \hich\af0\dbch\af11\loch\f0 resolve }{\b\fs21\insrsid12792170\charrsid6517470 \hich\af0\dbch\af11\loch\f0 phase:}{
+\fs21\insrsid11172638\charrsid6517470 \hich\af0\dbch\af11\loch\f0
+ This phase gives you the opportunity to resolve references to other models (a WSDL, a class, another composite, a componentType). At this point, all models representing the artifacts in your SCA contribution have been rea\hich\af0\dbch\af11\loch\f0
+d, registered in the contribution's ArtifactResolver, and are ready to be resolved.
+\par }\pard \ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11172638 {\fs21\insrsid11172638\charrsid6517470 \hich\af0\dbch\af11\loch\f0
+All deployable composites should be now ready to get deployed to the SCA Domain
+\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid12324527 {\b\f1\fs22\insrsid16464510\charrsid2313813
+\par }{\b\fs22\insrsid2501940
+\par }{\b\fs22\insrsid5794882
+\par }{\b\fs22\insrsid12324527\charrsid2313813 \hich\af0\dbch\af11\loch\f0 Path Taken to }{\b\fs22\insrsid14830590\charrsid2313813 \hich\af0\dbch\af11\loch\f0 Read}{\b\fs22\insrsid12324527\charrsid2313813 \hich\af0\dbch\af11\loch\f0 the Contribution:}{
+\b\fs22\insrsid9665659\charrsid2313813 \hich\af0\dbch\af11\loch\f0 (2.x)}{\b\fs22\insrsid12324527\charrsid2313813
+\par }{\f1\fs20\insrsid12324527
+\par }{\b\fs20\insrsid12063004\charrsid2769575 \hich\af0\dbch\af11\loch\f0 Step 1:}{\fs20\insrsid12063004 \hich\af0\dbch\af11\loch\f0 Using the NodeContribution \hich\af0\dbch\af11\loch\f0 information, a new contribution}{\fs20\insrsid2769575
+\hich\af0\dbch\af11\loch\f0 (i.e., ContributionImpl)}{\fs20\insrsid12063004 \hich\af0\dbch\af11\loch\f0 is loaded }{\fs20\insrsid13325517 \hich\af0\dbch\af11\loch\f0 by }{\fs20\insrsid8995845 \hich\af0\dbch\af11\loch\f0 scanning the list }{
+\fs20\insrsid4073862 \hich\af0\dbch\af11\loch\f0 of available}{\fs20\insrsid13325517 \hich\af0\dbch\af11\loch\f0 artifacts found in the contribution. The following classes and its methods are responsible for doing this job.}{\fs20\insrsid12063004
+\par }{\fs20\insrsid13325517
+\par }{\fs20\insrsid7109352 \hich\af0\dbch\af11\loch\f0 NodeImpl.start() line: 131}{\fs20\insrsid3482368\charrsid7109352
+\par }{\fs20\insrsid12324527\charrsid6517470 \hich\af0\dbch\af11\loch\f0 NodeFactoryImpl.\hich\af0\dbch\af11\loch\f0 loadContributions(NodeConfiguration, ProcessorContext) line: 295
+\par \hich\af0\dbch\af11\loch\f0 DefaultDeployer(DeployerImpl).loadContribution(URI, URL, Monitor) line: 549
+\par \hich\af0\dbch\af11\loch\f0 DefaultURLArtifactProcessorExtensionPoint$LazyURLArtifactProcessor.read(URL, URI, URL, ProcessorContext) line: 288
+\par }{\fs20\lang1040\langfe1041\langnp1040\insrsid12324527\charrsid6517470 \hich\af0\dbch\af11\loch\f0 ContributionContentProcessor.read(URL, URI, URL, ProcessorContext) line: 135
+\par }{\fs20\insrsid12324527\charrsid6517470 \hich\af0\dbch\af11\loch\f0 JarContributionScanner.scan(Contribution) line: 70}{\fs20\insrsid12324527
+\par }{\fs20\insrsid16266353
+\par }{\b\fs20\insrsid16266353\charrsid16266353 \hich\af0\dbch\af11\loch\f0 Step 2: }{\b\fs20\insrsid9399793 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid12022509 \hich\af0\dbch\af11\loch\f0 After scanning the contribution for the list of artifacts}{
+\fs20\insrsid9399793\charrsid9399793 \hich\af0\dbch\af11\loch\f0 , the}{\fs20\insrsid12022509 \hich\af0\dbch\af11\loch\f0 se}{\fs20\insrsid9399793\charrsid9399793 \hich\af0\dbch\af11\loch\f0 individual artifacts identified}{\fs20\insrsid8396446
+\hich\af0\dbch\af11\loch\f0 from the contributions are }{\fs20\insrsid9399793\charrsid9399793 \hich\af0\dbch\af11\loch\f0 read using their }{\fs20\insrsid7437856 \hich\af0\dbch\af11\loch\f0 corresponding}{\fs20\insrsid9399793\charrsid9399793
+\hich\af0\dbch\af11\loch\f0 artifactProcessors}{\b\fs20\insrsid9399793 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid8748637\charrsid9051788 \hich\af0\dbch\af11\loch\f0 and artifact models are created at this point of time.}{
+\fs20\insrsid9270497\charrsid9051788 \hich\af0\dbch\af11\loch\f0 The below class and its method is responsible for doing this job.}{\b\f1\fs20\insrsid16266353\charrsid16266353
+\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid9399793 {\fs20\insrsid9399793\charrsid9399793
+\par }{\fs20\lang1040\langfe1041\langnp1040\insrsid9399793\charrsid6517470 \hich\af0\dbch\af11\loch\f0 ContributionContentProcessor.read(URL, URI, URL, Process\hich\af0\dbch\af11\loch\f0 orContext) line: 1}{\fs20\lang1040\langfe1041\langnp1040\insrsid9051788
+\hich\af0\dbch\af11\loch\f0 51}{\fs20\lang1040\langfe1041\langnp1040\insrsid9399793\charrsid6517470
+\par }\pard \ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11172638 {\lang1040\langfe1041\langnp1040\insrsid12324527\charrsid9399793
+\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid14830590 {\b\fs22\insrsid14830590\charrsid14952839 \hich\af0\dbch\af11\loch\f0 Path Taken to Resolve the Contribution:}{\b\fs22\insrsid12090221\charrsid14952839
+\hich\af0\dbch\af11\loch\f0 (2.x)}{\b\fs22\insrsid14830590\charrsid14952839
+\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\f1\fs20\insrsid10637518
+\par }{\b\fs20\insrsid9915706\charrsid2769575 \hich\af0\dbch\af11\loch\f0 Step 1:}{\fs20\insrsid9915706 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid2441954 \hich\af0\dbch\af11\loch\f0 After loading / scanning the }{\fs20\insrsid1575154
+\hich\af0\dbch\af11\loch\f0 contributions}{\fs20\insrsid9915706 \hich\af0\dbch\af11\loch\f0 , }{\fs20\insrsid9372065 \hich\af0\dbch\af11\loch\f0 now }{\fs20\insrsid2441954 \hich\af0\dbch\af11\loch\f0 the Node Manager }{\fs20\insrsid1575154
+\hich\af0\dbch\af11\loch\f0 configure}{\fs20\insrsid9372065 \hich\af0\dbch\af11\loch\f0 s}{\fs20\insrsid2441954 \hich\af0\dbch\af11\loch\f0 the node with the }{\fs20\insrsid9372065 \hich\af0\dbch\af11\loch\f0 available contribution. This step involves }{
+\fs20\insrsid15012329 \hich\af0\dbch\af11\loch\f0 initiating the process of }{\fs20\insrsid9372065 \hich\af0\dbch\af11\loch\f0 resolving the various artifacts available in the contribution using their respective }{\fs20\insrsid1932963
+\hich\af0\dbch\af11\loch\f0 ModelResolvers}{\fs20\insrsid9372065 \hich\af0\dbch\af11\loch\f0 . }{\fs20\insrsid2629112 \hich\af0\dbch\af11\loch\f0 The following classes and its methods are responsible for doing this job.}{\fs20\insrsid9915706
+\par }{\f1\fs20\insrsid9915706
+\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid2960142 {\fs20\insrsid2960142\charrsid2960142 \hich\af0\dbch\af11\loch\f0 NodeImpl.start() line: 133}{\f1\fs20\insrsid2960142\charrsid5971993 \tab
+\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\fs20\insrsid2960142\charrsid2960142 \hich\af0\dbch\af11\loch\f0 NodeFactoryImpl.configureNode(NodeConfiguration, Lis\hich\af0\dbch\af11\loch\f0
+t<Contribution>, ProcessorContext) line: 274}{\fs20\insrsid2960142
+\par }{\fs20\insrsid4734635\charrsid2960142 \hich\af0\dbch\af11\loch\f0 DefaultDeployer(DeployerImpl).build(List<Contribution>, Map<QName,Li}{\fs20\insrsid4734635 \hich\af0\dbch\af11\loch\f0 st<String>>, Monitor) line: 440}{\fs20\insrsid2960142
+\par }{\fs20\insrsid7217972\charrsid2960142 \hich\af0\dbch\af11\loch\f0 DefaultURLArtifactProcessorExtensionPoint$LazyURLArtifactProcessor.resolve(Object, ModelResolver, ProcessorCont\hich\af0\dbch\af11\loch\f0 ext) line: 305}{\f1\fs20\insrsid10637518
+\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid5971993 {\fs20\insrsid5971993\charrsid2960142 \hich\af0\dbch\af11\loch\f0 ContributionContentProcessor.resolve(Contribution, ModelResolver, ProcessorContext) line: }{
+\fs20\insrsid14892148 \hich\af0\dbch\af11\loch\f0 252}{\fs20\insrsid5971993\charrsid2960142
+\par }{\fs20\insrsid5971993
+\par }{\b\fs20\insrsid8091336
+\par }{\b\fs20\insrsid4720541\charrsid2769575 \hich\af0\dbch\af11\loch\f0 Step }{\b\fs20\insrsid4720541 \hich\af0\dbch\af11\loch\f0 2: }{\fs20\insrsid14180275\charrsid1316508 \hich\af0\dbch\af11\loch\f0
+In this step, the contribution artifacts are resolved using their registered ModelResolvers.}{\fs20\insrsid329786 \hich\af0\dbch\af11\loch\f0 Some examples of artifacts and their corresponding ModelResovlers are shown below}{\fs20\insrsid16519714
+\loch\af0\dbch\af11\hich\f0 \'85\loch\f0 .}{\fs20\insrsid4720541
+\par }{\fs20\insrsid16519714
+\par }{\b\fs20\insrsid5580748 \hich\af0\dbch\af11\loch\f0 Artifacts\tab }{\b\fs20\insrsid5580748\charrsid5580748 \hich\af0\dbch\af11\loch\f0 ModelResolver
+\par }{\fs20\insrsid16278179 \hich\af0\dbch\af11\loch\f0 Java Classes \tab }{\fs20\insrsid16001292 \hich\af0\dbch\af11\loch\f0 - }{\fs20\insrsid16278179 \hich\af0\dbch\af11\loch\f0 ClassLoaderModelResolver}{\fs20\insrsid16519714
+\par }{\fs20\insrsid16278179 \hich\af0\dbch\af11\loch\f0 XSD\tab \tab - XSDModelResolver
+\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\fs20\insrsid16278179 \hich\af0\dbch\af11\loch\f0 WSDL\tab \tab - WSDLModelResolver}{\f1\fs20\insrsid16650932
+\par
+\par }{\b\fs22\insrsid861443
+\par }{\b\fs22\insrsid16650932\charrsid11304604 \hich\af0\dbch\af11\loch\f0 How 2.x is different from 1.x }{\b\fs22\insrsid10701367 \hich\af0\dbch\af11\loch\f0 in terms of Contribution ClassLoaders}{\b\fs22\insrsid16650932\charrsid11304604
+\hich\af0\dbch\af11\loch\f0 :}{\b\fs22\insrsid16650932
+\par }{\b\fs22\insrsid8078383
+\par }{\b\fs21\insrsid3826780\charrsid11470771 \hich\af0\dbch\af11\loch\f0 In 1.x }{\b\fs21\insrsid2888904\charrsid11470771 \hich\af0\dbch\af11\loch\f0 code}{\b\fs21\insrsid2888904 \hich\af0\dbch\af11\loch\f0 :}{\b\fs21\insrsid3826780\charrsid11470771
+\hich\af0\dbch\af11\loch\f0 }{\b\fs21\insrsid9188473\charrsid11470771 \hich\af0\dbch\af11\loch\f0
+\par {\listtext\pard\plain\f3\fs20\insrsid9188473\charrsid9188473 \loch\af3\dbch\af11\hich\f3 \'2d\tab}}\pard \ql \fi-360\li720\ri0\nowidctlpar\jclisttab\tx720\wrapdefault\faauto\ls11\rin0\lin720\itap0\pararsid11470771 {\fs20\insrsid9188473\charrsid9188473
+\hich\af0\dbch\af11\loch\f0 A ContributionClassLoaderProvider is registered using ContributionClassLoaderProviderExtensionPoint, which provides the ContributionClassLoader for the contributions.}{\fs20\insrsid8078383
+\par {\listtext\pard\plain\f3\fs20\insrsid11470771 \loch\af3\dbch\af11\hich\f3 \'2d\tab}}\pard \ql \fi-360\li720\ri0\nowidctlpar\jclisttab\tx720\wrapdefault\faauto\ls11\rin0\lin720\itap0 {\fs20\insrsid11470771 \hich\af0\dbch\af11\loch\f0 A }{
+\fs20\insrsid11470771\charrsid11470771 \hich\af0\dbch\af11\loch\f0 ContributionClassLoader}{\fs20\insrsid11470771 \hich\af0\dbch\af11\loch\f0 instance is created for the contribution }{\fs20\insrsid1455334 \hich\af0\dbch\af11\loch\f0
+by the provider, and this instance is set as a classloader in the ContributionImpl.}{\b\fs22\insrsid7209946\charrsid13830030
+\par {\listtext\pard\plain\f3\fs20\insrsid1705583 \loch\af3\dbch\af11\hich\f3 \'2d\tab}}{\fs20\insrsid1705583 \hich\af0\dbch\af11\loch\f0 For}{\fs20\insrsid13830030 \hich\af0\dbch\af11\loch\f0
+ the Java Class artifacts, the ClassLoaderModelResolver uses the class loader instance available from the contribution }{\fs20\insrsid1705583 \hich\af0\dbch\af11\loch\f0 as the parent class loader while resolving}{\fs20\insrsid13830030
+\hich\af0\dbch\af11\loch\f0 the Class References.}{\b\fs22\insrsid7209946
+\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\b\fs22\insrsid7209946
+\par }{\b\fs21\insrsid7209946\charrsid11470771 \hich\af0\dbch\af11\loch\f0 In 2.x }{\b\fs21\insrsid2888904\charrsid11470771 \hich\af0\dbch\af11\loch\f0 code}{\b\fs21\insrsid2888904 \hich\af0\dbch\af11\loch\f0 :}{\b\fs21\insrsid7209946
+\par {\listtext\pard\plain\f3\fs20\insrsid16719075 \loch\af3\dbch\af11\hich\f3 \'2d\tab}}\pard \ql \fi-360\li720\ri0\nowidctlpar\jclisttab\tx720\wrapdefault\faauto\ls11\rin0\lin720\itap0\pararsid13396628 {\fs20\insrsid16719075 \hich\af0\dbch\af11\loch\f0 No }{
+\fs20\insrsid13396628\charrsid9188473 \hich\af0\dbch\af11\loch\f0 ContributionClassLoaderProvider }{\fs20\insrsid16719075 \hich\af0\dbch\af11\loch\f0 and C}{\fs20\insrsid13396628\charrsid9188473 \hich\af0\dbch\af11\loch\f0
+ontributionClassLoaderProviderExtensionPoint}{\fs20\insrsid16719075 \hich\af0\dbch\af11\loch\f0 is used.}{\fs20\insrsid13396628
+\par {\listtext\pard\plain\f3\fs20\insrsid2780748 \loch\af3\dbch\af11\hich\f3 \'2d\tab}}{\fs20\insrsid2780748 \hich\af0\dbch\af11\loch\f0 T}{\fs20\insrsid13396628 \hich\af0\dbch\af11\loch\f0 he }{\fs20\insrsid6643333 \hich\af0\dbch\af11\loch\f0
+classloader field in the }{\fs20\insrsid13396628 \hich\af0\dbch\af11\loch\f0 ContributionImpl}{\fs20\insrsid2780748 \hich\af0\dbch\af11\loch\f0 }{\fs20\insrsid6643333 \hich\af0\dbch\af11\loch\f0 is always null.}{\b\fs22\insrsid13396628\charrsid13830030
+
+\par {\listtext\pard\plain\f3\fs20\insrsid6189819 \loch\af3\dbch\af11\hich\f3 \'2d\tab}}\pard \ql \fi-360\li720\ri0\nowidctlpar\jclisttab\tx720\wrapdefault\faauto\ls11\rin0\lin720\itap0\pararsid7549295 {\fs20\insrsid6189819 \hich\af0\dbch\af11\loch\f0 For}{
+\fs20\insrsid13396628 \hich\af0\dbch\af11\loch\f0 the Java Class artifacts, the ClassLoaderModelResolver uses the }{\fs20\insrsid6189819\charrsid6189819 \hich\af0\dbch\af11\loch\f0 Thread.currentThrea}{\fs20\insrsid6189819 \hich\af0\dbch\af11\loch\f0
+d().getContextClassLoader() }{\fs20\insrsid5243868 \hich\af0\dbch\af11\loch\f0 as the parent class loader }{\fs20\insrsid13396628 \hich\af0\dbch\af11\loch\f0 to resolve the Class References.}{\b\fs22\insrsid7549295
+\par }\pard \ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\b\fs21\insrsid13396628
+\par }{\b\fs21\insrsid28757\charrsid11470771
+\par }}
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.jpg b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.jpg Binary files differnew file mode 100644 index 0000000000..c11b718731 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.jpg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.jpg.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.jpg.jpeg Binary files differnew file mode 100644 index 0000000000..b4847c822c --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.jpg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.png b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.png Binary files differnew file mode 100644 index 0000000000..709eb07ac3 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.png diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.png.jpeg Binary files differnew file mode 100644 index 0000000000..3678c735b7 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_modules.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.jpg b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.jpg Binary files differnew file mode 100644 index 0000000000..76f073c813 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.jpg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.jpg.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.jpg.jpeg Binary files differnew file mode 100644 index 0000000000..2822e6c252 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.jpg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.png b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.png Binary files differnew file mode 100644 index 0000000000..4c4a3e152d --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.png diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.png.jpeg Binary files differnew file mode 100644 index 0000000000..f91d6a74a6 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-deployment.data/sca_java_deployment_overview.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-deployment.html b/site/trunk/site-publish/documentation-2x/sca-java-deployment.html new file mode 100644 index 0000000000..819e47cc2c --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-deployment.html @@ -0,0 +1,410 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java Deployment : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="SCA Java Deployment">SCA Java Deployment</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="SCA Java Deployment">SCA Java Deployment</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java Deployment</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5965425"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5965425">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5965425"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5965425">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5965425"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5965425">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H1><A name="SCAJavaDeployment-Overview"></A>Overview</H1> +<P><SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-java-deployment.data/sca_java_deployment_overview.jpg" style="border: 0px solid black"></SPAN></P> + + +<H1><A name="SCAJavaDeployment-DeployerImplementation"></A>Deployer Implementation</H1> + +<P>The Deployer is available in multiple modules in Tuscany Java SCA 2.x</P> + +<H2><A name="SCAJavaDeployment-ContributionModules"></A>Contribution Modules</H2> + +<P><SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-java-deployment.data/sca_java_deployment_modules.jpg" style="border: 0px solid black"></SPAN></P> + +<UL> + <LI><B>Deployer</B> + <UL> + <LI>Responsible to process contribution lifecycle</LI> + </UL> + </LI> + <LI><B>Contribution Extensions</B> + <UL> + <LI>Extension point to add imports/exports + <UL> + <LI>Currently available : namespace and java import/export</LI> + </UL> + </LI> + </UL> + </LI> + <LI><B>Contribution Processors</B> + <UL> + <LI>Extension point to add contribution artifact processors</LI> + </UL> + </LI> + <LI><B>Contribution Scanners</B> + <UL> + <LI>Extension point to add package scanners to process contribution contents + <UL> + <LI>Currently available : directory, zip and jar</LI> + </UL> + </LI> + </UL> + </LI> + <LI><B>Contribution Model Resolvers</B> + <UL> + <LI>Extension point to add artifact model resolvers</LI> + </UL> + </LI> +</UL> + + +<H2><A name="SCAJavaDeployment-Deployerlifecycle"></A>Deployer life cycle</H2> + +<UL> + <LI><B>Initialize</B> + <UL> + <LI>Load definitions.xml and store in a system contribution</LI> + </UL> + </LI> +</UL> + + +<UL> + <LI><B>Load</B> + <UL> + <LI>Read contribution artifacts utilizing the Contribution Scanner</LI> + </UL> + </LI> +</UL> + + +<UL> + <LI><B>Build</B> + <UL> + <LI>Pre-resolve the contribution artifacts</LI> + <LI>Build contribution dependencies by processing contribution imports/exports</LI> + <LI>Resolve contribution artifacts</LI> + </UL> + </LI> +</UL> + + +<H2><A name="SCAJavaDeployment-DeployerInterface"></A>Deployer Interface</H2> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +/** + * A utility that provides system functions to handle Tuscany SCA application deployment + */ +<SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">interface</SPAN> Deployer <SPAN class="code-keyword">extends</SPAN> LifeCycleListener { + /** + * Attach a deployment composite to the given contribution + * @param contribution The target contribution + * @param composite The deployment composite + * @param appending A flag to indicate <SPAN class="code-keyword">if</SPAN> existing deployable composites in the contribution should be appended or replaced + */ + void attachDeploymentComposite(Contribution contribution, Composite composite, <SPAN class="code-object">boolean</SPAN> appending); + + /** + * Configure a list of contributions to create a composite representing a view of the domain + * @param contributions + * @param bindingBaseURIs + * @param monitor + * @<SPAN class="code-keyword">return</SPAN> + * @<SPAN class="code-keyword">throws</SPAN> ContributionResolveException + * @<SPAN class="code-keyword">throws</SPAN> CompositeBuilderException + */ + Composite build(List<Contribution> contributions, Map<QName, List<<SPAN class="code-object">String</SPAN>>> bindingBaseURIs, Monitor monitor) + <SPAN class="code-keyword">throws</SPAN> ContributionResolveException, CompositeBuilderException; + + /** + * Load an artifact from the given location + * @param uri + * @param location + * @param monitor + * @<SPAN class="code-keyword">return</SPAN> + * @<SPAN class="code-keyword">throws</SPAN> ContributionReadException + */ + Artifact loadArtifact(URI uri, URL location, Monitor monitor) <SPAN class="code-keyword">throws</SPAN> ContributionReadException; + + /** + * Load a contribution from the given location + * @param uri + * @param location + * @param monitor + * @<SPAN class="code-keyword">return</SPAN> + * @<SPAN class="code-keyword">throws</SPAN> ContributionReadException + */ + Contribution loadContribution(URI uri, URL location, Monitor monitor) <SPAN class="code-keyword">throws</SPAN> ContributionReadException; + + /** + * @param <T> + * @param uri + * @param location + * @param monitor + * @<SPAN class="code-keyword">return</SPAN> + * @<SPAN class="code-keyword">throws</SPAN> ContributionReadException + */ + <T> T loadDocument(URI uri, URL location, Monitor monitor) <SPAN class="code-keyword">throws</SPAN> ContributionReadException; + + /** + * @param <T> + * @param reader + * @param monitor + * @<SPAN class="code-keyword">return</SPAN> + * @<SPAN class="code-keyword">throws</SPAN> XMLStreamException + * @<SPAN class="code-keyword">throws</SPAN> ContributionReadException + */ + <T> T loadXMLDocument(Reader reader, Monitor monitor) <SPAN class="code-keyword">throws</SPAN> XMLStreamException, ContributionReadException; + + /** + * @param <T> + * @param location + * @param monitor + * @<SPAN class="code-keyword">return</SPAN> + * @<SPAN class="code-keyword">throws</SPAN> XMLStreamException + * @<SPAN class="code-keyword">throws</SPAN> ContributionReadException + */ + <T> T loadXMLDocument(URL location, Monitor monitor) <SPAN class="code-keyword">throws</SPAN> XMLStreamException, ContributionReadException; + + /** + * @param <T> + * @param reader + * @param monitor + * @<SPAN class="code-keyword">return</SPAN> + * @<SPAN class="code-keyword">throws</SPAN> ContributionReadException + * @<SPAN class="code-keyword">throws</SPAN> XMLStreamException + */ + <T> T loadXMLElement(XMLStreamReader reader, Monitor monitor) <SPAN class="code-keyword">throws</SPAN> ContributionReadException, XMLStreamException; + + /** + * Save the model as XML + * @param model + * @param writer + * @param monitor + * @<SPAN class="code-keyword">throws</SPAN> XMLStreamException + * @<SPAN class="code-keyword">throws</SPAN> ContributionWriteException + */ + void saveXMLDocument(<SPAN class="code-object">Object</SPAN> model, Writer writer, Monitor monitor) <SPAN class="code-keyword">throws</SPAN> XMLStreamException, + ContributionWriteException; + + /** + * Save the model as XML + * @param model + * @param writer + * @param monitor + * @<SPAN class="code-keyword">throws</SPAN> XMLStreamException + * @<SPAN class="code-keyword">throws</SPAN> ContributionWriteException + */ + void saveXMLElement(<SPAN class="code-object">Object</SPAN> model, XMLStreamWriter writer, Monitor monitor) <SPAN class="code-keyword">throws</SPAN> XMLStreamException, + ContributionWriteException; + + /** + * @<SPAN class="code-keyword">return</SPAN> + */ + <SPAN class="code-object">boolean</SPAN> isSchemaValidationEnabled(); + /** + * @param schemaValidationEnabled + */ + void setSchemaValidationEnabled(<SPAN class="code-object">boolean</SPAN> schemaValidationEnabled); + + /** + * + * @<SPAN class="code-keyword">return</SPAN> + */ + Monitor createMonitor(); + + /** + * Create an instance of {@link BuilderContext} + * @<SPAN class="code-keyword">return</SPAN> + */ + BuilderContext createBuilderContext(); + + /** + * Create an instance of {@link ProcessorContext} + * @<SPAN class="code-keyword">return</SPAN> + */ + ProcessorContext createProcessorContext(); + + /** + * Get the {@link ExtensionPointRegistry} + * @<SPAN class="code-keyword">return</SPAN> + */ + ExtensionPointRegistry getExtensionPointRegistry(); + + /* + * @see org.apache.tuscany.sca.core.LifeCycleListener#start() + */ + void start(); + + /* + * @see org.apache.tuscany.sca.core.LifeCycleListener#stop() + */ + void stop(); + +} +</PRE> +</DIV></DIV> + +<H1><A name="SCAJavaDeployment-DeployingacontributionusingtheNodeAPI"></A>Deploying a contribution using the Node API</H1> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + +/** + * This client program shows how to create an SCA runtime, start it, + * and locate and invoke a SCA component + */ +<SPAN class="code-keyword">public</SPAN> class CalculatorClient { + <SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">static</SPAN> void main(<SPAN class="code-object">String</SPAN>[] args) <SPAN class="code-keyword">throws</SPAN> Exception { + + <SPAN class="code-object">String</SPAN> contribution = ContributionLocationHelper.getContributionLocation(CalculatorClient.class); + Node node = NodeFactory.newInstance().createNode(<SPAN class="code-quote">"Calculator.composite"</SPAN>, <SPAN class="code-keyword">new</SPAN> Contribution(<SPAN class="code-quote">"calculator"</SPAN>, contribution)); + + node.start(); + + CalculatorService calculatorService = ((Client)node).getService(CalculatorService.class, <SPAN class="code-quote">"CalculatorServiceComponent"</SPAN>); + + <SPAN class="code-comment">// Calculate +</SPAN> <SPAN class="code-object">System</SPAN>.out.println(<SPAN class="code-quote">"3 + 2="</SPAN> + calculatorService.add(3, 2)); + <SPAN class="code-object">System</SPAN>.out.println(<SPAN class="code-quote">"3 - 2="</SPAN> + calculatorService.subtract(3, 2)); + <SPAN class="code-object">System</SPAN>.out.println(<SPAN class="code-quote">"3 * 2="</SPAN> + calculatorService.multiply(3, 2)); + <SPAN class="code-object">System</SPAN>.out.println(<SPAN class="code-quote">"3 / 2="</SPAN> + calculatorService.divide(3, 2)); + + node.stop(); + } + +} + +</PRE> +</DIV></DIV> + + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java Deployment'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-development-guide.html b/site/trunk/site-publish/documentation-2x/sca-java-development-guide.html new file mode 100644 index 0000000000..1eea6ce884 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-development-guide.html @@ -0,0 +1,524 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java Development Guide : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="SCA Java Development Guide">SCA Java Development Guide</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="SCA Java Development Guide">SCA Java Development Guide</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java Development Guide</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=109132"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=109132">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109132"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109132">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109132"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109132">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <P>This document is the development guideline for SCA Java 2.x project.</P> + +<UL> + <LI><A href="#SCAJavaDevelopmentGuide-GeneralGuide">General Guide</A></LI> + <LI><A href="#SCAJavaDevelopmentGuide-GettingSource">Getting Source code</A></LI> + <LI><A href="#SCAJavaDevelopmentGuide-Setup">Setting up your development environment</A></LI> + <LI><A href="#SCAJavaDevelopmentGuide-IDE">Importing SCA modules into your Development IDE</A></LI> + <LI><A href="#SCAJavaDevelopmentGuide-CodingGuidelines">Coding Guidelines</A></LI> + <LI><A href="#SCAJavaDevelopmentGuide-Testing">Testing</A></LI> + <LI><A href="#SCAJavaDevelopmentGuide-ClientApplications">Client Applications</A></LI> + <LI><A href="#SCAJavaDevelopmentGuide-MavenBuildStructure">Maven Build Structure</A></LI> + <LI><B>Development Hints</B> + <UL> + <LI><A href="#SCAJavaDevelopmentGuide-SamplesinEclipse">Importing existing Tuscany SCA projects into Eclipse</A></LI> + <LI><A href="#SCAJavaDevelopmentGuide-WebappinEclipse">Generating Eclipse WTP Web Projects for Webapp samples</A></LI> + <LI><A href="#SCAJavaDevelopmentGuide-Ant">Generating Dependencies for Ant in Samples</A></LI> + </UL> + </LI> +</UL> + + +<H3><A name="SCAJavaDevelopmentGuide-OSGiOverviewandApproach"></A>OSGi Overview and Approach</H3> + +<P><A href="http://people.apache.org/~lresende/presentations/felix%20goes%20to%20tuscany.pdf" class="external-link" rel="nofollow">OSGI & Tuscany</A></P> + +<H3><A name="SCAJavaDevelopmentGuide-GeneralGuide"></A><A name="SCAJavaDevelopmentGuide-GeneralGuide"></A> General Guide</H3> + +<P>Welcome to the Tuscany SCA Java subproject project. We look forward to your participation and try to help you get on board. Feel free to ask your questions on the mailing list.</P> + +<P>Here are some general guidelines we use in this project.</P> +<UL> + <LI>Java SCA sub-project aims to provide enterprise-grade service infrastructure based on SCA.</LI> + <LI>Tuscany SCA is not just a reference implementation. We encourage innovation based on the tenets of SCA. A lot of work we do provides feedback to the specifications.</LI> + <LI>The Java SCA infrastructure should provide flexibility and choice. It should not dictate programming models but support many.</LI> + <LI>The Java SCA infrastructure is very modularized and is designed to be highly extensible so users can customize it to fit their needs.</LI> +</UL> + + +<H3><A name="SCAJavaDevelopmentGuide-Prerequisites"></A><A name="SCAJavaDevelopmentGuide-Prerequisites"></A> Prerequisites</H3> + +<P>Java SCA requires the following:</P> +<UL> + <LI><A href="http://java.sun.com/javase/downloads/index.jsp" class="external-link" rel="nofollow">J2SE 1.6.0+)</A></LI> + <LI><A href="http://maven.apache.org/" class="external-link" rel="nofollow">Apache Maven (2.2.1+)</A></LI> + <LI><A href="http://subversion.tigris.org/" class="external-link" rel="nofollow">Subversion (1.6+)</A> or <A href="http://tortoisesvn.tigris.org/" class="external-link" rel="nofollow">TortoiseSVN (1.6.x+)</A></LI> + <LI><A href="http://www.eclipse.org/downloads" class="external-link" rel="nofollow">Eclipse PDE (Ganymede ) </A></LI> +</UL> + + +<H4><A name="SCAJavaDevelopmentGuide-CheckingoutcodefromSubversion"></A>Checking out code from Subversion</H4> + +<P>Use the command as follows:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +svn checkout https:<SPAN class="code-comment">//svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/</SPAN> +</PRE> +</DIV></DIV> + +<H3><A name="SCAJavaDevelopmentGuide-SettingupyourDevelopmentEnvironment"></A><A name="SCAJavaDevelopmentGuide-Setup"></A> Setting up your Development Environment</H3> + +<H4><A name="SCAJavaDevelopmentGuide-topdownbuild%28recommendedapproach%29"></A>top-down build (recommended approach)</H4> + +<P>Check out all of the java source code.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +svn checkout https:<SPAN class="code-comment">//svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/</SPAN> +</PRE> +</DIV></DIV> +<P>Building the SCA source code :</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +cd trunk +mvn -fae clean install +</PRE> +</DIV></DIV> +<P>It should work even if you start with an empty Maven local repository, and it should always work, however when you are building for Tuscany for the first time there are a lot of dependencies which must be downloaded so the first build can take a long time and it may fail with problems retrieving the dependencies.</P> + +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/lightbulb_on.gif" height="16" width="16" align="absmiddle" alt="" border="0"> There can be occasional problems downloading artifacts from remote Maven repositories so if mvn fails with network related sounding messages sometimes just trying again can fix the problem.</P> + +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/lightbulb_on.gif" height="16" width="16" align="absmiddle" alt="" border="0"> The trunk code sometimes has SNAPSHOT dependencies which can get out of date in your local repository so if you see odd build failures try updating the SNAPSHOT jars by using the "-U" parameter in the mvn command.</P> + +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/lightbulb_on.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Once you have done a top-down build, and your local maven repository is populated, you can start using the maven off line option to speed up the build process by using the "-o" parameter in the mvn command.</P> + +<DIV class="panelMacro"><TABLE class="infoMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>The SCA build consumes a good amount of memory, in case you are seeing issues during the build, set a MAVEN_OPTS environment variable to allocate more memory for the build process. + +<P> Windows : SET MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=384m"<BR> + Unix : export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=384m"</P></TD></TR></TABLE></DIV> + +<DIV class="panelMacro"><TABLE class="infoMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>If you are using MAC OS, please see 'Special instructions for MAC OS users' section below</TD></TR></TABLE></DIV> + +<H3><A name="SCAJavaDevelopmentGuide-ImportingSCAmodulesintoyourDevelopmentIDE"></A><A name="SCAJavaDevelopmentGuide-IDE"></A>Importing SCA modules into your Development IDE</H3> + + +<H4><A name="SCAJavaDevelopmentGuide-UsingEclipse"></A>Using Eclipse</H4> + +<P>If this is the first time you are using your workspace with maven m2 local repository, you will need to tell your Eclipse workspace the location of the directory, and you can do this with the following command :</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +mvn -Declipse.workspace=[path-to-eclipse-workspace] eclipse:add-maven-repo +</PRE> +</DIV></DIV> +<P>In order to generate the necessary project files to import the SCA modules to Eclipse, you can use the maven eclipse plugin</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +mvn eclipse:eclipse +</PRE> +</DIV></DIV> + +<P>Now launch your Eclipse IDE, select File->Import->Existing projects into Workplace, and then import the project from SCA Modules into your Eclipse Workspace.</P> + +<H4><A name="SCAJavaDevelopmentGuide-UsingEclipsePDE"></A>Using Eclipse PDE</H4> + +<P>To help with development in an OSGi environment Tuscany also has a build profile to setup the Eclipse Plugin Development Environment:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +mvn -fae -Peclipse +</PRE> +</DIV></DIV> + +<P>Now set the "Target Platform" in your Eclipse IDE by following the steps below :</P> + +<UL> + <LI>Inside eclipse, select File->Open File" and open "distribution/all/target/features/tuscany.target" + <UL> + <LI>click "Set as target platform" on the upper-right side of the overview window that opened</LI> + </UL> + </LI> +</UL> + + +<P>Then as when using eclipse:eclipse launch your Eclipse IDE, select File->Import->Existing projects into Workplace, and then import the project from SCA Modules into your Eclipse Workspace.</P> + +<P>There are also some Tuscany Eclipse code templates available:<BR> +<A href="https://svn.apache.org/repos/asf/tuscany/java/etc/tuscany-eclipse-codestyle.xml" class="external-link" rel="nofollow">Eclipse Style Formatter </A><BR> +<A href="https://svn.apache.org/repos/asf/tuscany/java/etc/tuscany-eclipse-codetemplates.xml" class="external-link" rel="nofollow">Eclipse Templates </A></P> + +<H4><A name="SCAJavaDevelopmentGuide-EclipseBuildTroubleshooting"></A><A name="SCAJavaDevelopmentGuide-EclipseBuildTroubleshooting"></A> Eclipse Build Troubleshooting</H4> + +<P>Sometimes a Maven build will work from the command line, yet the same component will not build in the Eclipse environment. Of course, developers try to prevent this from happening, but it does happen and makes for a valid Jira. In the meantime, here are some steps that might help correct build issues in the Eclipse environment:</P> + +<UL> + <LI><B>Missing classpath variables</B> - Sometimes Java build classpath variables are incorrect or missing, for instance "Unbound classpath variable: 'M2_REPO/com/sun/xml/bind/jaxb-impl/2.1.9/jaxb-impl-2.1.9.jar'". Add the classpath variable 'M2_REPOS' to your workspace. Window > Preferences > Java > Build Path > Classpath variables. Create variables for any missing variables and point them to the appropriate place in your file system. Do a complete rebuild.</LI> +</UL> + + +<UL> + <LI><B>Missing projects</B> - Sometimes developers add or remove project dependencies. These show up with error message "The project cannot be built until build path errors are resolved". This is often a sign that your Eclipse workspace is out of sync with your local repository or the svn repository. The full remedy is to refresh your local repos (svn update), rebuild your local repos (mvn clean install -U), regenerate Eclipse projects (mvn -Declipse), reimport projects in Eclipse, and clean/rebuild your projects. You may be able to do less than this full refresh with simple changes, but the full refresh is often needed for major changes.</LI> +</UL> + + +<UL> + <LI><B>Project won't build</B> - Sometimes a particular project will not build despite repeated efforts. Consider if this project is necessary to the task at hand. You may be able to delete the problematic Eclipse project and continue with other work.</LI> +</UL> + + + +<H3><A name="SCAJavaDevelopmentGuide-SpecialinstructionsforMACOSusers"></A><A name="SCAJavaDevelopmentGuide-MacOS"></A> Special instructions for MAC OS users</H3> + +<P>Some plugins used in the Tuscany build requires a explicit dependency on some classes from JDK tools.jar, which is in a different place in the MAC OS environment. </P> + +<P>We have created duplicate profiles in Tuscany to accommodate the most used user tasks</P> + +<UL> + <LI>Running a build : there is a default profile for the mac environment properly configuring the tools.jar property +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + mvn clean install +</PRE> +</DIV></DIV></LI> +</UL> + + +<UL> + <LI>Creating Eclipse IDE project files : there is a "eclipse-mac" profile +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + mvn -Peclipse-mac +</PRE> +</DIV></DIV></LI> +</UL> + + +<H4><A name="SCAJavaDevelopmentGuide-Updateyourmavensettings.xml%28%25userhome%25%2F.m2%2Fsettings.xml%29"></A>Update your maven settings.xml (%user_home%/.m2/settings.xml)</H4> + +<P>Updating your settings.xml with proper property configuration will make all profiles work in a MAC OS environment.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<settings> + + <profiles> + <profile> + <id>mac-os-configuration</id> + <properties> + <tools.jar>${java.home}/../Classes/classes.jar</tools.jar> + </properties> + </profile> + </profiles> + + <activeProfiles> + <activeProfile>mac-os-configuration</activeProfile> + </activeProfiles> + +</settings> +</PRE> +</DIV></DIV> + +<H3><A name="SCAJavaDevelopmentGuide-CodingGuidelines"></A><A name="SCAJavaDevelopmentGuide-CodingGuidelines"></A> Coding Guidelines</H3> + +<P>There are a few simple guidelines when developing for JAVA SCA:</P> +<UL> + <LI>The basic coding style used is the described at <A href="http://java.sun.com/docs/codeconv/" class="external-link" rel="nofollow">Sun Java coding standards</A> but the main thing is to be consistent with the existing code you're updating, so for example, if you're updating a method that uses the braces on the same line style don't add code with the hanging braces style.</LI> +</UL> + + +<UL> + <LI>Always include the Apache License Headers on all files (both source code files and resource files such as xml documents)</LI> +</UL> + + +<UL> + <LI>Include a descriptive log message for checkins, for example "fixed such and such problem".</LI> +</UL> + + +<P>While Tuscany does not yet have an official style or template, here are some templates that folks have been using and have been checked into the build which are stored at <A href="https://svn.apache.org/repos/asf/tuscany/java/etc/" class="external-link" rel="nofollow">https://svn.apache.org/repos/asf/tuscany/java/etc/</A></P> + +<H4><A name="SCAJavaDevelopmentGuide-Namingconventionstoincreaseconsistency"></A>Naming conventions to increase consistency</H4> + +<P><B>Folder Names:</B> Please use all lowercases and dashes in folder names (like in the jar names)</P> +<UL class="alternate" type="square"> + <LI>Maven artifact id = tuscany-<folder name></LI> +</UL> + + +<P><B>Package names:</B> Package names within modules should include the module name so that source code can be located in the source tree easily. So, for example, java/sca/module/implementation-java would be in package structure org.apache.tuscany.implementation.java.*</P> + +<H3><A name="SCAJavaDevelopmentGuide-Testing"></A><A name="SCAJavaDevelopmentGuide-Testing"></A> Testing</H3> + +<P>Tuscany uses plain junit test cases to perform unit and integration testing, below is an example that can also be used as a template for writing new test cases; it demonstrates how to bootstrap the Tuscany SCA runtime in your test case, and because they are based on junit, you can run it from your IDE of choice or from Maven.</P> + +<DIV class="panelMacro"><TABLE class="infoMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>Note that we are using JUnit 4.2 code style in OSGI development stream</TD></TR></TABLE></DIV> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +/** + * Description of your test <SPAN class="code-keyword">case</SPAN> and necessary details you find necessary + */ +@Scope(<SPAN class="code-quote">"COMPOSITE"</SPAN>) @EagerInit +<SPAN class="code-keyword">public</SPAN> class CalculatorTestCase { + + <SPAN class="code-keyword">private</SPAN> <SPAN class="code-keyword">static</SPAN> CalculatorService calculatorService; + <SPAN class="code-keyword">private</SPAN> <SPAN class="code-keyword">static</SPAN> NodeLauncher launcher; + <SPAN class="code-keyword">private</SPAN> <SPAN class="code-keyword">static</SPAN> Node node; + + @Reference + <SPAN class="code-keyword">public</SPAN> void setCalculatorService(CalculatorService calculatorService) { + CalculatorTestCase.calculatorService = calculatorService; + } + + + @BeforeClass + <SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">static</SPAN> void setUpBeforeClass() <SPAN class="code-keyword">throws</SPAN> Exception { + launcher = NodeLauncher.newInstance(); + <SPAN class="code-object">String</SPAN> location = ContributionLocationHelper.getContributionLocation(CalculatorClient.class); + node = launcher.createNode(<SPAN class="code-quote">"Calculator.composite"</SPAN>, <SPAN class="code-keyword">new</SPAN> Contribution(<SPAN class="code-quote">"test"</SPAN>, location)); + <SPAN class="code-object">System</SPAN>.out.println(<SPAN class="code-quote">"SCA Node API <SPAN class="code-object">ClassLoader</SPAN>: "</SPAN> + node.getClass().getClassLoader()); + node.start(); + } + + @AfterClass + <SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">static</SPAN> void tearDownAfterClass() <SPAN class="code-keyword">throws</SPAN> Exception { + <SPAN class="code-keyword">if</SPAN> (node != <SPAN class="code-keyword">null</SPAN>) { + node.stop(); + node.destroy(); + } + <SPAN class="code-keyword">if</SPAN> (launcher != <SPAN class="code-keyword">null</SPAN>) { + launcher.destroy(); + } + } + + @Test + <SPAN class="code-keyword">public</SPAN> void testCalculator() <SPAN class="code-keyword">throws</SPAN> Exception { + <SPAN class="code-comment">// Calculate +</SPAN> assertEquals(calculatorService.add(3, 2), 5.0); + assertEquals(calculatorService.subtract(3, 2), 1.0); + assertEquals(calculatorService.multiply(3, 2), 6.0); + assertEquals(calculatorService.divide(3, 2), 1.5); + } +} +</PRE> +</DIV></DIV> +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/lightbulb_on.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Note that we use surefire maven plugin to run the unit and integration tests, and in most cases, they are configured to match a **/*TestCase.java file name pattern. Because of this, if your test case has a different file name pattern, you might execute it from your IDE of choice, but the maven build won't execute the test.</P> + +<H3><A name="SCAJavaDevelopmentGuide-ClientApplicationsasSCAComponents"></A><A name="SCAJavaDevelopmentGuide-ClientApplications"></A> Client Applications as SCA Components</H3> + +<P>Below is how you can build client applications as an SCA component.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +@Scope(<SPAN class="code-quote">"COMPOSITE"</SPAN>) @EagerInit +<SPAN class="code-keyword">public</SPAN> class CalculatorClient { + + <SPAN class="code-keyword">private</SPAN> CalculatorService calculatorService; + + @Reference + <SPAN class="code-keyword">public</SPAN> void setCalculatorService(CalculatorService calculatorService) { + <SPAN class="code-keyword">this</SPAN>.calculatorService = calculatorService; + } + + @Init + <SPAN class="code-keyword">public</SPAN> void calculate() { + + <SPAN class="code-comment">// Calculate +</SPAN> <SPAN class="code-object">System</SPAN>.out.println(<SPAN class="code-quote">"SCA API <SPAN class="code-object">ClassLoader</SPAN>: "</SPAN> + print(Reference.class.getClassLoader())); + <SPAN class="code-object">System</SPAN>.out.println(<SPAN class="code-quote">"3 + 2="</SPAN> + calculatorService.add(3, 2)); + <SPAN class="code-object">System</SPAN>.out.println(<SPAN class="code-quote">"3 - 2="</SPAN> + calculatorService.subtract(3, 2)); + <SPAN class="code-object">System</SPAN>.out.println(<SPAN class="code-quote">"3 * 2="</SPAN> + calculatorService.multiply(3, 2)); + <SPAN class="code-object">System</SPAN>.out.println(<SPAN class="code-quote">"3 / 2="</SPAN> + calculatorService.divide(3, 2)); + } + + <SPAN class="code-keyword">private</SPAN> <SPAN class="code-keyword">static</SPAN> <SPAN class="code-object">String</SPAN> print(<SPAN class="code-object">ClassLoader</SPAN> cl) { + <SPAN class="code-object">StringBuffer</SPAN> buf = <SPAN class="code-keyword">new</SPAN> <SPAN class="code-object">StringBuffer</SPAN>(); + <SPAN class="code-keyword">for</SPAN> (; cl != <SPAN class="code-keyword">null</SPAN>;) { + buf.append(cl.toString()); + buf.append(' '); + cl = cl.getParent(); + } + <SPAN class="code-keyword">return</SPAN> buf.toString(); + } + +} +</PRE> +</DIV></DIV> + +<H3><A name="SCAJavaDevelopmentGuide-MavenBuildStructure"></A><A name="SCAJavaDevelopmentGuide-MavenBuildStructure"></A> Maven Build Structure</H3> + +<P><EM>We use the term Module to refer to the leaf of maven tree.</EM></P> +<UL> + <LI>sca/pom.xml's parent will be pom/parent/pom.xml</LI> + <LI>Other poms will use the pom from the parent folder as parent pom</LI> + <LI>Group id: org.apache.tuscany.sca</LI> + <LI>Version of our modules will be specified once in java/sca/pom.xml, child poms don't need specify a version as they get it from their parent</LI> + <LI>pom names begin Apache Tuscany SCA</LI> + <LI>Eclipse projects are generated for all built modules using mvn eclipse:eclipse</LI> +</UL> + + +<H4><A name="SCAJavaDevelopmentGuide-Addinganewmoduleandnotreadytointegrate%3F"></A>Adding a new module and not ready to integrate?</H4> + +<P>'work-in-progress' modules can be worked on in the same source tree and yet not break the top-down build. You can do this by not listing your module(s) in java/sca/modules/pom.xml.</P> + +<H2><A name="SCAJavaDevelopmentGuide-DevelopmentHints"></A>Development Hints</H2> + +<H3><A name="SCAJavaDevelopmentGuide-ImportingexistingTuscanySCAprojectsintoEclipse"></A><A name="SCAJavaDevelopmentGuide-SamplesinEclipse"></A>Importing existing Tuscany SCA projects into Eclipse</H3> + +<P>This section has talked about how to get set up ready to develop Tuscany. If you need to import existing samples into Eclipse to work on there are some instructions <A href="http://tuscany.apache.org/import-existing-tuscany-sca-projects-into-eclipse.html" class="external-link" rel="nofollow">here</A>. These are instructions for 1.x but should work OK on 2.x. </P> + +<H3><A name="SCAJavaDevelopmentGuide-GeneratingEclipseWTPWebProjectsforWebappsamples"></A><A name="SCAJavaDevelopmentGuide-WebappinEclipse"></A> Generating Eclipse WTP Web Projects for Webapp samples</H3> + +<P>If you're using Eclipse WTP and want to get WTP Web Projects generated<BR> +for our Webapp samples you can simply pass a -Dwtpversion=1.5 option to<BR> +the usual mvn eclipse:eclipse command, like this:<BR> +mvn -Dwtpversion=1.5 -Peclipse eclipse:eclipse</P> + +<P>The magic -Dwtpversion=1.5 option will add the WTP Web project nature to<BR> +all the Eclipse projects with <packaging>war</packaging> in their Maven<BR> +pom.xml. You'll then be able to add these projects to a WTP Tomcat or<BR> +Geronimo Server configuration, to publish and run them straight from<BR> +your Eclipse workspace.</P> + +<H3><A name="SCAJavaDevelopmentGuide-GeneratingDependenciesforAntinSamples"></A><A name="SCAJavaDevelopmentGuide-Ant"></A> Generating Dependencies for Ant in Samples</H3> + +<P>Figuring out the package dependency to include in Ant build.xml can be a pain. Here is a quick<BR> +script which works in Linux environment for war files.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +jar tvf sample-feed-aggregator-webapp.war | grep .jar | awk '{ printf <SPAN class="code-quote">"%s\n"</SPAN>, $8 }' | + sed -e <SPAN class="code-quote">"s/WEB-INF\/lib\<SPAN class="code-comment">///"</SPAN> | awk '{ printf <SPAN class="code-quote">"<include name=\"</SPAN>%s\<SPAN class="code-quote">"/>\n"</SPAN>, $1 }' | grep -v tuscany</SPAN> +</PRE> +</DIV></DIV> +<TD class="confluenceTd" valign="top"></TD> +<TABLE class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><TBODY><TR></TR></TBODY></TABLE> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java Development Guide'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-extensions-guide.html b/site/trunk/site-publish/documentation-2x/sca-java-extensions-guide.html new file mode 100644 index 0000000000..018b89bf96 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-extensions-guide.html @@ -0,0 +1,432 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java Extensions Guide : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java Extensions Guide</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964351"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964351">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964351"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964351">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964351"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964351">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H3><A name="SCAJavaExtensionsGuide-TuscanyExtensions"></A>Tuscany Extensions</H3> + +<DIV class="table-wrap"> +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> Type </TH> +<TH class="confluenceTh"> Release Introduced </TH> +<TH class="confluenceTh"> OASIS Compliance </TH> +<TH class="confluenceTh"> Status </TH> +<TH class="confluenceTh"> Description </TH> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Java%20implementation.composite&linkCreation=true&fromPageId=5964351" class="createlink">implementation.composite</A> </TD> +<TD class="confluenceTd"> 2.0-M1 </TD> +<TD class="confluenceTd"> <IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> Support for SCA components implemented with SCA composites (Assembly spec) </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-implementationjava.html" title="SCA Java implementation.java">implementation.java</A> </TD> +<TD class="confluenceTd"> 2.0-M1 </TD> +<TD class="confluenceTd"> 80% pass </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> Support for SCA components implemented with Java classes (Java CI spec) </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-implementationspring.html" title="SCA Java implementation.spring">implementation.spring</A> </TD> +<TD class="confluenceTd"> 2.0-M3 </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> ? </TD> +<TD class="confluenceTd"> Support for Spring Framework </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-implementationbpel.html" title="SCA Java implementation.bpel">implementation.bpel</A> </TD> +<TD class="confluenceTd"> 2.0-M1 </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> Support for components implemented in BPEL </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-implementationosgi.html" title="SCA Java implementation.osgi">implementation.osgi</A> </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> Support for osgi </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Widget%20Implementation.widget&linkCreation=true&fromPageId=5964351" class="createlink">implementation.widget</A> </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-implementationweb.html" title="SCA Java implementation.web">implementation.web</A> </TD> +<TD class="confluenceTd"> 2.0-M4 <BR class="atl-forced-newline"> </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> ? </TD> +<TD class="confluenceTd"> Support JEE web apps as implementation types </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Java%20binding.sca&linkCreation=true&fromPageId=5964351" class="createlink">binding.sca</A> </TD> +<TD class="confluenceTd"> 2.0-M1 </TD> +<TD class="confluenceTd"> <IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> SCA default binding (Assembly spec) </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-bindingws.html" title="SCA Java binding.ws">binding.ws</A> </TD> +<TD class="confluenceTd"> 2.0-M1 </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> SOAP/HTTP web services </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-bindingrmi.html" title="SCA Java binding.rmi">binding.rmi</A> </TD> +<TD class="confluenceTd"> 2.0-M1 </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> The Java RMI protocol </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-bindingjms.html" title="SCA Java binding.jms">binding.jms</A> </TD> +<TD class="confluenceTd"> 2.0-M4 <BR class="atl-forced-newline"> </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> ? </TD> +<TD class="confluenceTd"> Asynchronous JMS messaging </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-bindingejb.html" title="SCA Java binding.ejb">binding.ejb</A> </TD> +<TD class="confluenceTd"> 2.0-M4 <BR class="atl-forced-newline"> </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> ? </TD> +<TD class="confluenceTd"> EJB Binding </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-bindinghttp.html" title="SCA Java binding.http">binding.http</A> </TD> +<TD class="confluenceTd"> 2.0-M4 </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> ? </TD> +<TD class="confluenceTd"> Supports binding of methods over standard Hyper Text Transfer Protocol (HTTP), allowing you to create, retrieve, update, delete items. Also supports conditional creates, retrieves, updates, and deletes using the ETag and LastModified caching protocol described in HTTP. </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-bindingrest.html" title="SCA Java binding.rest">binding.rest</A> </TD> +<TD class="confluenceTd"> ? <BR class="atl-forced-newline"> </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> Work in Progress <BR class="atl-forced-newline"> </TD> +<TD class="confluenceTd"> Supports RESTFull services <BR class="atl-forced-newline"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Java%20binding.jsonp&linkCreation=true&fromPageId=5964351" class="createlink">binding.jsonp</A> </TD> +<TD class="confluenceTd"> ? </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> ? </TD> +<TD class="confluenceTd"> The JSON protocol over HTTP </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-bindingjsonrpc.html" title="SCA Java binding.jsonrpc">binding.jsonrpc</A> </TD> +<TD class="confluenceTd"> 2.0-M4 </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> The JSON-RPC protocol </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-bindingatom.html" title="SCA Java binding.atom">binding.atom</A> </TD> +<TD class="confluenceTd"> 2.0-M4 </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> supports Atom-publishing protocol, allowing you to create, retrieve, update, delete Atom entries </TD> +</TR> +<TR> +<TD class="confluenceTd"> binding.comet </TD> +<TD class="confluenceTd"> 2.0-Beta1 </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> Waiting for community feedback <BR class="atl-forced-newline"> </TD> +<TD class="confluenceTd"> Support for communication between browser client and SCA components via Comet techniques <BR class="atl-forced-newline"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> binding.websocket </TD> +<TD class="confluenceTd"> 2.0-Beta3 </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> Waiting for community feedback <BR class="atl-forced-newline"> </TD> +<TD class="confluenceTd"> Support for communication between browser client and SCA components via websockets <BR class="atl-forced-newline"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> databinding-axiom </TD> +<TD class="confluenceTd"> ? </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> Support for AXIOM data binding </TD> +</TR> +<TR> +<TD class="confluenceTd"> databinding-jaxb </TD> +<TD class="confluenceTd"> ? </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> Support for JAXB data binding </TD> +</TR> +<TR> +<TD class="confluenceTd"> databinding-json </TD> +<TD class="confluenceTd"> 2.0-M4 <BR class="atl-forced-newline"> </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> Support for JSON data binding </TD> +</TR> +<TR> +<TD class="confluenceTd"> interface-java </TD> +<TD class="confluenceTd"> 2.0-M1 </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> Interfaces described with java interfaces </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-interfacewsdl.html" title="SCA Java interface.wsdl">interface.wsdl</A> </TD> +<TD class="confluenceTd"> 2.0-M1 </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> Interfaces described with WSDL definitions </TD> +</TR> +<TR> +<TD class="confluenceTd"> http-jetty </TD> +<TD class="confluenceTd"> 2.0-M2 <BR class="atl-forced-newline"> </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> The integration between Tuscany and the Jetty web container </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="sca-java-definitionsxml.html" title="SCA Java definitions.xml">definitions.xml</A> </TD> +<TD class="confluenceTd"> 2.0-M4 <BR class="atl-forced-newline"> </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> Work in Progress </TD> +<TD class="confluenceTd"> Defined intents, policy sets and binding defaults </TD> +</TR> +</TBODY></TABLE> +</DIV> + + +<H3><A name="SCAJavaExtensionsGuide-NonextensionOASISspecificationsupport"></A>Non-extension OASIS specification support</H3> + +<DIV class="table-wrap"> +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> Type </TH> +<TH class="confluenceTh"> Release Introduced </TH> +<TH class="confluenceTh"> OASIS Compliance </TH> +<TH class="confluenceTh"> Status </TH> +<TH class="confluenceTh"> Description </TH> +</TR> +<TR> +<TD class="confluenceTd"> Assembly </TD> +<TD class="confluenceTd"> 2.0-M1 </TD> +<TD class="confluenceTd"> <IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> SCA Assembly specification </TD> +</TR> +<TR> +<TD class="confluenceTd"> Java CAA </TD> +<TD class="confluenceTd"> 2.0-M1 </TD> +<TD class="confluenceTd"> <IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"> </TD> +<TD class="confluenceTd"> Stable </TD> +<TD class="confluenceTd"> SCA Java Common Annotations and APIs specification </TD> +</TR> +<TR> +<TD class="confluenceTd"> Policy </TD> +<TD class="confluenceTd"> 2.0-M1 </TD> +<TD class="confluenceTd"> 50% passing </TD> +<TD class="confluenceTd"> In pogress </TD> +<TD class="confluenceTd"> SCA Policy specification </TD> +</TR> +</TBODY></TABLE> +</DIV> + + </DIV> + + <DIV class="tabletitle"> + Children + <SPAN class="smalltext" id="show" style="display: inline;"> + <A href="javascript:showChildren()">Show Children</A></SPAN> + <SPAN class="smalltext" id="hide" style="display: none;"> + <A href="javascript:hideChildren()">Hide Children</A></SPAN> + </DIV> + <DIV class="greybox" id="children" style="display: none;"> + <A href="sca-java-implementationjava.html" title="SCA Java implementation.java">SCA Java implementation.java</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-java-implementationspring.html" title="SCA Java implementation.spring">SCA Java implementation.spring</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-java-implementationbpel.html" title="SCA Java implementation.bpel">SCA Java implementation.bpel</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-java-implementationosgi.html" title="SCA Java implementation.osgi">SCA Java implementation.osgi</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-java-implementationweb.html" title="SCA Java implementation.web">SCA Java implementation.web</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-java-implementationwidget.html" title="SCA Java implementation.widget">SCA Java implementation.widget</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-java-bindingws.html" title="SCA Java binding.ws">SCA Java binding.ws</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-java-bindingrmi.html" title="SCA Java binding.rmi">SCA Java binding.rmi</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-java-bindingjms.html" title="SCA Java binding.jms">SCA Java binding.jms</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-java-bindingejb.html" title="SCA Java binding.ejb">SCA Java binding.ejb</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-java-bindinghttp.html" title="SCA Java binding.http">SCA Java binding.http</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-java-bindingatom.html" title="SCA Java binding.atom">SCA Java binding.atom</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-java-bindingjsonrpc.html" title="SCA Java binding.jsonrpc">SCA Java binding.jsonrpc</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-java-bindinghttp-security-policy-section.html" title="SCA Java binding.http security policy section">SCA Java binding.http security policy section</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-java-interfacewsdl.html" title="SCA Java interface.wsdl">SCA Java interface.wsdl</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-java-definitionsxml.html" title="SCA Java definitions.xml">SCA Java definitions.xml</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="sca-java-bindingrest.html" title="SCA Java binding.rest">SCA Java binding.rest</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + </DIV> + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java Extensions Guide'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-implementationbpel.html b/site/trunk/site-publish/documentation-2x/sca-java-implementationbpel.html new file mode 100644 index 0000000000..1d824bb1af --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-implementationbpel.html @@ -0,0 +1,192 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java implementation.bpel : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java implementation.bpel">SCA Java implementation.bpel</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java implementation.bpel">SCA Java implementation.bpel</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java implementation.bpel</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964933"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964933">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964933"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964933">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964933"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964933">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H3><A name="SCAJavaimplementation.bpel-Introduction"></A>Introduction</H3> + +<P>This is a initial WS-BPEL component implementation that allows SCA runtime to invoke WS-BPEL executable processes in a SCA composition.<BR> +We are still working to finalize the Reference support, to allow your BPEL process to have partnerLinks pointing to SCA components.</P> + +<P>As for creating a SCA component, below is an sample SCDL</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<composite xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.osoa.org/xmlns/sca/1.0"</SPAN> +</SPAN> targetNamespace=<SPAN class="code-quote">"http:<SPAN class="code-comment">//bpel"</SPAN> +</SPAN> xmlns:hns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/implementation/bpel/example/helloworld"</SPAN> +</SPAN> name=<SPAN class="code-quote">"bpel"</SPAN>> + + <component name=<SPAN class="code-quote">"BPELHelloWorldComponent"</SPAN>> + <implementation.bpel process=<SPAN class="code-quote">"hns:HelloWorld"</SPAN>/> + </component> + +</composite> +</PRE> +</DIV></DIV> + + +<H3><A name="SCAJavaimplementation.bpel-WSBPELEngine"></A>WS-BPEL Engine</H3> + +<P>As for a WS-BPEL engine, we are using Apache ODE. In order to properly deploy a WS-BPEL process in ODE, a deployment descriptor like the one below should be suplied with your application :</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<deploy xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.apache.org/ode/schemas/dd/2007/03"</SPAN> +</SPAN> xmlns:tns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/implementation/bpel/example/helloworld"</SPAN> +</SPAN> xmlns:wns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/implementation/bpel/example/helloworld.wsdl"</SPAN>> +</SPAN> + + <process name=<SPAN class="code-quote">"tns:HelloWorld"</SPAN>> + <active><SPAN class="code-keyword">true</SPAN></active> + <provide partnerLink=<SPAN class="code-quote">"helloPartnerLink"</SPAN>> + <service name=<SPAN class="code-quote">"wns:HelloService"</SPAN> port=<SPAN class="code-quote">"HelloPort"</SPAN>/> + </provide> + </process> +</deploy> +</PRE> +</DIV></DIV> + +<P>For more information on these deployment descriptors, see documentation on <A href="http://ode.apache.org/creating-a-process.html" class="external-link" rel="nofollow">Deploying a process in ODE</A></P> + + +<H3><A name="SCAJavaimplementation.bpel-References"></A>References</H3> + +<P><A href="http://osoa.org/display/Main/SCA%20BPEL%20White%20Paper" class="external-link" rel="nofollow">SCA & BPEL white paper </A></P> + +<P><A href="http://osoa.org/download/attachments/35/SCA_ClientAndImplementationModelforBPEL_V100.pdf?version=1" class="external-link" rel="nofollow">SCA Client Implementation Model for BPEL v1.00 </A></P> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java implementation.bpel'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-implementationjava.html b/site/trunk/site-publish/documentation-2x/sca-java-implementationjava.html new file mode 100644 index 0000000000..5bf0190806 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-implementationjava.html @@ -0,0 +1,175 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java implementation.java : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java implementation.java">SCA Java implementation.java</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java implementation.java">SCA Java implementation.java</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java implementation.java</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964926"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964926">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964926"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964926">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964926"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964926">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H3><A name="SCAJavaimplementation.java-%3Cimplementation.java%3E"></A><implementation.java></H3> + + +<P>The Tuscany Java SCA runtime supports components implemented in Java by using the <implementation.java> SCDL extension.</P> + +<P>The Java component implementation SCDL has the following format:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <implementation.java class=<SPAN class="code-quote">"NCName"</SPAN> /> +</PRE> +</DIV></DIV> + +<P>Where the class attribute is the fully qualified name of the Java class of the implementation.</P> + +<P>The Java component implementtaion is one of the SCA extensions which is being formalized in the OASIS Open Composite Services Architecture with a published <A href="http://www.oasis-opencsa.org/sca-java-annotations" class="external-link" rel="nofollow">specifications </A> document.</P> + +<H4><A name="SCAJavaimplementation.java-someexamples"></A>some examples</H4> + +<P>This example shows a simple composite with a component that uses <implemantation.java>:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<composite xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.osoa.org/xmlns/sca/1.0"</SPAN> +</SPAN> targetNamespace=<SPAN class="code-quote">"http:<SPAN class="code-comment">//sample"</SPAN> +</SPAN> xmlns:sample=<SPAN class="code-quote">"http:<SPAN class="code-comment">//sample"</SPAN> +</SPAN> name=<SPAN class="code-quote">"SampleComposite"</SPAN>> + + <component name=<SPAN class="code-quote">"SampleComponent"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"sample.SampleImpl"</SPAN>/> + </component> + +</composite> +</PRE> +</DIV></DIV> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java implementation.java'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-implementationosgi.html b/site/trunk/site-publish/documentation-2x/sca-java-implementationosgi.html new file mode 100644 index 0000000000..2d5f0d8b44 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-implementationosgi.html @@ -0,0 +1,206 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java implementation.osgi : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java implementation.osgi">SCA Java implementation.osgi</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java implementation.osgi">SCA Java implementation.osgi</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java implementation.osgi</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964937"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964937">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964937"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964937">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964937"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964937">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + +<H3><A name="SCAJavaimplementation.osgi-%3Cimplementation.osgi%3E"></A><implementation.osgi></H3> + +<P>Tuscany enables OSGi bundles to be used as the implementation of SCA components by using the <implementation.osgi/> SCDL extension. OSGi services registered in the OSGi service registry either using OSGi declarative services or through the OSGi procedural services API can be exposed as services of the SCA component.</P> + +<P>The OSGi component implementation SCDL has the following format:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<implementation.osgi + bundleSymbolicName="" + [bundleVersion=""] + [classes=""] + [imports=""]> + <properties service="">...</properties>* + <properties reference="">...</properties>* + <properties serviceCallback="">...</properties>* + <properties referenceCallback="">...</properties>* +</implementation.osgi> +</PRE> +</DIV></DIV> +<P>The bundle is identified by its symbolic name, which is used to locate the bundle in the SCA contribution. The version of the bundle can be optionally specified if multiple versions of the bundle are present in the contribution.</P> + +<P>The list of classes in the bundle which contain SCA annotations that should be processed by the SCA runtime can be specified in the classes attribute of <implementation.osgi/>. If this list is not provided, only the implementation classes of service instances will be scanned for SCA annotations. A list of dependent bundles can also be specified in the imports attribute. If provided, these bundles are installed and started before the implementation bundle.</P> + +<P>OSGi services registered in the OSGi registry can have properties associated with the service registration. These properties can be used to lookup services in the registry. The properties of services, references and callbacks associated with OSGi services can be optionally specified. These will be used to create the filter for locating these services in the OSGi registry. </P> + +<P>A component type file should be provided for SCA components using an OSGi bundle as its implementation. This file should have the same base name and location as the bundle.</P> + +<H4><A name="SCAJavaimplementation.osgi-Example%3A"></A>Example:</H4> + +<P>This example shows a simple composite with two components that use <implementation.osgi/>:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<composite xmlns=http:<SPAN class="code-comment">//www.osoa.org/xmlns/sca/1.0 +</SPAN> targetNamespace=http:<SPAN class="code-comment">//helloworld +</SPAN> name=<SPAN class="code-quote">"HelloWorld"</SPAN>> + + <component name=<SPAN class="code-quote">"HelloWorldClient"</SPAN>> + <implementation.osgi xmlns=http:<SPAN class="code-comment">//tuscany.apache.org/xmlns/sca/1.0 +</SPAN> bundleSymbolicName=<SPAN class="code-quote">"helloworld.HelloWorldClient"</SPAN> + bundleVersion=<SPAN class="code-quote">"1.0.0"</SPAN>> + <properties reference=<SPAN class="code-quote">"helloWorldService"</SPAN>> + <property name=<SPAN class="code-quote">"language"</SPAN>>English</property> + </properties> + </implementation.osgi> + <reference name=<SPAN class="code-quote">"helloWorldService"</SPAN> target=<SPAN class="code-quote">"HelloWorldService"</SPAN>/> + </component> + <component name=<SPAN class="code-quote">"HelloWorldService"</SPAN>> + <implementation.osgi xmlns=http:<SPAN class="code-comment">//tuscany.apache.org/xmlns/sca/1.0 +</SPAN> bundleSymbolicName=<SPAN class="code-quote">"helloworld.HelloWorldService"</SPAN> + bundleVersion=<SPAN class="code-quote">"1.0.0"</SPAN>> + <properties service=<SPAN class="code-quote">"HelloWorldService"</SPAN>> + <property name=<SPAN class="code-quote">"language"</SPAN>>English</property> + </properties> + </implementation.osgi> + </component> +</composite> +</PRE> +</DIV></DIV> +<P>This example shows two components which use OSGi implementation. Each component implementation is an OSGi bundle, and one of the services from each bundle is exposed through SCA. The bundles are identified using their symbolic name and version which are values of the manifest attributes Bundle-SymbolicName and Bundle-Version respectively in the bundle jar files. The bundle jar files can either be a contribution in the SCA domain, or contained in a contribution in the SCA domain.</P> + +<P>The properties specified for the reference of HelloWorldClient are used to lookup HelloWorldService in the OSGi registry. These properties should match the properties specified for the service of HelloWorldService. </P> + +<P>The OSGi bundles should register the services exposed through SCA when the bundle is activated. Services are registered using standard OSGi service registration mechanism. References should be looked up in the OSGi service registry using registry lookup. SCA runtime does not perform reference injection for OSGi-based component implementation. Reference lookup should always use the service registered with the highest ranking to ensure that SCA wiring and scope are maintained. When OSGi declarative services are used, service registration and reference binding are performed by the OSGi declarative services runtime. References from components using <implementation.osgi/> can be wired to non-OSGi services, and non-OSGi components can access OSGi services. For example, either of the two components in this example can use <implementation.java/> as their implementation.</P> + +<P>Default scope for OSGi-based components is COMPOSITE. For scopes other than composite scope, a service factory should be registered in the OSGi service registry. Service factories should also be used for OSGi services which are used in multiple SCA components with different component properties.</P> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java implementation.osgi'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-implementationspring.data/Spring Tuscany.pptx b/site/trunk/site-publish/documentation-2x/sca-java-implementationspring.data/Spring Tuscany.pptx Binary files differnew file mode 100644 index 0000000000..ce80319c20 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-implementationspring.data/Spring Tuscany.pptx diff --git a/site/trunk/site-publish/documentation-2x/sca-java-implementationspring.html b/site/trunk/site-publish/documentation-2x/sca-java-implementationspring.html new file mode 100644 index 0000000000..50948d1cf4 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-implementationspring.html @@ -0,0 +1,461 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java implementation.spring : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java implementation.spring">SCA Java implementation.spring</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java implementation.spring">SCA Java implementation.spring</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java implementation.spring</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964931"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964931">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964931"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964931">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964931"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964931">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H2><A name="SCAJavaimplementation.spring-%3Cimplementation.spring%3E"></A><implementation.spring></H2> + +<P>The Tuscany Java SCA runtime supports components implemented with Spring Framework by using the <implementation.spring> SCDL extension.</P> + +<P>The <A href="http://www.osoa.org/download/attachments/35/SCA_SpringComponentImplementationSpecification-V100.pdf?version=1" class="external-link" rel="nofollow">Spring specification</A> defines how Spring and SCA work with one another. The Spring Component implementation is one of the SCA extensions which is being formalized in the OASIS Open Composite Services Architecture with a published <A href="http://www.oasis-opencsa.org/sca-spring" class="external-link" rel="nofollow">specifications </A> document.</P> + +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/lightbulb_on.gif" height="16" width="16" align="absmiddle" alt="" border="0"> In <A href="http://static.springframework.org/spring/docs/2.5.5/reference" class="external-link" rel="nofollow">Spring Framework</A> an ApplicationContext is the main interface to the Spring IoC container. It is used to look up objects. It can be viewed as the Java object representation of the application-Context.xml file that contains the bean definitions.</P> + +<P>The integration with Spring will be at the SCA Composite level, where a Spring application context provides a complete composite, exposing services and using references via SCA. This means that a Spring application context defines the internal structure of a SCA composite implementation.</P> + +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/lightbulb_on.gif" height="16" width="16" align="absmiddle" alt="" border="0"> Tuscany uses Spring Framework 3.0.x-RELEASE (requires Java 1.4+)</P> + +<H3><A name="SCAJavaimplementation.spring-HowSpringApplicationContextisusedasSCACompositeImplementation%3F"></A>How Spring Application Context is used as SCA Composite Implementation?</H3> + +<UL> + <LI>A Spring Application Context is used as an implementation within an SCA composite component.</LI> + <LI>A component that uses Spring for an implementation can wire SCA services and references without introducing SCA metadata into the Spring configuration.<BR> +The Spring context knows very little about the SCA environment.</LI> + <LI>SCA runtime enforces SCA policies and Spring Application Context is unaware of it.</LI> + <LI>It should be possible to generate an SCA Composite from any Spring context and use that composite within an SCA assembly.<BR> +<EM>This feature is under review by the OASIS Specs Team, yet to be implemented in Tuscany</EM></LI> +</UL> + + +<H3><A name="SCAJavaimplementation.spring-HowtoUseSpringComponentImplementation%3F"></A>How to Use Spring Component Implementation?</H3> + +<P>The Spring component implementation SCDL has the following format:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> <implementation.spring location=<SPAN class="code-quote">"targetURI"</SPAN> /> +</PRE> +</DIV></DIV> + +<P>Where the location attribute of that element specifies the target uri of an archive file or directory or the fully qualified path that contains the Spring application context files.</P> + +<P>An example of all the three ways of specifying the target uri in the location attribute is shown below</P> + +<P>a) Specifying Fully Qualified Path:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> <implementation.spring location=<SPAN class="code-quote">"./spring/application-context.xml"</SPAN> /> +</PRE> +</DIV></DIV> + +<P>b) Specifying a Directory:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> <implementation.spring location=<SPAN class="code-quote">"./spring"</SPAN> /> +</PRE> +</DIV></DIV> + +<P>Here the target uri specifies the resource as a directory named "spring", where all the spring related files are available.</P> + +<P>c) Specifying an Archive file:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> <implementation.spring location=<SPAN class="code-quote">"./spring.jar"</SPAN> /> +</PRE> +</DIV></DIV> + +<P>Here the target uri specifies the resource as an archive file name "spring.jar", where all the spring related files are available.</P> + +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/lightbulb_on.gif" height="16" width="16" align="absmiddle" alt="" border="0"> In case of b) and c), If the resource identified by the location attribute is an archive file then the file META-INF/MANIFEST.MF is read from the archive. If the location URI identifies a directory, then META-INF/MANIFEST.MF must exist underneath that directory.</P> + +<P>If the manifest file contains a header "Spring-Context" of the format: <INS>Spring-Context ::= path ( ';' path )*</INS></P> + +<P>Where path is a relative path with respect to the location URI, then the set of paths specified in the header identify the context configuration files. If there is no MANIFEST.MF file or no Spring-Context header within that file, then the default behavior is to build an application context using application-context.xml file in the META-INF/spring directory.</P> + +<H3><A name="SCAJavaimplementation.spring-HowSpringApplicationContextisAwareofBeansusedinSCAcomposition%3F"></A>How Spring Application Context is Aware of Beans used in SCA composition?</H3> + +<P>Your existing Spring Application context should define the <A href="http://www.springframework.org/schema/sca" class="external-link" rel="nofollow">http://www.springframework.org/schema/sca</A> namespace in order to make the Spring aware of the SCA related beans. This is shown below.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"><beans xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.springframework.org/schema/beans"</SPAN> +</SPAN> xmlns:xsi=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.w3.org/2001/XMLSchema-instance"</SPAN> +</SPAN> xmlns:sca=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.springframework.org/schema/sca"</SPAN> +</SPAN> xsi:schemaLocation=" + http:<SPAN class="code-comment">//www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd +</SPAN> http:<SPAN class="code-comment">//www.springframework.org/schema/sca http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd"> +</SPAN> + <sca:service name=<SPAN class="code-quote">"StockQuoteService"</SPAN> + type=<SPAN class="code-quote">"bigbank.stockquote.StockQuoteService"</SPAN> target=<SPAN class="code-quote">"StockQuoteServiceBean"</SPAN>/> + + <bean id=<SPAN class="code-quote">"StockQuoteServiceBean"</SPAN> class=<SPAN class="code-quote">"bigbank.stockquote.StockQuoteImpl"</SPAN>> + </bean> +</beans> +</PRE> +</DIV></DIV> + + +<H3><A name="SCAJavaimplementation.spring-HandlingmultipleSpringApplicationContexts"></A>Handling multiple Spring Application Contexts</H3> + +<P>Tuscany supports the following configurations to handle multiple Spring Application Context XML files.</P> + +<H4><A name="SCAJavaimplementation.spring-Using%3Cimport%3EElement%3A"></A>Using <import> Element:</H4> + +<P>Each import element points to an application context xml file.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"><beans> + <<SPAN class="code-keyword">import</SPAN> resource=<SPAN class="code-quote">"services.xml"</SPAN>/> + <<SPAN class="code-keyword">import</SPAN> resource=<SPAN class="code-quote">"resources/messageSource.xml"</SPAN>/> + + <<SPAN class="code-keyword">import</SPAN> resource=<SPAN class="code-quote">"/resources/themeSource.xml"</SPAN>/> + + <bean id=<SPAN class="code-quote">"bean1"</SPAN> class=<SPAN class="code-quote">"..."</SPAN>/> + <bean id=<SPAN class="code-quote">"bean2"</SPAN> class=<SPAN class="code-quote">"..."</SPAN>/> +</beans> +</PRE> +</DIV></DIV> + +<H4><A name="SCAJavaimplementation.spring-UsingClassPathXmlApplicationContextBeanDefinition%3A"></A>Using ClassPathXmlApplicationContext Bean Definition:</H4> + +<P>Each list value points to an application context xml file.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"><bean id=<SPAN class="code-quote">"beanRefFactory"</SPAN> class=<SPAN class="code-quote">"org.springframework.context.support.ClassPathXmlApplicationContext"</SPAN>> + <constructor-arg> + <list> + <value>services.xml</value> + <value>resources/messageSource.xml</value> + </list> + </constructor-arg> +</bean> +</PRE> +</DIV></DIV> + +<H3><A name="SCAJavaimplementation.spring-SomeExamples%3A"></A>Some Examples:</H3> + +<H4><A name="SCAJavaimplementation.spring-SpringBigBankSample"></A>Spring BigBank Sample</H4> + +<P>The spring-bigbank sample demonstrates most of the functionality that is specified in the <A href="http://www.oasis-opencsa.org/sca-spring" class="external-link" rel="nofollow">specifications </A>.</P> + +<P>See the <A href="http://svn.apache.org/repos/asf/tuscany/java/sca/samples/simple-bigbank-spring/" class="external-link" rel="nofollow">simple-bigbank-spring </A> sample for a complete example.</P> + +<H4><A name="SCAJavaimplementation.spring-DirectuseofSCAreferenceswithinaSpringconfiguration"></A>Direct use of SCA references within a Spring configuration</H4> + +<P>See the <A href="http://svn.apache.org/repos/asf/tuscany/java/sca/samples/spring-bigbank-calculator/" class="external-link" rel="nofollow">spring-bigbank-calculator </A> sample for a complete example of using direct SCA references within Spring configuration.</P> + +<P>The properties like addService, subtractService, multiplyService and divideService defined in the Spring configuration as shown below</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"><beans> + + <sca:service name=<SPAN class="code-quote">"CalculatorService"</SPAN> + type=<SPAN class="code-quote">"bigbank.calculator.CalculatorService"</SPAN> target=<SPAN class="code-quote">"CalculatorServiceBean"</SPAN>/> + + <bean id=<SPAN class="code-quote">"CalculatorServiceBean"</SPAN> class=<SPAN class="code-quote">"bigbank.calculator.CalculatorServiceImpl"</SPAN>> + <!-- Here are some implicit references - a property with a ref not satisifed within the + * Spring application context. + --> + <property name=<SPAN class="code-quote">"addService"</SPAN> ref=<SPAN class="code-quote">"addService"</SPAN>/> + <property name=<SPAN class="code-quote">"subtractService"</SPAN> ref=<SPAN class="code-quote">"subtractService"</SPAN>/> + <property name=<SPAN class="code-quote">"multiplyService"</SPAN> ref=<SPAN class="code-quote">"multiplyService"</SPAN>/> + <property name=<SPAN class="code-quote">"divideService"</SPAN> ref=<SPAN class="code-quote">"divideService"</SPAN>/> + </bean> + +</beans> +</PRE> +</DIV></DIV> + +<P>are the direct representation of the SCA references defined in the composite file.</P> + +<H4><A name="SCAJavaimplementation.spring-ExplicitdeclarationofSCArelatedbeansinsideaSpringApplicationContext"></A>Explicit declaration of SCA related beans inside a Spring Application Context</H4> + +<P>It is also possible to explicitly declare SCA-related beans inside a Spring configuration to proxy SCA references. The primary reason you may do this is to enable the Spring container to decorate the bean (using Spring AOP for example).</P> + +<P>The properties checkingAccountService, calculatorService and stockQuoteService defined in the Spring configuration as shown below</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"><beans> + <bean id=<SPAN class="code-quote">"AccountServiceBean"</SPAN> class=<SPAN class="code-quote">"bigbank.account.AccountServiceImpl"</SPAN>> + <property name=<SPAN class="code-quote">"calculatorService"</SPAN> ref=<SPAN class="code-quote">"calculatorService"</SPAN>/> + <property name=<SPAN class="code-quote">"stockQuoteService"</SPAN> ref=<SPAN class="code-quote">"stockQuoteService"</SPAN>/> + <property name=<SPAN class="code-quote">"checkingAccountService"</SPAN> ref=<SPAN class="code-quote">"checkingAccountService"</SPAN>/> + + <!-- Here are some implicit references & properties - a property with a ref not satisifed + * within the Spring application context. + --> + <property name=<SPAN class="code-quote">"savingsAccountService"</SPAN> ref=<SPAN class="code-quote">"savingsAccountService"</SPAN>/> + <property name=<SPAN class="code-quote">"stockAccountService"</SPAN> ref=<SPAN class="code-quote">"stockAccountService"</SPAN>/> + <property name=<SPAN class="code-quote">"currency"</SPAN> value=<SPAN class="code-quote">"EURO"</SPAN>/> + </bean> + + <sca:reference name=<SPAN class="code-quote">"checkingAccountService"</SPAN> type=<SPAN class="code-quote">"bigbank.account.checking.CheckingAccountService"</SPAN>/> + + <sca:reference name=<SPAN class="code-quote">"calculatorService"</SPAN> type=<SPAN class="code-quote">"bigbank.calculator.CalculatorService"</SPAN>/> + + <sca:reference name=<SPAN class="code-quote">"stockQuoteService"</SPAN> type=<SPAN class="code-quote">"bigbank.stockquote.StockQuoteService"</SPAN>/> +</beans> +</PRE> +</DIV></DIV> + +<P>can be declared explicit as SCA beans in Spring Application Context using the <sca:reference> element.</P> + +<P>See the <A href="http://svn.apache.org/repos/asf/tuscany/java/sca/samples/simple-bigbank-spring/" class="external-link" rel="nofollow">simple-bigbank-spring </A> sample for a complete example of using explicit declaration of SCA related beans.</P> + +<H4><A name="SCAJavaimplementation.spring-UsingSCABindingsforSpringImplementation"></A>Using SCA Bindings for Spring Implementation</H4> + +<P>We know that a component that uses Spring for an implementation can wire SCA services and references without introducing SCA metadata into the Spring configuration. The Spring context knows very little about the SCA environment. Hence the SpringComponent implementation remains the same as shown from some of the examples above but different bindings are chosen at the SCA Composite level as shown below.</P> + +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/lightbulb_on.gif" height="16" width="16" align="absmiddle" alt="" border="0"> All kind of bindings supported by SCA can be used for Spring Implementation as the bindings are independent of Spring context. Few examples can be seen below.</P> + +<H5><A name="SCAJavaimplementation.spring-WorkingwithSCAWebServicesBinding"></A>Working with SCA WebServices Binding</H5> + +<P>Declaring Service</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"><composite name=<SPAN class="code-quote">"StockQuote"</SPAN>> + + <service name=<SPAN class="code-quote">"StockQuoteService"</SPAN> promote=<SPAN class="code-quote">"StockQuoteServiceComponent"</SPAN>> + <<SPAN class="code-keyword">interface</SPAN>.java <SPAN class="code-keyword">interface</SPAN>=<SPAN class="code-quote">"bigbank.stockquote.StockQuoteService"</SPAN>/> + <binding.ws uri=<SPAN class="code-quote">"http:<SPAN class="code-comment">//localhost:8081/services/StockQuoteWebService"</SPAN>/> +</SPAN> </service> + + <component name=<SPAN class="code-quote">"StockQuoteServiceComponent"</SPAN>> + <implementation.spring location=<SPAN class="code-quote">"META-INF/spring/StockQuoteService-context.xml"</SPAN>/> + </component> + +</composite> +</PRE> +</DIV></DIV> + +<P>Declaring Reference in a component which consumes the Service declared above</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"><component name=<SPAN class="code-quote">"AccountServiceComponent"</SPAN>> + <implementation.spring location=<SPAN class="code-quote">"spring-context/Account-spring-context.xml"</SPAN>/> + + <reference name=<SPAN class="code-quote">"stockQuoteService"</SPAN>> + <binding.ws uri=<SPAN class="code-quote">"http:<SPAN class="code-comment">//localhost:8081/services/StockQuoteWebService"</SPAN>/> +</SPAN> </reference> +</component> +</PRE> +</DIV></DIV> + +<P>See the <A href="http://svn.apache.org/repos/asf/tuscany/java/sca/samples/spring-bigbank-stockquote/" class="external-link" rel="nofollow">spring-bigbank-stockquote </A> sample for a complete example of using SCA Web Service binding.</P> + +<H5><A name="SCAJavaimplementation.spring-WorkingwithSCARMIBinding"></A>Working with SCA RMI Binding</H5> + +<P>See the <A href="http://svn.apache.org/repos/asf/tuscany/java/sca/samples/spring-bigbank-calculator/" class="external-link" rel="nofollow">spring-bigbank-calculator </A> sample for a complete example of using SCA RMI binding.</P> + +<H3><A name="SCAJavaimplementation.spring-AccesstheSpringApplicationContextfromeverywhereinyourApplication"></A>Access the Spring-ApplicationContext from everywhere in your Application</H3> + +<P>Tuscany creates an custom Application context with an implementation logic for all SCA related beans like <sca:service>, <sca:reference> and <sca:properties> available in the Spring Application Context.</P> + +<P>To access the application context in your application we recommend to use the suggested approach in this article.<BR> +<A href="http://blog.jdevelop.eu/2008/07/06/access-the-spring-applicationcontext-from-everywhere-in-your-application/" class="external-link" rel="nofollow">http://blog.jdevelop.eu/2008/07/06/access-the-spring-applicationcontext-from-everywhere-in-your-application/</A></P> + + +<H3><A name="SCAJavaimplementation.spring-NonSupportedFeaturesinTuscany"></A>Non-Supported Features in Tuscany</H3> + +<P>Currently Tuscany does not support implicit SCA references and properties for scenario 1 & 2 in spring context as shown below.</P> + +<H5><A name="SCAJavaimplementation.spring-Scenario1%3AUsingimplicitSCAReferences%26PropertiesforConstructors"></A>Scenario 1: Using implicit SCA References & Properties for Constructors</H5> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"><constructor-arg><ref bean=<SPAN class="code-quote">"mySCAService1"</SPAN>/></constructor-arg> +<constructor-arg><ref bean=<SPAN class="code-quote">"mySCAService2"</SPAN>/></constructor-arg> +</PRE> +</DIV></DIV> + +<P>In the above scenario, particularly in cases where the spring bean has defined only one constructor, implicit references / properties can be supported when the contructor-arg element specifies the type of the SCA reference/property that its trying to consume by specifying a type attribute in the contructor-arg OR when the appropriate index attribute is specified in the constructor-arg element.</P> + +<P>In cases where the spring bean has defined multiple contructors, its mandatory that all the SCA references / properties used by the constructors should be defined explicitly. And when the constructor-arg uses SCA reference/property within collections, those should be defined explicitly.</P> + +<H5><A name="SCAJavaimplementation.spring-Scenario2%3AUsingimplicitSCAReferences%26PropertiesinList%2CMapandSetofbeanproperties."></A>Scenario 2: Using implicit SCA References & Properties in List, Map and Set of bean properties.</H5> + +<P>Using implicit SCA references and properties within collection as shown in the below code sample will not be supported by Tuscany. Instead we recommed to use explicit SCA references/properties in such cases.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"><bean id=<SPAN class="code-quote">"moreComplexObject"</SPAN> class=<SPAN class="code-quote">"example.ComplexObject"</SPAN>> + <!-- results in a setSomeList(java.util.List) call --> + <property name=<SPAN class="code-quote">"someList"</SPAN>> + <list> + <value>a list element followed by a reference</value> + <ref bean=<SPAN class="code-quote">"mySCAService1"</SPAN> /> + </list> + </property> + <!-- results in a setSomeMap(java.util.Map) call --> + <property name=<SPAN class="code-quote">"someMap"</SPAN>> + <map> + <entry> + <key> + <value>an entry</value> + </key> + <value>just some string</value> + </entry> + <entry> + <key> + <value>a ref</value> + </key> + <ref bean=<SPAN class="code-quote">"mySCAService2"</SPAN> /> + </entry> + </map> + </property> + <!-- results in a setSomeSet(java.util.Set) call --> + <property name=<SPAN class="code-quote">"someSet"</SPAN>> + <set> + <value>just some string</value> + <ref bean=<SPAN class="code-quote">"mySCAService3"</SPAN> /> + </set> + </property> +</bean> +</PRE> +</DIV></DIV> + +<H5><A name="SCAJavaimplementation.spring-Scenario3%3AExposingSCAServicefromSpringBeanthatimplementsmultipleinterfaces."></A>Scenario 3: Exposing SCA Service from Spring Bean that implements multiple interfaces.</H5> + +<P>Raised as Specification Issue: <A href="http://www.osoa.org/jira/browse/JAVA-59" class="external-link" rel="nofollow">http://www.osoa.org/jira/browse/JAVA-59</A></P> + + +<H3><A name="SCAJavaimplementation.spring-IntegrationwithSpringforWebApplications%28includingSpringMVC%29"></A>Integration with Spring for Web Applications (including Spring MVC)</H3> + + + +<P><A href="sca-java-implementationspring.data/Spring%20Tuscany.pptx">Presentation</A></P> + + +<H3><A name="SCAJavaimplementation.spring-SpringSCANamespaceschema"></A>Spring SCA Namespace schema</H3> + +<P>The spring-sca.xsd can be found at the following location: <A href="http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd" class="external-link" rel="nofollow">http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd</A></P> + + +<H3><A name="SCAJavaimplementation.spring-References"></A>References</H3> + +<P>Spring Framework - <A href="http://static.springframework.org/spring/docs/2.5.5/reference/index.html" class="external-link" rel="nofollow">http://static.springframework.org/spring/docs/2.5.5/reference/index.html</A></P> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java implementation.spring'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-implementationweb.html b/site/trunk/site-publish/documentation-2x/sca-java-implementationweb.html new file mode 100644 index 0000000000..4c4911c090 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-implementationweb.html @@ -0,0 +1,364 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java implementation.web : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java implementation.web">SCA Java implementation.web</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java implementation.web">SCA Java implementation.web</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java implementation.web</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964940"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964940">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964940"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964940">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964940"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964940">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + +<H3><A name="SCAJavaimplementation.web-%3Cimplementation.web%3E"></A><implementation.web></H3> + +<P>The Tuscany Java SCA runtime supports components implemented as JEE web modules by using the <implementation.web> SCDL extension. Implementation.web is one of the SCA extensions being formalized in the OASIS Open Composite Services Architecture with a published <A href="http://www.oasis-open.org/committees/download.php/28798/SCA_JAVAEE_Integration_V100.pdf" class="external-link" rel="nofollow">specification </A> document.</P> + +<P>The web component implementation SCDL has the following format:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <implementation.web web-uri=<SPAN class="code-quote">"<module name>"</SPAN> /> +</PRE> +</DIV></DIV> + +<P>Implementation.web can be used by components such as Servlets, JSPs, and Web 2.0 style html pages. How it works depends on the way the Tuscany runtime is being used.</P> + +<H4><A name="SCAJavaimplementation.web-Usingimplementation.webwithServlets%2CFilters%2CandEventlisteners"></A>Using implementation.web with Servlets, Filters, and Event listeners</H4> + +<P>JEE Servlets, Filters, and Event listeners may acquire references to the services wired to a component which use implementation.web as shown in the following code snippets.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<component name=<SPAN class="code-quote">"WebClient"</SPAN>> + <implementation.web web-uri=""/> + <reference name=<SPAN class="code-quote">"service"</SPAN> target=<SPAN class="code-quote">"HelloworldService"</SPAN>/> +</component> +</PRE> +</DIV></DIV> + +<P>Then when using a JEE container with SCA integration Servlets, Filters, and Event listeners can use annotations to acquire references to the services wired to the component as shown in the following Servlet code snippet (note the Servlet field name 'service' matches the reference name in the SCDL):</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">public</SPAN> class HelloworldServlet <SPAN class="code-keyword">extends</SPAN> HttpServlet { + + @Reference + <SPAN class="code-keyword">protected</SPAN> HelloworldService service; + + . . . +} +</PRE> +</DIV></DIV> + +<P>When the container does not have SCA integration then injection via annotations does not work, so to work around this the services need to be manually got from the ComponentContext which may be obtained from the application context. This is shown in the following code snippet:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">public</SPAN> class HelloworldServlet <SPAN class="code-keyword">extends</SPAN> HttpServlet { + + <SPAN class="code-keyword">public</SPAN> void init(ServletConfig config) { + ComponentContext context = (ComponentContext)config.getServletContext().getAttribute(<SPAN class="code-quote">"org.osoa.sca.ComponentContext"</SPAN>); + HelloworldService service = context .getService(HelloworldService.class, <SPAN class="code-quote">"service"</SPAN>); + . . . + } + + . . . +} +</PRE> +</DIV></DIV> + +<P>See the <A href="https://svn.apache.org/repos/asf/tuscany/branches/sca-java-1.x/samples/helloworld-servlet/" class="external-link" rel="nofollow">helloworld-servlet</A> sample for the complete code of the above Servlet example.</P> + +<H4><A name="SCAJavaimplementation.web-Usingimplementation.webwithJSPs"></A>Using implementation.web with JSPs</H4> + +<P>A JSP tag library is available to expose SCA components in JSP pages. To use SCA references within a JSP use a taglib to include the SCA tags and define the reference field with the reference tag. </P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<component name=<SPAN class="code-quote">"WebClient"</SPAN>> + <implementation.web web-uri=""/> + <reference name=<SPAN class="code-quote">"service"</SPAN> target=<SPAN class="code-quote">"HelloworldService"</SPAN>/> +</component> +</PRE> +</DIV></DIV> + +<P>In the .jsp file:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<%@ taglib uri=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.osoa.org/sca/sca_jsp.tld"</SPAN> prefix=<SPAN class="code-quote">"sca"</SPAN> %> +</SPAN><sca:reference name=<SPAN class="code-quote">"service"</SPAN> type=<SPAN class="code-quote">"sample.HelloworldService"</SPAN> /> + +<html> + <body > + <%= service.sayHello(<SPAN class="code-quote">"world"</SPAN>) %> + </body> +</html> +</PRE> +</DIV></DIV> + +<P>See the <A href="https://svn.apache.org/repos/asf/tuscany/branches/sca-java-1.x/samples/helloworld-jsp/" class="external-link" rel="nofollow">helloworld-jsp</A> sample for the complete code of the above JSP example.</P> + +<H4><A name="SCAJavaimplementation.web-Usingimplementation.webwithWeb2.0stylebrowserclients"></A>Using implementation.web with Web 2.0 style browser clients</H4> + +<P>Web 2.0 style pages can invoke SCA services by making RPC calls from the remote browser client to the service-side SCA service. To do this the HTML page includes Javascript code to import the SCA ComponentContext and then gets service proxys from that ComponentContext. The org.osoa.sca.componentContext.js script is generated by Tuscany when a component uses implementation.web.</P> + +<P>In the SCDL the reference needs to specify one of the Tuscany Web2.0 bindings such as binding.jsonrpc or binding.dwr. <BR> +(TODO: could this be avoided - something like make binding.jsonrpc the default sca binding for web2.0 clients?) </P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<component name=<SPAN class="code-quote">"WebClient"</SPAN>> + <implementation.web web-uri=""/> + <reference name=<SPAN class="code-quote">"service"</SPAN> target=<SPAN class="code-quote">"HelloworldService"</SPAN>> + <tuscany:binding.jsonrpc /> + </reference> +</component> +</PRE> +</DIV></DIV> + +<P>In the html page:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<html> + <head> + + <script type=<SPAN class="code-quote">"text/javascript"</SPAN> src=<SPAN class="code-quote">"org.osoa.sca.componentContext.js"</SPAN>></script> + + <script language=<SPAN class="code-quote">"JavaScript"</SPAN>> + + function callSayHello() { + componentContext.getService(<SPAN class="code-quote">"service"</SPAN>).sayHello( + document.getElementById('name').value, + function(reply) { + document.getElementById('result').innerHTML=reply; + }); + } + + </script> + + </head> + <body > + + . . . + + <input type=<SPAN class="code-quote">"text"</SPAN> id=<SPAN class="code-quote">"name"</SPAN> width=<SPAN class="code-quote">"10"</SPAN>> + + <button name=<SPAN class="code-quote">"submit"</SPAN> onclick=<SPAN class="code-quote">"callSayHello()"</SPAN>>Say hello</button> + + <div id='result'></div> + + . . . + + </body> +</html> +</PRE> +</DIV></DIV> + +<P>See the <A href="https://svn.apache.org/repos/asf/tuscany/branches/sca-java-1.x/samples/samples/helloworld-web/" class="external-link" rel="nofollow">helloworld-web</A> sample for the complete code of the above example.</P> + +<P><IMG class="emoticon" src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" height="16" width="16" align="absmiddle" alt="" border="0"> The following on Web 2.0 callbacks is not yet fully implemented, describing here to encourage feedback </P> + +<P>Tuscany Web 2.0 clients using implementation.web support SCA asynchronous callbacks using what is known as <A href="http://en.wikipedia.org/wiki/Comet_(programming)" class="external-link" rel="nofollow">Comet or Reverse Ajax</A>. The only Tuscany binding that currently supports this in binding.dwr.</P> + +<P>The following shows the previous sample changed to use callbacks to receive the replies. A callback binding is added to the reference in the SCDL and the callback function is defined as a seperate Javascript function defined by the client and attached to the service proxy object. </P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<component name=<SPAN class="code-quote">"WebClient"</SPAN>> + <implementation.web web-uri=""/> + <reference name=<SPAN class="code-quote">"service"</SPAN> target=<SPAN class="code-quote">"HelloworldService"</SPAN>> + <tuscany:binding.dwr /> + <callback> + <tuscany:binding.dwr /> + </callback> + </reference> +</component> +</PRE> +</DIV></DIV> + +<P>In the html page:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<html> + <head> + + <script type=<SPAN class="code-quote">"text/javascript"</SPAN> src=<SPAN class="code-quote">"org.osoa.sca.componentContext.js"</SPAN>></script> + + <script language=<SPAN class="code-quote">"JavaScript"</SPAN>> + + componentContext.getService(<SPAN class="code-quote">"service"</SPAN>).sayHelloCallback = + function(reply) { + document.getElementById('result').innerHTML=reply; + }; + + function callSayHello() { + componentContext.getService(<SPAN class="code-quote">"service"</SPAN>).sayHello(document.getElementById('name').value); + } + + </script> + + </head> + <body > + + . . . + + <input type=<SPAN class="code-quote">"text"</SPAN> id=<SPAN class="code-quote">"name"</SPAN> width=<SPAN class="code-quote">"10"</SPAN>> + + <button name=<SPAN class="code-quote">"submit"</SPAN> onclick=<SPAN class="code-quote">"callSayHello()"</SPAN>>Say hello</button> + + <div id='result'></div> + + . . . + + </body> +</html> +</PRE> +</DIV></DIV> + +<P>See the <A href="https://svn.apache.org/repos/asf/tuscany/java/sca/samples/helloworld-web-callback/" class="external-link" rel="nofollow">helloworld-web-callback</A> sample for the complete code of the above example.</P> + +<H4><A name="SCAJavaimplementation.web-Usingimplementation.webwiththeTuscanyruntimeembeddedwithinawebapp"></A>Using implementation.web with the Tuscany runtime embedded within a webapp</H4> + +<P>This is the style all the current Tuscany webapp samples use. When using implementation.web with the Tuscany runtime embedded within a webapp the implementation.web web-uri attribute is ignored.</P> + +<H4><A name="SCAJavaimplementation.web-Usingimplementation.webwiththeTuscanyruntimeintegratedintoaJEEserversuchasTomcatorGeronimo"></A>Using implementation.web with the Tuscany runtime integrated into a JEE server such as Tomcat or Geronimo</H4> + +<P>The only code that is currently working is some prototype code in the Tuscany runtime-tomcat module that supports injecting references into Servlets, Filters and Event listeners using the @Reference annotation.</P> + +<H4><A name="SCAJavaimplementation.web-Usingimplementation.webwiththeTuscanystandaloneruntime"></A>Using implementation.web with the Tuscany standalone runtime</H4> + +<P>Nothing implemented yet</P> + +<H4><A name="SCAJavaimplementation.web-Usingimplementation.webwiththeTuscanydistributeddomainruntime"></A>Using implementation.web with the Tuscany distributed domain runtime</H4> + +<P>Nothing implemented yet</P> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java implementation.web'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-implementationwidget.html b/site/trunk/site-publish/documentation-2x/sca-java-implementationwidget.html new file mode 100644 index 0000000000..58e98f3d3b --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-implementationwidget.html @@ -0,0 +1,217 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java implementation.widget : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java implementation.widget">SCA Java implementation.widget</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java implementation.widget">SCA Java implementation.widget</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java implementation.widget</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964942"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964942">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964942"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964942">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964942"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964942">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H3><A name="SCAJavaimplementation.widget-Introduction"></A>Introduction</H3> + +<P>The Tuscany Widget Implementation extends the SCA programing model to HTML and/or Web 2.0 client applications.</P> + + +<H3><A name="SCAJavaimplementation.widget-UsingImplementation.WidgettomodelyourWeb2.0component"></A>Using Implementation.Widget to model your Web 2.0 component</H3> + +<P>This component type allows you to model your HTML and/or Web 2.0 as an SCA component, the implementation artifact would be html resource that represents the application, and you can define SCA References, that would be wired to server side services.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<composite xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.osoa.org/xmlns/sca/1.0"</SPAN> +</SPAN> xmlns:t=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/xmlns/sca/1.0"</SPAN> +</SPAN> targetNamespace=<SPAN class="code-quote">"http:<SPAN class="code-comment">//store"</SPAN> +</SPAN> name=<SPAN class="code-quote">"store"</SPAN>> + + <component name=<SPAN class="code-quote">"store"</SPAN>> + <t:implementation.widget location=<SPAN class="code-quote">"contents/store.html"</SPAN>/> + <service name=<SPAN class="code-quote">"Widget"</SPAN>> + <t:binding.http/> + </service> + <reference name=<SPAN class="code-quote">"catalog"</SPAN> target=<SPAN class="code-quote">"Catalog"</SPAN>> + <t:binding.jsonrpc/> + </reference> + <reference name=<SPAN class="code-quote">"shoppingCart"</SPAN> target=<SPAN class="code-quote">"ShoppingCart"</SPAN>> + <t:binding.atom/> + </reference> + </component> + + ..... +</composite> +</PRE> +</DIV></DIV> + + +<H3><A name="SCAJavaimplementation.widget-DefiningreferencesinHTMLresources"></A>Defining references in HTML resources</H3> + +<P>The widget implementation introduces SCA annotations to JavaScript code using the syntax below. These references will get properly introspected by the implementation.widget and wired to the proper server side services.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-comment">//@Reference +</SPAN><SPAN class="code-keyword">var</SPAN> catalog = <SPAN class="code-keyword">new</SPAN> Reference(<SPAN class="code-quote">"catalog"</SPAN>); + +<SPAN class="code-comment">//@Reference +</SPAN><SPAN class="code-keyword">var</SPAN> shoppingCart = <SPAN class="code-keyword">new</SPAN> Reference(<SPAN class="code-quote">"shoppingCart"</SPAN>); +</PRE> +</DIV></DIV> + + +<H3><A name="SCAJavaimplementation.widget-IncludinggeneratedJavaScriptclientproxy"></A>Including generated JavaScript client proxy</H3> + +<P>The client application will need to include a generated JavaScript that will contain the necessary client proxy used to access the server side services. The name of the generated JavaScript is the same as the HTML resource being specified as the implementation artifact.</P> + + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<!-- one js include per sca component --> +<script type=<SPAN class="code-quote">"text/javascript"</SPAN> src=<SPAN class="code-quote">"store.js"</SPAN>></script> +</PRE> +</DIV></DIV> + +<H3><A name="SCAJavaimplementation.widget-Supportedbindingtypes"></A>Supported binding types</H3> + +<P>Currently, you can define references to remote services using the following bindings :</P> +<UL> + <LI><A href="sca-java-bindingatom.html" title="SCA Java binding.atom">ATOM</A></LI> + <LI><A href="sca-java-bindingjsonrpc.html" title="SCA Java binding.jsonrpc">JSON-RPC</A></LI> + <LI><A href="sca-java-bindinghttp.html" title="SCA Java binding.http">HTTP</A></LI> +</UL> + + +<H3><A name="SCAJavaimplementation.widget-References"></A>References</H3> +<P><A href="http://incubator.apache.org/tuscany/getting-started-with-tuscany.html" class="external-link" rel="nofollow">http://incubator.apache.org/tuscany/getting-started-with-tuscany.html</A></P> + + + + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java implementation.widget'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-interfacewsdl.html b/site/trunk/site-publish/documentation-2x/sca-java-interfacewsdl.html new file mode 100644 index 0000000000..7affdd61d2 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-interfacewsdl.html @@ -0,0 +1,312 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java interface.wsdl : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java interface.wsdl">SCA Java interface.wsdl</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="sca-java-extensions-guide.html" title="SCA Java Extensions Guide">SCA Java Extensions Guide</A> > <A href="" title="SCA Java interface.wsdl">SCA Java interface.wsdl</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java interface.wsdl</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964972"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964972">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964972"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964972">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964972"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964972">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + +<H3><A name="SCAJavainterface.wsdl-%3Cinterface.wsdl%3E"></A><interface.wsdl></H3> + +<P>The Tuscany Java SCA runtime supports interfaces that are described by Web Services Description Lanuage (WSDL) files. The files contain a description of the service interface, services, references, method requests and responses, and the data types. The implementation of this WSDL interface can be generated with the Java SDK tool <B>wsimport</B>. The <B>wsimport</B> tool generates a skeleton of the service interface, along with all associated request and response classes, and any complex data types passed on the interface. The user can augment the skeleton by putting implementation code in the approproate spot.</P> + +<P>The following snippet shows how the WSDL interface and the Java implementation are used in an SCA composite file and publicised as a component.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <component name=<SPAN class="code-quote">"OrderServiceComponent"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"org.example.orderservice.OrderServiceImpl"</SPAN> /> + <service name=<SPAN class="code-quote">"OrderService"</SPAN>> + <<SPAN class="code-keyword">interface</SPAN>.wsdl <SPAN class="code-keyword">interface</SPAN>=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.example.org/OrderService/#wsdl.<SPAN class="code-keyword">interface</SPAN>(OrderService)"</SPAN> /> +</SPAN> <binding.ws uri=<SPAN class="code-quote">"http:<SPAN class="code-comment">//localhost:8085/OrderService"</SPAN>/> +</SPAN> </service> + </component> +</PRE> +</DIV></DIV> + +<H3><A name="SCAJavainterface.wsdl-Examples"></A>Examples</H3> + +<P>This example shows a component with its interface described via WSDL. The web service binding defaults are used so the endpoint of the Web service will be <A href="http://localhost:8085/OrderService" class="external-link" rel="nofollow">http://localhost:8085/OrderService</A>. (Note that this full sample is available in Tuscany 1.x branch under the samples/holder-ws-service sample).</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<composite xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.osoa.org/xmlns/sca/1.0"</SPAN> +</SPAN> targetNamespace=<SPAN class="code-quote">"http:<SPAN class="code-comment">//orderservice"</SPAN> +</SPAN> xmlns:hw=<SPAN class="code-quote">"http:<SPAN class="code-comment">//orderservice"</SPAN> +</SPAN> name=<SPAN class="code-quote">"orderws"</SPAN>> + + <component name=<SPAN class="code-quote">"OrderServiceComponent"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"org.example.orderservice.OrderServiceImpl"</SPAN> /> + <service name=<SPAN class="code-quote">"OrderService"</SPAN>> + <<SPAN class="code-keyword">interface</SPAN>.wsdl <SPAN class="code-keyword">interface</SPAN>=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.example.org/OrderService/#wsdl.<SPAN class="code-keyword">interface</SPAN>(OrderService)"</SPAN> /> +</SPAN> <binding.ws uri=<SPAN class="code-quote">"http:<SPAN class="code-comment">//localhost:8085/OrderService"</SPAN>/> +</SPAN> </service> + </component> + +</composite> +</PRE> +</DIV></DIV> + +<P>WSDL files can be generated with many tools and development environment plugins. This snippet shows a portion of the WSDL file that describes the business service data types and the assoicated method calls and responses:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <wsdl:portType name=<SPAN class="code-quote">"OrderService"</SPAN>> + <wsdl:operation name=<SPAN class="code-quote">"reviewOrder"</SPAN>> + <wsdl:input message=<SPAN class="code-quote">"tns:reviewOrderRequest"</SPAN>/> + <wsdl:output message=<SPAN class="code-quote">"tns:reviewOrderResponse"</SPAN>/> + </wsdl:operation> + </wsdl:portType> + <wsdl:message name=<SPAN class="code-quote">"reviewOrderRequest"</SPAN>> + <wsdl:part element=<SPAN class="code-quote">"tns:reviewOrder"</SPAN> name=<SPAN class="code-quote">"myParameters"</SPAN>/> + </wsdl:message> + <wsdl:message name=<SPAN class="code-quote">"reviewOrderResponse"</SPAN>> + <wsdl:part element=<SPAN class="code-quote">"tns:reviewOrderResponse"</SPAN> name=<SPAN class="code-quote">"myResult"</SPAN>/> + </wsdl:message> + <wsdl:types> + <xsd:schema targetNamespace=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.example.org/OrderService/"</SPAN>> +</SPAN> <xsd:complexType name=<SPAN class="code-quote">"order"</SPAN>> + <xsd:sequence> + <xsd:element name=<SPAN class="code-quote">"customerId"</SPAN> type=<SPAN class="code-quote">"xsd:string"</SPAN> minOccurs=<SPAN class="code-quote">"0"</SPAN> /> + <xsd:element name=<SPAN class="code-quote">"status"</SPAN> type=<SPAN class="code-quote">"tns:status"</SPAN> minOccurs=<SPAN class="code-quote">"0"</SPAN> /> + <xsd:element name=<SPAN class="code-quote">"total"</SPAN> type=<SPAN class="code-quote">"xsd:<SPAN class="code-object">double</SPAN>"</SPAN> /> + <xsd:element name=<SPAN class="code-quote">"orderId"</SPAN> type=<SPAN class="code-quote">"xsd:<SPAN class="code-object">int</SPAN>"</SPAN> /> + </xsd:sequence> + </xsd:complexType> + + <xsd:simpleType name=<SPAN class="code-quote">"status"</SPAN>> + <xsd:restriction base=<SPAN class="code-quote">"xsd:string"</SPAN>> + <xsd:enumeration value=<SPAN class="code-quote">"Created"</SPAN> /> + <xsd:enumeration value=<SPAN class="code-quote">"Submitted"</SPAN> /> + <xsd:enumeration value=<SPAN class="code-quote">"Approved"</SPAN> /> + <xsd:enumeration value=<SPAN class="code-quote">"Rejected"</SPAN> /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:element name=<SPAN class="code-quote">"reviewOrder"</SPAN>> + <xsd:complexType> + <xsd:sequence> + <xsd:element name=<SPAN class="code-quote">"myData"</SPAN> type=<SPAN class="code-quote">"tns:order"</SPAN> + minOccurs=<SPAN class="code-quote">"1"</SPAN> maxOccurs=<SPAN class="code-quote">"1"</SPAN> /> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name=<SPAN class="code-quote">"reviewOrderResponse"</SPAN>> + <xsd:complexType> + <xsd:sequence> + <xsd:element name=<SPAN class="code-quote">"myData"</SPAN> type=<SPAN class="code-quote">"tns:order"</SPAN> + minOccurs=<SPAN class="code-quote">"1"</SPAN> maxOccurs=<SPAN class="code-quote">"1"</SPAN> /> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + + </xsd:schema> + </wsdl:types> +</PRE> +</DIV></DIV> + +<P>The Java implementation for this web service can be generated with the Java SDK tool <B>wsimport</B>. Full documentation is in the Java SDK JavaDocs, but basically one specifies the source WSDL and the output directory for generated files.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + wsimport -d orderservice -keep orderservice.wsdl +</PRE> +</DIV></DIV> + +<P>The generated implementation files can be augmented with code that operates on provided business objects.</P> + +<H3><A name="SCAJavainterface.wsdl-WebServicesHolderPattern"></A>Web Services Holder Pattern</H3> + +<P>A pattern known as the Web Services Holder Pattern is supported by Tuscany in the 1.5 and later releases. WSDL files support a parameter mode known as INOUT. The INOUT mode is used for service interface parameters that are passed into a business interface and returned<BR> +on the same interface.</P> + +<P>The advantages of the INOUT mode are:</P> +<UL> + <LI>supports a well known pattern of parameter pass by reference. Normally SCA parameters are always passed by value.</LI> + <LI>saves instantiation and initialization for large or complex objects.</LI> + <LI>simplifies the signature of business interfaces</LI> + <LI>saves the user the cost of boxing and returning multiple return objects.</LI> +</UL> + + +<P>The Holder pattern is created by the Java SDK wsimport tool whenever data type is both input and output to a given operation></P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + <xsd:element name=<SPAN class="code-quote">"myOperation"</SPAN>> + <xsd:complexType> + <xsd:sequence> + <xsd:element name=<SPAN class="code-quote">"myData"</SPAN> type=<SPAN class="code-quote">"tns:myDataType"</SPAN> minOccurs=<SPAN class="code-quote">"1"</SPAN> maxOccurs=<SPAN class="code-quote">"1"</SPAN>/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name=<SPAN class="code-quote">"myOperationResponse"</SPAN>> + <xsd:complexType> + <xsd:sequence> + <xsd:element name=<SPAN class="code-quote">"myData"</SPAN> type=<SPAN class="code-quote">"tns:myDataType"</SPAN> minOccurs=<SPAN class="code-quote">"1"</SPAN> maxOccurs=<SPAN class="code-quote">"1"</SPAN>/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> +</PRE> +</DIV></DIV> + +<P>The generated implemenation code contains annotations that mark the parameter data as an input output parameter. Also notice that the business object Order is passed in as a data type javax.xml.ws.Holder<Order>. This Holder class allows the input object to be returned as an output object, i.e. pass by reference.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + @WebMethod(action = <SPAN class="code-quote">"http:<SPAN class="code-comment">//www.example.org/OrderService/reviewOrder"</SPAN>) +</SPAN> @RequestWrapper(localName = <SPAN class="code-quote">"reviewOrder"</SPAN>, targetNamespace = <SPAN class="code-quote">"http:<SPAN class="code-comment">//www.example.org/OrderService/"</SPAN>, className = <SPAN class="code-quote">"org.example.orderservice.ReviewOrder"</SPAN>) +</SPAN> @ResponseWrapper(localName = <SPAN class="code-quote">"reviewOrderResponse"</SPAN>, targetNamespace = <SPAN class="code-quote">"http:<SPAN class="code-comment">//www.example.org/OrderService/"</SPAN>, className = <SPAN class="code-quote">"org.example.orderservice.ReviewOrderResponse"</SPAN>) +</SPAN> <SPAN class="code-keyword">public</SPAN> void reviewOrder( + @WebParam(name = <SPAN class="code-quote">"myData"</SPAN>, targetNamespace = "", mode = WebParam.Mode.INOUT) + javax.xml.ws.Holder<Order> myData); +</PRE> +</DIV></DIV> + +<P>The Java implemenation code can access the wrapped Holder object, perform updates on the object, and leave it in place to return the object as shown here with the Java object Order :</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> + @WebMethod(action = <SPAN class="code-quote">"http:<SPAN class="code-comment">//www.example.org/OrderService/reviewOrder"</SPAN>) +</SPAN> @RequestWrapper(localName = <SPAN class="code-quote">"reviewOrder"</SPAN>, targetNamespace = <SPAN class="code-quote">"http:<SPAN class="code-comment">//www.example.org/OrderService/"</SPAN>, className = <SPAN class="code-quote">"org.example.orderservice.ReviewOrder"</SPAN>) +</SPAN> @ResponseWrapper(localName = <SPAN class="code-quote">"reviewOrderResponse"</SPAN>, targetNamespace = <SPAN class="code-quote">"http:<SPAN class="code-comment">//www.example.org/OrderService/"</SPAN>, className = <SPAN class="code-quote">"org.example.orderservice.ReviewOrderResponse"</SPAN>) +</SPAN> <SPAN class="code-keyword">public</SPAN> void reviewOrder( + @WebParam(name = <SPAN class="code-quote">"myData"</SPAN>, targetNamespace = "", mode = WebParam.Mode.INOUT) + Holder<Order> myData) { + Order order = myData.value; + <SPAN class="code-object">double</SPAN> total = order.getTotal(); + <SPAN class="code-keyword">if</SPAN> ( total < 100.0 ) { + order.setStatus( Status.APPROVED ); + } + } +</PRE> +</DIV></DIV> + +<P>Tuscany, as of version 1.5 supports this input/output Holder pattern. At this point there is a limitation of only one in/out parameter, and this is only supported on methods with void return types.</P> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java interface.wsdl'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-builders.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-builders.png Binary files differnew file mode 100644 index 0000000000..1f47db146a --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-builders.png diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-builders.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-builders.png.jpeg Binary files differnew file mode 100644 index 0000000000..e3bd257c92 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-builders.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-overview.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-overview.png Binary files differnew file mode 100644 index 0000000000..7369e70546 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-overview.png diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-overview.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-overview.png.jpeg Binary files differnew file mode 100644 index 0000000000..2d2ab7e8ea --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-overview.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-registry.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-registry.png Binary files differnew file mode 100644 index 0000000000..dc6e373373 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-registry.png diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-registry.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-registry.png.jpeg Binary files differnew file mode 100644 index 0000000000..e4630b0b5f --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-domain-registry.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-build.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-build.png Binary files differnew file mode 100644 index 0000000000..3d4e2c9509 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-build.png diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-build.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-build.png.jpeg Binary files differnew file mode 100644 index 0000000000..2f60b2b09d --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-build.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-callback.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-callback.png Binary files differnew file mode 100644 index 0000000000..e55da1b706 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-callback.png diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-callback.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-callback.png.jpeg Binary files differnew file mode 100644 index 0000000000..71d7c00313 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-callback.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-structure.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-structure.png Binary files differnew file mode 100644 index 0000000000..3323bc1f3b --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-structure.png diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-structure.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-structure.png.jpeg Binary files differnew file mode 100644 index 0000000000..3e79ae12c6 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-endpoint-structure.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-interface-contracts.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-interface-contracts.png Binary files differnew file mode 100644 index 0000000000..0f1251b821 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-interface-contracts.png diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-interface-contracts.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-interface-contracts.png.jpeg Binary files differnew file mode 100644 index 0000000000..1ba4b541e2 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-interface-contracts.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-databinding.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-databinding.png Binary files differnew file mode 100644 index 0000000000..7052a9be1d --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-databinding.png diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-databinding.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-databinding.png.jpeg Binary files differnew file mode 100644 index 0000000000..ebc31a599d --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-databinding.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-interceptors.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-interceptors.png Binary files differnew file mode 100644 index 0000000000..3b573540d3 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-interceptors.png diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-interceptors.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-interceptors.png.jpeg Binary files differnew file mode 100644 index 0000000000..b25911389c --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-reference-interceptors.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-context.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-context.png Binary files differnew file mode 100644 index 0000000000..913361a706 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-context.png diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-context.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-context.png.jpeg Binary files differnew file mode 100644 index 0000000000..b44bc4c7d8 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-context.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-structure.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-structure.png Binary files differnew file mode 100644 index 0000000000..91950718ad --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-structure.png diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-structure.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-structure.png.jpeg Binary files differnew file mode 100644 index 0000000000..55b08faa09 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-runtime-structure.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-databinding.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-databinding.png Binary files differnew file mode 100644 index 0000000000..b495ada823 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-databinding.png diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-databinding.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-databinding.png.jpeg Binary files differnew file mode 100644 index 0000000000..49bb3d22a0 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-databinding.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-interceptors.png b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-interceptors.png Binary files differnew file mode 100644 index 0000000000..bd6128d209 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-interceptors.png diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-interceptors.png.jpeg b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-interceptors.png.jpeg Binary files differnew file mode 100644 index 0000000000..b4a58af954 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.data/tuscany-service-interceptors.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.html b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.html new file mode 100644 index 0000000000..9a2dc55c16 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-java-runtime-overview.html @@ -0,0 +1,833 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>SCA Java Runtime Overview : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="SCA Java Runtime Overview">SCA Java Runtime Overview</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="SCA Java Runtime Overview">SCA Java Runtime Overview</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Java Runtime Overview</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964723"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964723">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964723"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964723">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964723"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964723">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H1><A name="SCAJavaRuntimeOverview-SoftwareOrganization"></A>Software Organization</H1> +<H3><A name="SCAJavaRuntimeOverview-SourceCodeLocations"></A>Source Code Locations</H3> +<P>If you take a Tuscany SCA Java source distribution or look in the Tuscany subversion repository (<A href="http://svn.apache.org/repos/asf/tuscany/java/sca/" class="external-link" rel="nofollow">http://svn.apache.org/repos/asf/tuscany/java/sca/</A>) you'll see the code layed out as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +BUILDING +CHANGES +LICENSE +NOTICE +README +RELEASE_NOTES + +distribution - the code that defines and build Tuscany distributions +features - Maven projects that collect together Tuscany modules +maven + archetypes - Maven archetypes <SPAN class="code-keyword">for</SPAN> creating Tuscany project templates + maven-tuscany-plugin - ??? +modules - the source code <SPAN class="code-keyword">for</SPAN> the runtime and the SCA extensions +samples - project samples +testing + itest - project integration tests + compliance-tests - OASIS compliance tests +pom.xml +</PRE> +</DIV></DIV> + +<P>There is some related source code that's worth mentioning up front. Firstly the project Maven build relies on a set of Maven plugins that have been written specifically for Tuscany. They can also be found in the Tuscany subversion repository (<A href="http://svn.apache.org/repos/asf/tuscany/maven-plugins/trunk/" class="external-link" rel="nofollow">http://svn.apache.org/repos/asf/tuscany/maven-plugins/trunk/</A>) and are as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +maven-bundle-plugin - Creates Tuscany OSGi bundles based on the Tuscany modules and their dependencies + also generates eclipse PDE projects <SPAN class="code-keyword">for</SPAN> Tuscany modules +maven-eclipse-compiler - Compiles using the Eclipse compiler and performs OSGi validation +maven-java2wsdl-plugin - TBD +maven-osgi-junit - Runs Junit tests in an OSGi environment +maven-tuscany-plugin - TBD +maven-wsdl2java-plugin - TBD +</PRE> +</DIV></DIV> + +<P>Secondly there are a set of tests that the OASIS SCA specifications define called otests. These test the Tuscany SCA runtime for compliance with the specifications. The tests themselves are stored in the OASIS subversion system (<A href="http://tools.oasis-open.org/version-control/browse/" class="external-link" rel="nofollow">http://tools.oasis-open.org/version-control/browse/</A>). Tuscany has a set of modules that retrieve these tests automatically and configure the Tuscany environment to run them (<A href="http://svn.apache.org/repos/asf/tuscany/otest/" class="external-link" rel="nofollow">http://svn.apache.org/repos/asf/tuscany/otest/</A>) as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +README +build.xml - Ant utility script +pom.xml +sca-assembly - Generated automatically by svn externals when you check <SPAN class="code-keyword">this</SPAN> directory out +sca-java-caa - Generated automatically by svn externals when you check <SPAN class="code-keyword">this</SPAN> directory out +sca-java-ci - Generated automatically by svn externals when you check <SPAN class="code-keyword">this</SPAN> directory out +sca-policy - Generated automatically by svn externals when you check <SPAN class="code-keyword">this</SPAN> directory out +tuscany-java-caa-test-runner - Java Common Annotations and APIs test runner +tuscany-java-ci-test-runner - Java Component Implementation test runner +tuscany-policy-test-runner - Policy test runner +tuscany-test-runner - Assembly test runner +</PRE> +</DIV></DIV> + +<H3><A name="SCAJavaRuntimeOverview-SCAJavaModules"></A>SCA Java Modules</H3> +<P>All of the functional code in Tuscany Java SCA can be found under the modules directory. There are a lot of sub-directories here but they basically fall into one of two categories, core function or extensions. We are using the term extension here in the sense that the SCA Assembly specification talks about and extension model You always have to have the core functions but most of the extensions are optional (we say most here because without some of the basic extensions the runtime won't do anything) Finding extension modules is easy. Modules that start with the following words are extensions.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +binding +databinding +implementation +<SPAN class="code-keyword">interface</SPAN> +policy +</PRE> +</DIV></DIV> + +<P>As you can see SCA extensions relate to the extensible parts of the SCA composite file. For example, if you want to use <binding.jms/> in you SCA composite files then you need to include the Tuscany modules for this extension in you installation. In this case that would mean the modules binding-jms and binding-jms-runtime. </P> + +<P>All of the other modules in the modules directory are core modules and are generally required to be present in you Tuscany runtime installation. The use of the word "generally" here sounds a bit vague. This is because the Tuscany runtime itself is based on an extensibility mechanism which means that many parts of the runtime (as well as the SCA extensions) are pluggable. In this way, for example, different hosting environments can be supported. Well talk about runtime extensibility further down this article but for the time being consider all core modules to be mandatory. </P> + +<H1><A name="SCAJavaRuntimeOverview-RuntimeBuildingBlocks"></A>Runtime Building Blocks</H1> + +<P>As you may have realized the Tuscany SCA Java runtime is just a Java program that, once started listens for incoming messages (via SCA component services) and, sometimes responds with outgoing messages (via SCA component references).</P> + +<P><SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-java-runtime-overview.data/tuscany-runtime-context.png" style="border: 0px solid black"></SPAN></P> + +<P>The runtime then provides the context within which SCA composite applications run. If we crack open the Tuscany Runtime box we see the following structure.</P> + +<P><SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-java-runtime-overview.data/tuscany-runtime-structure.png" style="border: 0px solid black"></SPAN></P> + +<P>We'll take a high level look at these different blocks in turn starting with Core.</P> + +<H2><A name="SCAJavaRuntimeOverview-TuscanyCore"></A>Tuscany Core</H2> +<P>The Tuscany core is made up of several modules that provide basic runtime and extensibility support to the extensions that provide the real SCA functions. If you look in the modules directory of a Tuscany distribtuion (2.0-M4 at the time of writing - this list may change in subsequent releases) the modules that make up the Tuscany core are as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +assembly - The in-memory model of an OASIS SCA composite application (sometimes called an assembly) +assembly-xml - The Tuscany processors that translate to and from XML and the in-memory model +assembly-xsd - The schema used to validate the contents of various SCA files, e.g. the composite file +builder - <SPAN class="code-object">Process</SPAN> the in-memory model to build a complete SCA application representation +common-java - General Java utilities +common-xml - General XML utilities +contribution - Read and process SCA contributions +core - The core Tuscany SCA Java runtime functions +core-databinding - The core databinding functions +core-spi - The Java interfaces that extension developers use to create and register extensions +databinding - Builds on the core databinding functions to provide features common to all databindings??? +deployment - Loads the runtime and orchestrates the loading of SCA contributions +extensibility - Reads META-INF/services files and manages Tuscany extensibility +extensibility-equinox - Manages Tuscany extensibility in an OSGi environment +host-http - Base interfaces <SPAN class="code-keyword">for</SPAN> providing integration with a servlet container +<SPAN class="code-keyword">interface</SPAN>-java - Java <SPAN class="code-keyword">interface</SPAN> model and instrospection +<SPAN class="code-keyword">interface</SPAN>-java-jaxws - <SPAN class="code-object">Process</SPAN> JAX-WS annotations from a Java <SPAN class="code-keyword">interface</SPAN> +<SPAN class="code-keyword">interface</SPAN>-wsdl - WSDL <SPAN class="code-keyword">interface</SPAN> model +launcher - Command line Tuscany runtime launcher +monitor - Collects errors as they occur in the Tuscany runtime +node-api - API <SPAN class="code-keyword">for</SPAN> accessing an embedded Tuscany node (A node loads/runs contributions) +node-impl - The JSE implementation <SPAN class="code-keyword">for</SPAN> the node API +node-impl-osgi - The OSGi implementation <SPAN class="code-keyword">for</SPAN> the node API ???? +node-launcher - The JSE based command line launcher <SPAN class="code-keyword">for</SPAN> a Tuscany node +node-launcher-equinox - The OSGi based command line launcher <SPAN class="code-keyword">for</SPAN> a Tuscany node +sca-api - The OASIS defined SCA API +sca-client-impl - The Tuscany implementation of the OASIS defined SCA client +xsd - The in-memory model of an XSD file, along with the processors to read it +</PRE> +</DIV></DIV> + +<P>We have already said that there are a set of extensions that, while in theory they are are optional, are in practice required to do anything useful. These are are follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +binding-sca-runtime - The implementation <SPAN class="code-keyword">for</SPAN> the local version of binding.sca +binding-sca-axis2-runtime - The implementation <SPAN class="code-keyword">for</SPAN> the remote version of binding.sca based on web services +binding-ws - The in-memory model <SPAN class="code-keyword">for</SPAN> binding.ws +binding-ws-axis2 - TBD - should be called runtime +binding-ws-axis2-policy - TBD +binding-ws-wsdlgen - TBD +databinding-axiom - The databinding <SPAN class="code-keyword">for</SPAN> Axiom +databinding-jaxb - The databinding <SPAN class="code-keyword">for</SPAN> JAXB +databinding-jaxb-axiom - TBD +endpoint-tribes - The distributed endpoint registry based on tribes +host-jetty - Allows Jetty to be started automatically to support HTTP based bindings +host-webapp - Allows Tuscany to be embedded in a WAR +implementation-java - The in-memory model <SPAN class="code-keyword">for</SPAN> implementation.java +implementation-java-runtime - The runtime artifacts <SPAN class="code-keyword">for</SPAN> implementation.java +</PRE> +</DIV></DIV> + +<P>The rest of the modules are optional and can be omitted. In practice the easiest way to get started is to keep all of the modules. By default this is what you get when you install the binding distribution. In the future you're free to remove the extensions you don't use to reduce the size of the installation. The Tuscany project may even make releases in the future that package sets of extensions targeted at particular types of application. </P> + +<H2><A name="SCAJavaRuntimeOverview-TuscanySCAAPI"></A>Tuscany SCA API</H2> + +<P>The Tuscany SCA API is used by SCA applications to access various information from the runtime. It's not mandatory to use the API but it can be useful in some circumstances. </P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +launcher + Tuscany API +node-api + Tuscany API +node-launcher + Tuscany API +node-launcher-equinox + Tuscany API +sca-api + OASIS API +sca-client-impl + OASIS API +</PRE> +</DIV></DIV> + +<H2><A name="SCAJavaRuntimeOverview-TuscanySPI"></A>Tuscany SPI</H2> + +<P>The Tuscany SPI is generally used for building extensions. Extensions come in two flavours SCA extensions, like implementation and binding types, and Tuscany runtime extensions, like builders and binders. Both of these types of extension are discussed a little later in this article. The modules and module packages that describe the Tuscany SPI are as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +assembly + org.apache.tuscany.sca.assembly + org.apache.tuscany.sca.definitions + org.apache.tuscany.sca.interfacedef + org.apache.tuscany.sca.policy +assembly-xsd + sca-core-1.1.xsd + sca-policy-1.1.xsd +contribution + org.apache.tuscany.sca.contribution + org.apache.tuscany.sca.contribution.java + org.apache.tuscany.sca.contribution.namespace + org.apache.tuscany.sca.contribution.processor + org.apache.tuscany.sca.contribution.resolver + org.apache.tuscany.sca.contribution.scanner +core + org.apache.tuscany.sca.core.assembly + org.apache.tuscany.sca.core.context + org.apache.tuscany.sca.core.factory + org.apache.tuscany.sca.core.invocation + org.apache.tuscany.sca.core.scope +core-databinding + org.apache.tuscany.sca.core.databinding.processor +core-spi (why not extension SPI?) + org.apache.tuscany.sca.context + org.apache.tuscany.sca.invocation + org.apache.tuscany.sca.provider + org.apache.tuscany.sca.runtime + org.apache.tuscany.sca.work +databinding + org.apache.tuscany.sca.databinding + org.apache.tuscany.sca.databinding.annotation + org.apache.tuscany.sca.databinding.javabeans + org.apache.tuscany.sca.databinding.util + org.apache.tuscany.sca.databinding.xml +deployment + org.apache.tuscany.sca.deployment +extensibility + org.apache.tuscany.sca.core + org.apache.tuscany.sca.extensibility +monitor + org.apache.tuscany.sca.monitor +xsd + org.apache.tuscany.sca.xsd +</PRE> +</DIV></DIV> + +<P>More detail on extension points and SPIs can be found <A href="tuscany-2x-extensibility-and-spis.html" title="Tuscany 2.x Extensibility and SPIs">here </A></P> + +<H2><A name="SCAJavaRuntimeOverview-TuscanyRuntimeExtensibilityandExtensions"></A>Tuscany Runtime Extensibility and Extensions</H2> + +<P>As we've already mentioned the Tuscany core doesn't do much on it's own apart from providing basic features and support the plugging in of extensions which do the real work. Extensions come in two forms. Extension types defined by the OASIS SCA specifications and those that are particular to Tuscany. In the first category are the extension types defined by the OASIS Assembly specification:</P> + +<UL class="alternate" type="square"> + <LI>interface</LI> + <LI>implementation</LI> + <LI>binding</LI> + <LI>import</LI> + <LI>export</LI> +</UL> + + +<P>The Tuscany runtime defines it's own extension types which exploit the core runtimes extensibility features</P> + +<UL class="alternate" type="square"> + <LI>policy</LI> + <LI>databinding</LI> + <LI>contribution</LI> + <LI>host</LI> +</UL> + + +<P>The Tuscany extensibility framework is based on two simple ideas. Firstly that the Tuscany runtime provides extension points into which extension functions can be plugged. Secondly that the the Java META-INF/services mechanism provides a way for extension developers to register new extension functions with these extension points. </P> + +<P>The Tuscany extensibility framework exposes quite a few extension points, for example,(o.a.t.s = org.apache.tuscany) </P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +org.apache.tuscany.sca.assembly.builder.BuilderExtensionPoint + org.apache.tuscany.sca.assembly.builder.BindingBuilder + org.apache.tuscany.sca.assembly.builder.CompositeBuilder + org.apache.tuscany.sca.assembly.builder.ContractBuilder + org.apache.tuscany.sca.assembly.builder.ImplementationBuilder + +org.apache.tuscany.sca.core.FactoryExtensionPoint + org.apache.tuscany.sca.assembly.AssemblyFactory + org.apache.tuscany.sca.assembly.SCABindingFactory + org.apache.tuscany.sca.binding.atom.AtomBindingFactory + org.apache.tuscany.sca.binding.comet.CometBindingFactory + org.apache.tuscany.sca.binding.corba.CorbaBindingFactory + org.apache.tuscany.sca.binding.ejb.EJBBindingFactory + org.apache.tuscany.sca.binding.http.HTTPBindingFactory + org.apache.tuscany.sca.binding.jsonp.JSONPBindingFactory + org.apache.tuscany.sca.binding.jsonrpc.JSONRPCBindingFactory + org.apache.tuscany.sca.binding.<SPAN class="code-keyword">rest</SPAN>.operationselector.jaxrs.JAXRSOperationSelectorFactory + org.apache.tuscany.sca.binding.<SPAN class="code-keyword">rest</SPAN>.operationselector.rpc.RPCOperationSelectorFactory + org.apache.tuscany.sca.binding.<SPAN class="code-keyword">rest</SPAN>.RESTBindingFactory + org.apache.tuscany.sca.binding.<SPAN class="code-keyword">rest</SPAN>.wireformat.json.JSONWireFormatFactory + org.apache.tuscany.sca.binding.<SPAN class="code-keyword">rest</SPAN>.wireformat.xml.XMLWireFormatFactory + org.apache.tuscany.sca.binding.rmi.RMIBindingFactory + org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory + org.apache.tuscany.sca.contribution.ContributionFactory + org.apache.tuscany.sca.contribution.java.JavaImportExportFactory + org.apache.tuscany.sca.contribution.namespace.NamespaceImportExportFactory + org.apache.tuscany.sca.contribution.processor.ValidatingXMLInputFactory + org.apache.tuscany.sca.definitions.DefinitionsFactory + org.apache.tuscany.sca.implementation.bpel.BPELFactory + org.apache.tuscany.sca.implementation.java.JavaImplementationFactory + org.apache.tuscany.sca.implementation.java.introspect.JavaClassVisitor + org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor + org.apache.tuscany.sca.implementation.jaxrs.JAXRSImplementationFactory + org.apache.tuscany.sca.implementation.script.ScriptImplementationFactory + org.apache.tuscany.sca.implementation.web.WebImplementationFactory + org.apache.tuscany.sca.implementation.widget.WidgetImplementationFactory + org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory + org.apache.tuscany.sca.invocation.MessageFactory + org.apache.tuscany.sca.node.configuration.NodeConfigurationFactory + org.apache.tuscany.sca.policy.PolicyFactory + +org.apache.tuscany.sca.context.ContextFactoryExtensionPoint + org.apache.tuscany.sca.context.ComponentContextFactory + org.apache.tuscany.sca.context.PropertyValueFactory + org.apache.tuscany.sca.context.RequestContextFactory + +org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint + org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor + +org.apache.tuscany.sca.contribution.processor.StAXAttributeProcessorExtensionPoint + org.apache.tuscany.sca.contribution.processor.StAXAttributeProcessor + +org.apache.tuscany.sca.contribution.processor.URLArtifactProcessorExtensionPoint + org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor + +org.apache.tuscany.sca.contribution.processor.ValidationSchemaExtensionPoint + org.apache.tuscany.sca.contribution.processor.ValidationSchema + +org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint + org.apache.tuscany.sca.contribution.resolver.ModelResolver + +org.apache.tuscany.sca.contribution.scanner.ContributionScannerExtensionPoint + +org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint + +org.apache.tuscany.sca.core.ModuleActivatorExtensionPoint + org.apache.tuscany.sca.core.ModuleActivator + +org.apache.tuscany.sca.databinding.DataBindingExtensionPoint + org.apache.tuscany.sca.databinding.DataBinding + +org.apache.tuscany.sca.databinding.jaxb.XMLAdapterExtensionPoint + +org.apache.tuscany.sca.databinding.TransformerExtensionPoint + org.apache.tuscany.sca.databinding.PullTransformer + org.apache.tuscany.sca.databinding.PushTransformer + +org.apache.tuscany.sca.definitions.xml.DefinitionsExtensionPoint + org.apache.tuscany.sca.definitions.xml.Definitions + +org.apache.tuscany.sca.host.corba.CorbaHostExtensionPoint + +org.apache.tuscany.sca.host.http.ServletHostExtensionPoint + org.apache.tuscany.sca.host.http.ServletHost + +org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory + +org.apache.tuscany.sca.provider.ProviderFactoryExtensionPoint + org.apache.tuscany.sca.provider.BindingProviderFactory + org.apache.tuscany.sca.provider.ImplementationProviderFactory + org.apache.tuscany.sca.provider.PolicyProviderFactory + org.apache.tuscany.sca.provider.WireFormatProviderFactory + org.apache.tuscany.sca.provider.OperationSelectorProviderFactory + +org.apache.tuscany.sca.runtime.DomainRegistryFactoryExtensionPoint + org.apache.tuscany.sca.runtime.DomainRegistryFactory + +org.apache.tuscany.sca.runtime.RuntimeWireProcessorExtensionPoint + org.apache.tuscany.sca.runtime.RuntimeWireProcessor + +org.apache.tuscany.sca.core.UtilityExtensionPoint + org.apache.tuscany.sca.databinding.Mediator + org.apache.tuscany.sca.databinding.SimpleTypeMapper + org.apache.tuscany.sca.core.scope.ScopeRegistry + org.apache.tuscany.sca.binding.sca.provider.SCABindingMapper + org.apache.tuscany.sca.deployment.Deployer + org.apache.tuscany.sca.interfacedef.FaultExceptionMapper + org.apache.tuscany.sca.interfacedef.InterfaceContractMapper + org.apache.tuscany.sca.monitor.MonitorFactory + org.apache.tuscany.sca.runtime.CompositeActivator + org.apache.tuscany.sca.runtime.EndpointReferenceBinder + org.apache.tuscany.sca.runtime.EndpointSerializer + org.apache.tuscany.sca.runtime.RuntimeProperties + org.apache.tuscany.sca.work.WorkScheduler + +org.apache.tuscany.sca.node.NodeFactory +org.apache.tuscany.sca.xsd.XSDFactory +</PRE> +</DIV></DIV> + +<P>Extension points are usually used in groups. You have to populate the right extension points when implementing say an implementation or a binding extensions. The best way to get a grip on how this works is to look at existing extensions and see what they do. As an example, if you look at how the implementation.java extension registers an extension to read the <implemenation.java/> element from a composite file and turn it into an in-memory Java model you will see the following file:</P> + +<P>modules/implementation-java/src/main/resources/META-INF/services/o.a.t.s.contribution.processor.StAXArtifactProcessor</P> + +<P>Which contains a single line as follows:</P> + +<P>org.apache.tuscany.sca.implementation.java.xml.JavaImplementationProcessor;qname=<A href="http://docs.oasis-open.org/ns/opencsa/sca/200903#implementation.java,model=org.apache.tuscany.sca.implementation.java.JavaImplementation" class="external-link" rel="nofollow">http://docs.oasis-open.org/ns/opencsa/sca/200903#implementation.java,model=org.apache.tuscany.sca.implementation.java.JavaImplementation</A></P> + +<P>This tells the Tuscany runtime to register and extension in the StAXArtifactProcessorExtensionPoint with the follwing properties:</P> + +<UL class="alternate" type="square"> + <LI>org.apache.tuscany.sca.implementation.java.xml.JavaImplementationProcessor + <UL class="alternate" type="square"> + <LI>The name of the process that turns the XML <implementation.java> element into a Java model</LI> + </UL> + </LI> + <LI>qname=<A href="http://docs.oasis-open.org/ns/opencsa/sca/200903#implementation.java" class="external-link" rel="nofollow">http://docs.oasis-open.org/ns/opencsa/sca/200903#implementation.java</A> + <UL class="alternate" type="square"> + <LI>The QName of the <implementation.java/> element to look for in incoming composite files</LI> + </UL> + </LI> + <LI>model=org.apache.tuscany.sca.implementation.java.JavaImplementation + <UL class="alternate" type="square"> + <LI>The name of the Java model interface that will be used to represent the XML element in-memory.</LI> + </UL> + </LI> +</UL> + + +<P>The full set of extension points required to represent the implementation.java extension is spread across the implemenation-java and implementation-java-runtime modules as follows:</P> + +<P>implementation-java</P> + +<UL class="alternate" type="square"> + <LI>resources/META-INF/services/ + <UL class="alternate" type="square"> + <LI>o.a.t.s.contribution.processor.StAXArtifactProcessor - Converts <implementation.java/> to/from JavaImplementation model</LI> + <LI>o.a.t.s.implementation.java.JavaImplementationFactory - Creates JavaImplementation model objects</LI> + <LI>o.a.t.s.implementation.java.introspect.JavaClassVisitor - Registers visitors used to introspect Java classes</LI> + </UL> + </LI> +</UL> + + +<P>implementation-java-runtime</P> + +<UL class="alternate" type="square"> + <LI>resources/META-INF/services/ + <UL class="alternate" type="square"> + <LI>o.a.t.s.context.PropertyValueFactory - ???</LI> + <LI>o.a.t.s.definitions.xml.Definitions - Registers a definitions.xml file for implementation.java</LI> + <LI>o.a.t.s.provider.ImplementationProviderFactory - Creates a runtime provider for implementation.java</LI> + <LI>o.a.t.s.runtime.RuntimeWireProcessor - Registers a processor for endpoint and endpoint reference interceptor chains</LI> + </UL> + </LI> +</UL> + + +<P>All of these extension point entries come together at runtime to allow Tuscany to process implementation.java elements that appear in composite files. </P> + +<P>Most extension are packaged in a least two modules. For example the implementation.java extension is provided in the following modules:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +modules/implementation-java - the implementation.java model classes and XML processor +modules/implementation-java-runtime - the runtime artifacts such as the runtime providers +</PRE> +</DIV></DIV> + +<P>You will currently see extension that don't match this pattern. Often this is because the extension has been moved into 2.x from 1.x but has not been tidied up yet. </P> + +<P>More detail on extension points and SPIs can be found <A href="tuscany-2x-extensibility-and-spis.html" title="Tuscany 2.x Extensibility and SPIs">here </A></P> + +<H2><A name="SCAJavaRuntimeOverview-Runtimehostingandcontainers%2COSGi%2CJSE%2CWebappsetc."></A>Runtime hosting and containers, OSGi, JSE, Webapps etc.</H2> + +<P>The Tuscany runtime will work in the JSE environment and when deployed to an OSGi runtime like Felix or Equinox. Since 1.x we have been through an exercise of refactoring all of the runtime modules into OSGi bundles and providing consistent OSGi manifest files. See (<A href="http://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/OSGi%20Enablement%20for%20Tuscany%20Runtime" class="external-link" rel="nofollow">http://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/OSGi+Enablement+for+Tuscany+Runtime</A>) for more details on how we OSGi-igfied the Tuscany runtime. </P> + +<P>A launcher is provided to each environment. For JSE use the following class from modules/node-launcher:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +org.apache.tuscany.sca.node.launcher.NodeLauncher +</PRE> +</DIV></DIV> + +<P>For in OSGi in the Equinoz framework use the following class from modules/node-launcher-equinox:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +org.apache.tuscany.sca.node.equinox.launcher.NodeLauncher +</PRE> +</DIV></DIV> + +<P>In both cases you use the launcher to create a node instance as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +Node node = launcher.createNode(<SPAN class="code-keyword">new</SPAN> Contribution(<SPAN class="code-quote">"contrib1"</SPAN>, <SPAN class="code-quote">"./contrib1.jar"</SPAN>), + <SPAN class="code-keyword">new</SPAN> Contribution(<SPAN class="code-quote">"contrib2"</SPAN>, <SPAN class="code-quote">"./contrib2.jar"</SPAN>)); +node.start(); +</PRE> +</DIV></DIV> + +<P>When you use the JSE launcher the runtime starts and creates a classpath to load the Tuscany runtime. It uses the following algorithm (coded in the NodeLauncherUtil.runtimeClassloader method) to create the classpath:</P> + +<UL class="alternate" type="square"> + <LI>Check to see if the runtime has been added to the current classpath already. If it has don't do anything more</LI> + <LI>Determine where the launcher class was loaded from and load all the Tuscany classes from that location</LI> + <LI>Look for an environment variable called TUSCANY_HOME which should point to a distribution. Load jars from there and from lib and modules sub directories</LI> + <LI>Look for an environment variable called TUSCANY_PATCH which contains a list of Jars to load?</LI> +</UL> + + +<P>When you use the OSGI launcher the algorithm is similar but of course this time the Tuscany bundles are loaded into the OSGi framework. The node launcher starts up the Equinox framework and then goes looking for bundles to load using the following algorithm:</P> + +<UL class="alternate" type="square"> + <LI>TBD</LI> +</UL> + + +<P>There is no single classpath that gives access to the Tuscany runtime. </P> + +<P>TODO what features of the OSGi integration do we need to cover in this overview?<BR> +(In the OSGi runtime special processing is applied to collect together all the META-INF/services information so that it is all accessible without having to delve inside each bundle. See the runtime enviroments section for more information)</P> + +<P>You can of course use the launchers from the command line in various guises. </P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +TBD +</PRE> +</DIV></DIV> + +<P>TODO - what other ways are we actually going to support for starting the runtime?</P> + + +<H1><A name="SCAJavaRuntimeOverview-SCADomainandNodes"></A>SCA Domain and Nodes</H1> + +<P>The design for the 2.x SCA domain is based on a registry that is accessible from all nodes that are running composites in the domain. There is also the intention to add a management mechanism to allow for central control of the nodes. This is not in place yet. </P> + +<P><SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-java-runtime-overview.data/tuscany-domain-overview.png" style="border: 0px solid black"></SPAN></P> + +<P>It is out intention to bring the Domain Manager function over from the 1.x code base to provide a central place for adding contributions and assigning them to nodes. This time though it won't be mandatory to run a Domain Manager to have nodes run a distributed SCA application. If you are happy to configure nodes directly and start them individually you are able to do that. The domain manager will just be one of a number of applications that can sit on top of and exploit the distributed registry. </P> + +<P>The registry holds information that is common across the domain including:</P> + +<UL class="alternate" type="square"> + <LI>available endpoints (the result of specifying a binding on a component services)</LI> + <LI>policy model</LI> + <LI>extension type model</LI> +</UL> + + +<P>The following diagram shows an example of domain data populating the registry and two nodes, in separate JVMs, running separate composites from the SCA application</P> + +<P><SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-java-runtime-overview.data/tuscany-domain-registry.png" style="border: 0px solid black"></SPAN></P> + +<P>With no domain manager each node is started with a set of contributions. A node reads the contributions and processes deployed composites ready to run. As part of this processing domain level information, such as deployed endpoints and available policies, is published to the registry for other nodes to find. When domain level information is required by a node, for example, when a component reference targets a service running on a different node in the domain, the information can be obtained by looking in the registry. </P> + +<P>If a domain manager is present it can pre-process all available contributions and pre-populate the registry as required. This is however not mandatory. </P> + +<H1><A name="SCAJavaRuntimeOverview-RuntimeLifecycle"></A>Runtime Lifecycle</H1> +<H2><A name="SCAJavaRuntimeOverview-Create"></A>Create</H2> +<P>Runtime creation is contrilled by the environment in which the runtime is being started. For example, if you are running Tuscany from the runtime then using the node launcher will start the runtime. Alternatively if you are deploying Tuscany embedded in a web app then the runtime will not be started until the WAR file is deployed. See the previous hosting section for more details. </P> +<H2><A name="SCAJavaRuntimeOverview-Read"></A>Read</H2> +<P>When a node is started and configured with the location of a contribution, for example, </P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +Node node = launcher.createNode(<SPAN class="code-keyword">new</SPAN> Contribution(<SPAN class="code-quote">"contrib1"</SPAN>, <SPAN class="code-quote">"./contrib1.jar"</SPAN>), + <SPAN class="code-keyword">new</SPAN> Contribution(<SPAN class="code-quote">"contrib2"</SPAN>, <SPAN class="code-quote">"./contrib2.jar"</SPAN>)); +</PRE> +</DIV></DIV> + +<P>the node will look at each contribution and identify all of the aritifacts that it holds. Artifacts can be anything from XML, XSD, WSDL and Java .class files to the SCA .composite files. Once the node knows what artifacts are available in all of its input contributions it will read the composite files. It does this using the extension processors that are provided with each extension. The output of reading the composite file is an in-memory model of the SCA application. This model is used to configured the runtime in later phases. </P> + +<H2><A name="SCAJavaRuntimeOverview-Resolve"></A>Resolve</H2> + +<P>The in-memory model that results from the read phase will contain a lot of unresolved references. For example, for a component that uses </P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<implementation.java class=<SPAN class="code-quote">"my.<SPAN class="code-keyword">package</SPAN>.MyClassImpl"</SPAN>/> +</PRE> +</DIV></DIV> +<P>The model knows the name of the class file that will be used to implement the component but it doesn't actually have a reference to that real Java class. These references are resolved in the resolve phase. Again the extension processors are used and this time their resolve method looks through the available contributions, using the import/export relationships, to locate referenced artifacts. </P> + +<H2><A name="SCAJavaRuntimeOverview-Build"></A>Build</H2> + +<P>Once we get to this stage we have an in-memory model that faithfully matches what was present in the .composite files that are deployed to the node. We now need to build the model to prepare it read for creating the runtime artifacts. There are a number of things that we need to do an primarily the process involves applying the SCA rules to calculate a complete model of the application based on the input composite files. The input composite files don't necessarily contain all of the right details in the right places, for example, imagine a Java component implementation as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +@Service(MyClass.class) +class MyClassImpl <SPAN class="code-keyword">implements</SPAN> MyClass { + @Reference + <SPAN class="code-keyword">protected</SPAN> MyOtherClass myOtherClassReference; + + <SPAN class="code-keyword">public</SPAN> <SPAN class="code-object">String</SPAN> doSomething(<SPAN class="code-object">String</SPAN> input){ + <SPAN class="code-keyword">return</SPAN> myOtherClassReference.doSomething(input); + } +} +</PRE> +</DIV></DIV> + +<P>We can define an SCA component as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<component name=<SPAN class="code-quote">"MyComponent"</SPAN>> + <implementation.java class=<SPAN class="code-quote">"my.<SPAN class="code-keyword">package</SPAN>.MyClassImpl"</SPAN>/> +</component> +</PRE> +</DIV></DIV> + +<P>We haven't said that this component defines any services or references but based on the component type implied by the MyClassImpl class we know that it really as a service called "MyClass" and a reference called "myOtherClassReference". </P> + +<H4><A name="SCAJavaRuntimeOverview-Thebuildprocess"></A>The build process</H4> +<P>The build process applies these kinds of rules and enhances the in-memory model with all of the implied information. </P> + +<P>The following diagram shows the basic process and the steps that form the process. </P> + +<P><SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-java-runtime-overview.data/tuscany-builders.png" style="border: 0px solid black"></SPAN></P> + +<P>The steps are as follows:</P> + +<OL> + <LI>Flatten includes - this copies all information from an included composite into the including composite.</LI> + <LI>Attach policies - policies that specify external attachment are applied to the model here</LI> + <LI>Calculate composite component types - the use of implementation.composite implies a hierarchical organization of composite and the components that use them as implementations. This step calculates the component type for a composite recursively so that the configuration of the component that the composite implements can be configured correctly</LI> + <LI>Binding specific building - Sometimes bindings have specific processing to do, for example, the web services binding created WSDL at this stage.</LI> + <LI>Construct endpoints - endpoints represent the service endpoints that components expose. They are the runtime representation of the service binding configuration.</LI> + <LI>Construct endpoint references - endpoint references represent the references that components expose. They are the runtime representation of the reference binding configuration.</LI> + <LI>Compute policy - all of the intents and policy sets should be applied in their correct locations by this stage. This processing computes the policy sets that actually applies and performs policy specific processing</LI> +</OL> + + +<P>The endpoints and endpoint references provide the runtime connection between the component implementations and the bindings protocols used when communicating with other components. The hold all of the message handling chains in the runtime. </P> + +<H4><A name="SCAJavaRuntimeOverview-EndpointsandEndpointReferences"></A>Endpoints and Endpoint References</H4> +<P>The following diagram shows how enpoints and enpoint references relate to the model of the more recognizable component references and services. </P> + +<P><SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-java-runtime-overview.data/tuscany-endpoint-structure.png" style="border: 0px solid black"></SPAN></P> + +<P>And endpoint maps to a service binding and an endpoint reference maps to a reference target (or a configured reference binding if one is present instead of a target).You will note that endpoints and endpoint references are used to represent callbacks too. An service that specifies a callback gives rise to one or more callback endpoint references. These sit behind the callback proxy at runtime. An endpoint reference that specifies a callback gives rise to a callback endpoint. This endpoint receives callback messages. </P> + +<P>Looking in more detail you can see that both endpoints and endpoint references hold the interceptor chains that proces references side (endpoint reference) and service side (endpoint) messages. At the end of the interceptor chain endpoint information is placed into the protocol message. The following diagram shows how the web service binding uses endpoint information in forward and callback messages. </P> + +<P><SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-java-runtime-overview.data/tuscany-endpoint-callback.png" style="border: 0px solid black"></SPAN></P> + +<P>The twist here is that while a forward Tuscany message has a from field that points to the source endpoint reference when this gets turned into a SOAP envelope the from field represents the callback endpoint if there is one. </P> + +<H4><A name="SCAJavaRuntimeOverview-Buildingendpointsandendpointreferences"></A>Building endpoints and endpoint references</H4> + +<P>The following diagram shows how endpoints and endpoint references are created and used at a very high level. </P> + +<P><SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-java-runtime-overview.data/tuscany-endpoint-build.png" style="border: 0px solid black"></SPAN></P> + +<OL> + <LI>First endoints and endpoint references are created during the build phase. An endpoint is created for every service binding. Endpoint references are created for every reference target or configured binding. Reference targets are either explicit specified through the reference or the binding uri or are implicitly specified through the use of autowire. If the endpoint to which an endpoint reference is available locally at this point the the two are linked (or bound) together at this point. If the node is running in a distributed domain, endpoint references can be created at this point where the target endpoint is not bound because it's not running in the same node. These endpoint references will be boundat runtime when the first messages passes through the endpoint reference</LI> + <LI>Second, during the activation phase, all endpoints are added to the endpoint registry. In this way any node that has access to the endpoint registry can see the details of these endpoints</LI> + <LI>Lastly, on first use, endpoint references that remain unbound are bound using a pluggable binding algorithm which will usually involve looking up and endpoint in the registry.</LI> +</OL> + + +<H2><A name="SCAJavaRuntimeOverview-Activate"></A>Activate</H2> + +<P>At the activate stage the various extension providers are created as required. </P> + +<H2><A name="SCAJavaRuntimeOverview-Start"></A>Start</H2> + +<P>During start the "start" operation is called on all active providers in order to perform any extension specific start processing. </P> + +<H2><A name="SCAJavaRuntimeOverview-MessageProcessing"></A>Message Processing</H2> + +<H3><A name="SCAJavaRuntimeOverview-Referencesideoperationandbindingchains"></A>Reference side operation and binding chains</H3> + +<P><SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-java-runtime-overview.data/tuscany-reference-interceptors.png" style="border: 0px solid black"></SPAN></P> + +<H3><A name="SCAJavaRuntimeOverview-Servicesideoperationandbindingchains"></A>Service side operation and binding chains</H3> + +<P><SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-java-runtime-overview.data/tuscany-service-interceptors.png" style="border: 0px solid black"></SPAN></P> + +<H2><A name="SCAJavaRuntimeOverview-Stop"></A>Stop</H2> + +<P>During stop the "stop" operation is called on all started providers in order to perform any extension specific stop processing. </P> + +<H2><A name="SCAJavaRuntimeOverview-Deactivate"></A>Deactivate</H2> + +<P>During the deactivate stage the various parts of the runtime model are picked apart to allow for successful garbage collection.</P> + +<H1><A name="SCAJavaRuntimeOverview-Interfaces"></A>Interfaces </H1> + +<H2><A name="SCAJavaRuntimeOverview-Mappinginterfacestotheruntimemodel"></A>Mapping interfaces to the runtime model </H2> +<P><SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-java-runtime-overview.data/tuscany-interface-contracts.png" style="border: 0px solid black"></SPAN></P> + +<H2><A name="SCAJavaRuntimeOverview-Referencesideruntimeinterfacedrivendatabindingprocessing"></A>Reference side runtime interface driven databinding processing</H2> +<P><SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-java-runtime-overview.data/tuscany-reference-databinding.png" style="border: 0px solid black"></SPAN></P> + +<H2><A name="SCAJavaRuntimeOverview-Servicesideruntimeinterfacedrivendatabindingprocessing"></A>Service side runtime interface driven databinding processing</H2> +<P><SPAN class="image-wrap" style="display: block; text-align: center"><IMG src="sca-java-runtime-overview.data/tuscany-service-databinding.png" style="border: 0px solid black"></SPAN></P> + + + + </DIV> + + <DIV class="tabletitle"> + Children + <SPAN class="smalltext" id="show" style="display: inline;"> + <A href="javascript:showChildren()">Show Children</A></SPAN> + <SPAN class="smalltext" id="hide" style="display: none;"> + <A href="javascript:hideChildren()">Hide Children</A></SPAN> + </DIV> + <DIV class="greybox" id="children" style="display: none;"> + <A href="tuscany-2x-extensibility-and-spis.html" title="Tuscany 2.x Extensibility and SPIs">Tuscany 2.x Extensibility and SPIs</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="serialization-deserialization-of-endpoints-and-endpointreferences.html" title="Serialization Deserialization of Endpoints and EndpointReferences">Serialization Deserialization of Endpoints and EndpointReferences</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + <A href="classloading.html" title="Classloading">Classloading</A> + <SPAN class="smalltext">(Apache Tuscany Docs 2.x)</SPAN> + <BR> + </DIV> + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : SCA Java Runtime Overview'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/sca-overview.html b/site/trunk/site-publish/documentation-2x/sca-overview.html new file mode 100644 index 0000000000..9dee1f9800 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/sca-overview.html @@ -0,0 +1,221 @@ + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <LINK type="text/css" rel="stylesheet" href="resources/space.css"> + <STYLE type="text/css"> + .footer { + background-image: url('http://cwiki.apache.org/confluence/images/border/border_bottom.gif'); + background-repeat: repeat-x; + background-position: left top; + padding-top: 4px; + color: #666; + } + </STYLE> + <SCRIPT type="text/javascript" language="javascript"> + var hide = null; + var show = null; + var children = null; + + function init() { + /* Search form initialization */ + var form = document.forms['search']; + if (form != null) { + form.elements['domains'].value = location.hostname; + form.elements['sitesearch'].value = location.hostname; + } + + /* Children initialization */ + hide = document.getElementById('hide'); + show = document.getElementById('show'); + children = document.all != null ? + document.all['children'] : + document.getElementById('children'); + if (children != null) { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + } + + function showChildren() { + children.style.display = 'block'; + show.style.display = 'none'; + hide.style.display = 'inline'; + } + + function hideChildren() { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + </SCRIPT> + <TITLE>SCA Overview</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + <BODY onload="init()"> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap=""> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="SCA Overview">SCA Overview</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="/wiki/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">SCA Overview</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=109106"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=109106">Edit Page</A> + + <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109106"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109106">Add Page</A> + + <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109106"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109106">Add News</A> + </DIV> + </DIV> + <DIV class="pagesubheading" style="margin: 0px 10px 0px 10px;"> + Added by <A href="http://cwiki.apache.org/confluence/users/viewuserprofile.action?username=lresende@apache.org">Luciano Resende</A>, last edited by <A href="http://cwiki.apache.org/confluence/users/viewuserprofile.action?username=lresende@apache.org">Luciano Resende</A> on Feb 03, 2009 + + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <UL> + <LI><A href="#SCAOverview-whatisSCA" title="what is SCA on SCA Overview">What is SCA?</A></LI> + <LI><A href="#SCAOverview-scacomponent" title="sca component on SCA Overview">SCA Component</A></LI> + <LI><A href="#SCAOverview-scawire" title="sca wire on SCA Overview">SCA Wire</A></LI> + <LI><A href="#SCAOverview-scacomposite" title="sca composite on SCA Overview">SCA Composite</A></LI> + <LI><A href="#SCAOverview-scacontribution" title="sca contribution on SCA Overview">SCA Contribution</A></LI> + <LI><A href="#SCAOverview-scadomain" title="sca domain on SCA Overview">SCA Domain</A></LI> + <LI><A href="#SCAOverview-scabinding" title="sca binding on SCA Overview">SCA Binding</A></LI> + <LI><A href="#SCAOverview-scapolicy" title="sca policy on SCA Overview">SCA Policy</A></LI> +</UL> + + +<H2><A name="SCAOverview-WhatisSCA%3F"></A><A name="SCAOverview-whatisSCA"></A>What is SCA?</H2> +<P>SCA is a standard programming model for abstracting business functions as components and using them as building blocks to assemble business solutions. An SCA component offers services and depends on functions that are called references. It also has an implementation associated it with it which is the business logic that can be implemented in any technology. </P> + +<P>SCA provides a declarative way to describe how the services in an assembly interact with one another and what quality of services (security, transaction, etc) is applied to the interaction. Since service interaction and quality of service is declarative, solution developers remain focus on business logic and therefore development cycle is simplified and shortened. This also promotes the development of reusable services that can be used in different contexts. For example, a shopping cart service can be used in a retail application or a travel application without changing. Services can interact with one another synchronously or asynchronously and can be implemented in any technology.</P> + +<P>SCA also brings flexibility to deployment. A solution assembled with SCA is deployed as a unit and can be distributed over one or more nodes in the network and can be reconfigured without programming changes. </P> + +<P>Applications that adopt SCA programming model can interact with non-SCA applications. Meaning non-SCA application can call into SCA enabled applications and SCA enabled applications can call out into non-SCA enabled applications.</P> + +<P>Now let's talk about SCA building blocks and concepts.</P> + +<H2><A name="SCAOverview-SCAComponent"></A><A name="SCAOverview-scacomponent"></A>SCA Component</H2> + +<P>The basic building block for SCA is a component. It is the abstraction of a given business function. A component is described with the following attributes:</P> + +<UL> + <LI><B>Service:</B> Describes the functions that this type of component provides. A component can offer one ore more services. A service is an interface.</LI> + <LI><B>Reference:</B> This describes the dependencies this type of component has in order to function. A reference is an interface.</LI> + <LI><B>Property:</B> This defines configuration parameters that can controls how the business function can behave. For example, what currency to use for an account component.</LI> + <LI><B>Intent policies:</B> This describes assumptions on how the component will behave. There are two types of policies. + <UL> + <LI>Implementation policy- Impact the behavior of an implementation. For example, transaction, monitor and logging</LI> + <LI>Interaction policy - defines how the components behave with one another. For example, security.</LI> + </UL> + </LI> + <LI><B>Implementation:</B> Every component has some implementation associated with it. This can be a new business logic or an existing one that is now being used in the assembly. A business logic can handle different operations and some of which are exposed externally as callable services. Component implementation can be in any technology, for example for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type.</LI> +</UL> + + +<P>This is demonstrated below.<BR> +<SPAN class="error">Unable to render embedded object: File (component.png) not found.</SPAN></P> + +<P>The implementation of a component can be in any language that is suitable for the user, for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type. </P> + +<H2><A name="SCAOverview-SCAWire"></A><A name="SCAOverview-scawire"></A>SCA Wire</H2> + +<P>As mentioned above, an SCA component may have zero or more references. Refrences in SCA define how SCA components invoke services. The relationship between a reference and a service is typically demonstrated through a line in a SCA diagrams and is referred to as a wire. </P> + +<P>The term wire can at the begining seem confusing because you may ask how a wire is realized. There is no physical definition for a wire, it is really derived from the relationship between a Service and its refrence(s) at runtime. This is realized through dependency injection in Tuscany. </P> + + +<H2><A name="SCAOverview-SCAComposite"></A><A name="SCAOverview-scacomposite"></A>SCA Composite</H2> + +<P>An SCA composite consists of components, services, references, and wires that connect them. A composite is the unit of deployment for SCA.<BR> +A composite can be viewed as a component whose implementation is not code but an aggregation of one or more components co-operating to provide higher level services. Think of composite as a solution, for example a credit check composite may consist of multiple components that together perform the credit checking work. A composite can also be used within a larger solution, for example credit check can be part of a order processing composite. A composite has the same charactersitics as a component. It provides Services, has References to other dependencies, and can be configured using Properties and can have intent policies in just the same way as an individual components can. In thise case, attributes of some of the components that are embedded in the composite get 'promoted' and becom the attribute of the composite. In the example below, you see a calculator composite which consists of 5 components, a calculator service has references to four components:Add, Subtract, Multiply and Divide.</P> + +<P><SPAN class="error">Unable to render embedded object: File (calc.jpg) not found.</SPAN><BR> +<IMG class="emoticon" src="http://cwiki.apache.org/confluence/images/icons/emoticons/lightbulb_on.gif" height="16" width="16" align="absmiddle" alt="" border="0"> The assembly or wiring is defined in .composite file through Service Component Definition Language (SCDL) that is in XML. For example, calculator.composite would define that calculator component references the other four components.</P> + +<H2><A name="SCAOverview-SCAContribution"></A><A name="SCAOverview-scacontribution"></A>SCA Contribution</H2> + +<P>The artifacts that make up a solution get packaged into what is called a contribution. A contribution can take a number of different forms. For example, it could be a jar file, or it could be a directory tree on the file system. A contribution can contain composites, java classes, BPEL processes, XSD files, wsdl files, etc. An SCA application can be divided into multiple contributions with dependencies between them. In general, some services depend closely on other services and it makes sense to package them together. If services are more independent it is best to package them separately so that they can be reused in different contexts. A contribution is a deployable unit. A solution may require multiple contributions that share artifacts and artifacts can be shared between (imported) between contributions.</P> + +<H2><A name="SCAOverview-SCADomain"></A><A name="SCAOverview-scadomain"></A>SCA Domain</H2> + +<P>Contribution packages get contributed to what is called SCA domain which is the scope of adminstration at runtime. An SCA Domain represents a complete runtime configuration, potentially distributed over a series of interconnected runtime nodes and is a logical view of the running applications or a coherent grouping of components that are working together. An SCA Domain typically represents an area of business functionality controlled by a single organization. For example, an SCA Domain may be the whole of a business, or it may be a department within a business.</P> + +<P>Therefore, an SCA domain consists of the definitions of composites, components, their implementations, <B>and the nodes</B> on which they run. Components deployed into a domain can directly wire to other components within the same domain. Communication with services outside of a domain is done through bindings. </P> + + +<P>SCA Domains can vary in size from the very small to the very large:</P> +<UL> + <LI>a very small domain could be one within a test environment inside an IDE</LI> + <LI>a medium sized domain could be a single server or small cluster supporting a single application</LI> + <LI>a large domain could describe all the services within a department or company</LI> +</UL> + + +<P>In a large domain there may be all sorts of policies about where components can run and how they connect to each other or to external services. However, during development one is not concerned with all this. The code is packaged and made available for deployment. Tuscany SCA Java supports contributions in the form of JAR or filesystem. </P> + +<P>Below is an example of domain with two contributions.<BR> +<SPAN class="error">Unable to render embedded object: File (domain.jpg) not found.</SPAN></P> + +<H2><A name="SCAOverview-SCABinding"></A><A name="SCAOverview-scabinding"></A>SCA Binding</H2> +<P>A binding is used as a means of communication between services and handles the protocols. It defines with what communication method a service can be accessed with or with what communication method it can will access other services. There can be different types of bindings depending on technologies used to develop a solution. For example JMS binding, Webservices binding, Atom binding for web20 interaction, etc. </P> + +<P>Services can be configured with different bindings and there can be multiple bindings for a service. Bindings for the services and references get defined declaratively in the .composite file. There is a default binding called binding.sca which when used leaves the choice of binding to the underlying infrastructure by default.</P> + +<P>The declarative bindings and the abstraction of protocols from business logic brings agility to SCA applications. This allows SCA applications to be purely focused on business logic and not be contaminated with protocol handling information. It also enables the SCA compositions to grow or change without code modification while also working with applications that are not enabled with SCA.</P> + + +<H2><A name="SCAOverview-SCAPolicy"></A><A name="SCAOverview-scapolciy"></A>SCA Policy</H2> +<P>An enterprise application requires control beyond the business functional capability which can include how security is handled in the enterprise or what transactional capability should be applied to services that are offered. SCA policies define the constraints or capabilities that get applied to services and their interaction. Two types of policies are defined in SCA.</P> +<UL> + <LI>Interaction Policies - Define the policies that influence interaction of services for example whether authentication is required or not.</LI> + <LI>Implementation Policies - Define how the components behave at runtime for example whether it is transactional or not.</LI> +</UL> + + +<P>SCA mechanisms for defining policies such as intents and policySets can only be used in the context of a single domain. The fact that policies can be defined declaratively make applications adaptive to the environment that they get deployed into or to changes in the business requirements. <BR> +For more information about policy check out the <SPAN class="nobr"><A href="http://www.osoa.org/download/attachments/35/SCA_Policy_Framework_V100.pdf" title="Visit page outside Confluence" rel="nofollow">sca policy framework specification<SUP><IMG class="rendericon" src="http://cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN>version=1]</P> + + </DIV> + + + </DIV> + </DIV> + <DIV class="footer"> + Generated by + <A href="http://www.atlassian.com/confluence/">Atlassian Confluence</A> (Version: 2.2.9 Build: 527 Sep 07, 2006) + <A href="http://could.it/autoexport/">AutoExport Plugin</A> (Version: Unknown - PluginManager Error) + </DIV> + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized Endpoint.jpg b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized Endpoint.jpg Binary files differnew file mode 100644 index 0000000000..86f71af57d --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized Endpoint.jpg diff --git a/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized Endpoint.jpg.jpeg b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized Endpoint.jpg.jpeg Binary files differnew file mode 100644 index 0000000000..24f6df7f3f --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized Endpoint.jpg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized EndpointReference.jpg b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized EndpointReference.jpg Binary files differnew file mode 100644 index 0000000000..1f589f5eda --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized EndpointReference.jpg diff --git a/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized EndpointReference.jpg.jpeg b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized EndpointReference.jpg.jpeg Binary files differnew file mode 100644 index 0000000000..dcd0fed30a --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized EndpointReference.jpg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Endpoint and EndpointReference serialization.jpg b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Endpoint and EndpointReference serialization.jpg Binary files differnew file mode 100644 index 0000000000..6a11db3be1 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Endpoint and EndpointReference serialization.jpg diff --git a/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Endpoint and EndpointReference serialization.jpg.jpeg b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Endpoint and EndpointReference serialization.jpg.jpeg Binary files differnew file mode 100644 index 0000000000..319f579a11 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.data/Endpoint and EndpointReference serialization.jpg.jpeg diff --git a/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.html b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.html new file mode 100644 index 0000000000..090601fd0d --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/serialization-deserialization-of-endpoints-and-endpointreferences.html @@ -0,0 +1,278 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Serialization Deserialization of Endpoints and EndpointReferences : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="sca-java-runtime-overview.html" title="SCA Java Runtime Overview">SCA Java Runtime Overview</A> > <A href="" title="Serialization Deserialization of Endpoints and EndpointReferences">Serialization Deserialization of Endpoints and EndpointReferences</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="sca-java-runtime-overview.html" title="SCA Java Runtime Overview">SCA Java Runtime Overview</A> > <A href="" title="Serialization Deserialization of Endpoints and EndpointReferences">Serialization Deserialization of Endpoints and EndpointReferences</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Serialization Deserialization of Endpoints and EndpointReferences</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=9012176"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=9012176">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=9012176"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=9012176">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=9012176"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=9012176">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H1><A name="SerializationDeserializationofEndpointsandEndpointReferences-SerializationDeserializationofEndpointsandEndpointReferences"></A>Serialization Deserialization of Endpoints and EndpointReferences</H1> +<H2><A name="SerializationDeserializationofEndpointsandEndpointReferences-Asamplescenario"></A>A sample scenario</H2> +<P><SPAN class="image-wrap" style=""><IMG src="serialization-deserialization-of-endpoints-and-endpointreferences.data/Endpoint%20and%20EndpointReference%20serialization.jpg" style="border: 0px solid black"></SPAN></P> + +<P>Assuming we have two nodes (Node1, Node2) within an SCA domain. Node1 runs component1 which is wired to component2 on Node2. </P> + +<UL> + <LI>Propagate the endpoint descriptions via the domain registry + <UL> + <LI>Serialize the endpoints of component2 at Node2</LI> + <LI>Deserialize the endpoints at Node1</LI> + <LI>Bind the endpoint reference of component1 to the remote endpoints of component2</LI> + </UL> + </LI> +</UL> + + +<UL> + <LI>Pass the ServiceReference from component1 to component2 via business methods + <UL> + <LI>Serialize the endpoint reference (for example, a reference to component3) known to component1 at Node1</LI> + <LI>Deserialize the endpoint reference at Node2</LI> + <LI>Bind the endpoint reference to the context of Node2/Component2</LI> + </UL> + </LI> +</UL> + + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">public</SPAN> class Component1Impl { + @Reference + ServiceReference<Component3> component3; + + @Reference + Component2 component2; + + <SPAN class="code-keyword">public</SPAN> <SPAN class="code-object">String</SPAN> op1(...) { + <SPAN class="code-comment">// Pass a ServiceReference of component3 to component2 +</SPAN> component2.op2(component3, ...); + } +} +</PRE> +</DIV></DIV> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +<SPAN class="code-keyword">public</SPAN> class Component2Impl { + + <SPAN class="code-keyword">public</SPAN> <SPAN class="code-object">String</SPAN> op2(ServiceReference<Component3> component3Ref, ...) { + ... + <SPAN class="code-comment">// Call component3 using the service reference +</SPAN> Component3 component3 = component3Ref.getService(); + component3.op3(...); + } +} +</PRE> +</DIV></DIV> + +<H2><A name="SerializationDeserializationofEndpointsandEndpointReferences-Whatinformationshouldbeserialized%3F"></A>What information should be serialized? </H2> + +<H3><A name="SerializationDeserializationofEndpointsandEndpointReferences-Endpointserialization"></A>Endpoint serialization </H3> +<P>What information is needed on the consumer side?</P> +<UL> + <LI>The protocol-specific endpoint address</LI> + <LI>The binding structural URI</LI> + <LI>The binding type</LI> + <LI>The intents and policySets</LI> +</UL> + + +<P>What information is not needed on the consumer side?</P> +<UL> + <LI>The component implementation behind the endpoint</LI> +</UL> + + +<P>I'm not sure if the componentType of the owning component or interface contracts are needed. Interface validation against a remote endpoint can be one only if the interface contract for the endpoint is resolvable in the context of the consuming component. But it can be too restrictive as it breaks the promise of decoupling between the SCA reference and service.</P> + +<P>The current code serializes the endpoint as a composite/component/service/binding XML.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-xml"> +<SPAN class="code-tag"><composite name=<SPAN class="code-quote">"..."</SPAN> targetNamespace></SPAN> + <SPAN class="code-tag"><component name=<SPAN class="code-quote">"..."</SPAN> uri=<SPAN class="code-quote">"..."</SPAN>></SPAN> + <SPAN class="code-tag"><implementation.bpel process=<SPAN class="code-quote">"..."</SPAN>/></SPAN> <SPAN class="code-tag"><SPAN class="code-comment"><!-- This should be removed --></SPAN></SPAN> + <SPAN class="code-tag"><service name=<SPAN class="code-quote">"..."</SPAN> requires=<SPAN class="code-quote">"..."</SPAN> policySets=<SPAN class="code-quote">"..."</SPAN>></SPAN> + <SPAN class="code-tag"><interface.wsdl interface=<SPAN class="code-quote">"..."</SPAN>/></SPAN> <SPAN class="code-tag"><SPAN class="code-comment"><!-- Is the interface needed? --></SPAN></SPAN> + <SPAN class="code-tag"><binding.ws uri=<SPAN class="code-quote">"..."</SPAN> requires=<SPAN class="code-quote">"..."</SPAN> policySets=<SPAN class="code-quote">"..."</SPAN>/></SPAN> + <SPAN class="code-tag"></service></SPAN> + <SPAN class="code-tag"></component></SPAN> +<SPAN class="code-tag"></composite></SPAN> +</PRE> +</DIV></DIV> + + +<H3><A name="SerializationDeserializationofEndpointsandEndpointReferences-Howtoresolvethedeserializedendpointinthecontextoftheconsumingcomponent%3F"></A>How to resolve the deserialized endpoint in the context of the consuming component?</H3> +<P>We keep the XML document from the Java serialization and load the XML into a composite model to rebuild the endpoint in the context of the consuming component. The currect scheme of XML serialization probably contains too much information and some of them cannot be practically resolvable on the client side. For example, the target component implementation or interface contracts.</P> + +<P><SPAN class="image-wrap" style=""><IMG src="serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized%20Endpoint.jpg" style="border: 0px solid black"></SPAN></P> + +<H3><A name="SerializationDeserializationofEndpointsandEndpointReferences-EndpointReferenceserialization"></A>EndpointReference serialization </H3> +<P>What information is needed on the consumer side?</P> +<UL> + <LI>The binding structural URI</LI> + <LI>The binding type</LI> + <LI>The intents and policySets</LI> + <LI>The resolved target endpoint (including the endpoint address and/or structural URI)</LI> +</UL> + + +<P>What information is not needed on the consumer side?</P> +<UL> + <LI>The component implementation behind the endpoint reference</LI> +</UL> + + +<P>I'm not sure if the componentType of the owning component or interface contracts are needed. Interface validation against a remote endpoint can be one only if the interface contract for the endpoint is resolvable in the context of the consuming component. But it can be too restrictive as it breaks the promise of decoupling between the SCA reference and service.</P> + +<P>The current code serializes the endpoint reference as a composite/component/reference/binding XML.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-xml"> +<SPAN class="code-tag"><composite name=<SPAN class="code-quote">"endpointReference"</SPAN> targetNamespace=<SPAN class="code-quote">"..."</SPAN>></SPAN> + <SPAN class="code-tag"><component name=<SPAN class="code-quote">"..."</SPAN> uri=<SPAN class="code-quote">"..."</SPAN>></SPAN> + <SPAN class="code-tag"><implementation.java class=<SPAN class="code-quote">"..."</SPAN>/></SPAN> <SPAN class="code-tag"><SPAN class="code-comment"><!-- This should be removed --></SPAN></SPAN> + <SPAN class="code-tag"><reference name=<SPAN class="code-quote">"..."</SPAN> requires=<SPAN class="code-quote">"..."</SPAN> policySets=<SPAN class="code-quote">"..."</SPAN> target=<SPAN class="code-quote">"..."</SPAN>></SPAN> <SPAN class="code-tag"><SPAN class="code-comment"><!-- reference/@target and binding.ws/@uri are exclusive --></SPAN></SPAN> + <SPAN class="code-tag"><interface.java interface=<SPAN class="code-quote">"..."</SPAN>/></SPAN> <SPAN class="code-tag"><SPAN class="code-comment"><!-- Is the interface needed? --></SPAN></SPAN> + <SPAN class="code-tag"><binding.ws uri=<SPAN class="code-quote">"..."</SPAN> requires=<SPAN class="code-quote">"..."</SPAN> policySets=<SPAN class="code-quote">"..."</SPAN>/></SPAN> + <SPAN class="code-tag"></reference></SPAN> + <SPAN class="code-tag"></component></SPAN> +<SPAN class="code-tag"></composite></SPAN> +</PRE> +</DIV></DIV> + +<H3><A name="SerializationDeserializationofEndpointsandEndpointReferences-Howtoresolvethedeserializedendpointreferenceinthecontextoftheconsumingcomponent%3F"></A>How to resolve the deserialized endpoint reference in the context of the consuming component?</H3> +<P>We keep the XML document from the Java serialization and load the XML into a composite model to rebuild the endpoint in the context of the consuming component. The currect scheme of XML serialization probably contains too much information and some of them cannot be practically resolvable on the client side. For example, the target component implementation or interface contracts.</P> + +<P><SPAN class="image-wrap" style=""><IMG src="serialization-deserialization-of-endpoints-and-endpointreferences.data/Deserialized%20EndpointReference.jpg" style="border: 0px solid black"></SPAN></P> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Serialization Deserialization of Endpoints and EndpointReferences'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/setting-up-ssh.html b/site/trunk/site-publish/documentation-2x/setting-up-ssh.html new file mode 100644 index 0000000000..154948bd8d --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/setting-up-ssh.html @@ -0,0 +1,250 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Setting up ssh : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="making-releases.html" title="Making Releases">Making Releases</A> > <A href="" title="Setting up ssh">Setting up ssh</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="making-releases.html" title="Making Releases">Making Releases</A> > <A href="" title="Setting up ssh">Setting up ssh</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Setting up ssh</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=21791345"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=21791345">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21791345"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21791345">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21791345"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=21791345">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <TABLE class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><TBODY><TR><TD class="confluenceTd" valign="top" width="15%"><P></P> +<DIV class="error"><SPAN class="error">Unable to render {include}</SPAN> Couldn't find a page to include called: <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=Menus&linkCreation=true&fromPageId=21791345" class="createlink">Menus</A></DIV></TD><TD class="confluenceTd" valign="top" width="85%"> + +<H3><A name="Settingupssh-Setupmvntoworkwithyourapacheaccount"></A>Setup mvn to work with your apache account</H3> + +<H4><A name="Settingupssh-Generateanauthoriseddsa%2Frsakey"></A>Generate an authorised dsa/rsa key</H4> + +<P>Logon to <TT>minotaur.apache.org</TT> using your apache id and run:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +$ ssh-keygen -t dsa +</PRE> +</DIV></DIV> + +<P>Give it some file name eg <TT>mysshkey</TT> and a pass phrase. This should create two files, a private key and a public key (<TT>mysshkey</TT>, <TT>mysshkey.pub</TT>). Copy <TT>mysshkey.pub</TT> to <TT>~/.ssh/authorised_keys</TT>. (you may need to create the .ssh directory), and scp the private key to you local machine.</P> + +<P><B>OR</B></P> + +<P>Use <TT>ssh-keygen</TT> to create a SSH key locally using shell or cygwin:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +$ ssh-keygen -t rsa -b 4096 +</PRE> +</DIV></DIV> + +<P>The keys will be saved in <TT><SUB>/.ssh/id_dsa</TT> (private) and <TT></SUB>/.ssh/id_dsa.pub</TT> (public).</P> + +<P><TT>scp</TT> your SSH public key <TT><SUB>/.ssh/id_dsa.pub</TT> created in last step to <TT></SUB>/id_dsa.pub</TT> on <TT>people.apache.org</TT>. </P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +$ scp ~/.ssh/id_dsa.pub <your userid>@people.apache.org:. +</PRE> +</DIV></DIV> + +<P>Login to people.apache.org</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +$ ssh <your userid>@people.apache.org +</PRE> +</DIV></DIV> + +<P>Create a <TT>~/.ssh</TT> folder in your home directory on <TT>people.apache.org</TT> and change its file mode to 700.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +$ mkdir ~/.ssh +$ chmod 700 ~/.ssh +</PRE> +</DIV></DIV> + +<P>Move or append <TT><SUB>/id_dsa.pub</TT> to <TT></SUB>/.ssh/authorized_keys</TT> and change its file mode to 600.</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +$ mv ~/id_dsa.pub ~/.ssh/authorized_keys +$ chmod 600 ~/.ssh/authorized_keys +</PRE> +</DIV></DIV> + +<H4><A name="Settingupssh-UpdateMavensettings"></A>Update Maven settings</H4> + +<P>At this point you should be able to ssh into <TT>people.apache.org</TT> without being prompted for a password.</P> + +<P>In your maven <TT>settings.xml</TT> file (located in the .m2 folder in your home dir, eg <TT>C:\Documents and Settings\ant\.m2</TT>) add servers for the servers you use and specify you apache id, the location of the ssh key you just scp'd and the pass phrase you used when creating that key, eg:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-xml"> +<SPAN class="code-tag"><servers></SPAN> + <SPAN class="code-tag"><server></SPAN> + <SPAN class="code-tag"><id></SPAN>apache.incubator<SPAN class="code-tag"></id></SPAN> + <SPAN class="code-tag"><username></SPAN>antelder<SPAN class="code-tag"></username></SPAN> + <SPAN class="code-tag"><privateKey></SPAN>file-path-of-private-key<SPAN class="code-tag"></privateKey></SPAN> + <SPAN class="code-tag"><passphrase></SPAN>xxx<SPAN class="code-tag"></passphrase></SPAN> + <SPAN class="code-tag"><directoryPermissions></SPAN>775<SPAN class="code-tag"></directoryPermissions></SPAN> + <SPAN class="code-tag"><filePermissions></SPAN>664<SPAN class="code-tag"></filePermissions></SPAN> + <SPAN class="code-tag"></server></SPAN> + <SPAN class="code-tag"><server></SPAN> + <SPAN class="code-tag"><id></SPAN>me.people<SPAN class="code-tag"></id></SPAN> + <SPAN class="code-tag"><username></SPAN>antelder<SPAN class="code-tag"></username></SPAN> + <SPAN class="code-tag"><privateKey></SPAN>file-path-of-private-key<SPAN class="code-tag"></privateKey></SPAN> + <SPAN class="code-tag"><passphrase></SPAN>xxx<SPAN class="code-tag"></passphrase></SPAN> + <SPAN class="code-tag"><directoryPermissions></SPAN>775<SPAN class="code-tag"></directoryPermissions></SPAN> + <SPAN class="code-tag"><filePermissions></SPAN>664<SPAN class="code-tag"></filePermissions></SPAN> + <SPAN class="code-tag"></server></SPAN> + <SPAN class="code-tag"><server></SPAN> + <SPAN class="code-tag"><id></SPAN>apache.snapshots<SPAN class="code-tag"></id></SPAN> + <SPAN class="code-tag"><username></SPAN>antelder<SPAN class="code-tag"></username></SPAN> + <SPAN class="code-tag"><privateKey></SPAN>file-path-of-private-key<SPAN class="code-tag"></privateKey></SPAN> + <SPAN class="code-tag"><passphrase></SPAN>xxx<SPAN class="code-tag"></passphrase></SPAN> + <SPAN class="code-tag"><directoryPermissions></SPAN>775<SPAN class="code-tag"></directoryPermissions></SPAN> + <SPAN class="code-tag"><filePermissions></SPAN>664<SPAN class="code-tag"></filePermissions></SPAN> + <SPAN class="code-tag"></server></SPAN> + <SPAN class="code-tag"><server></SPAN> + <SPAN class="code-tag"><id></SPAN>apache.rsync<SPAN class="code-tag"></id></SPAN> + <SPAN class="code-tag"><username></SPAN>antelder<SPAN class="code-tag"></username></SPAN> + <SPAN class="code-tag"><privateKey></SPAN>file-path-of-private-key<SPAN class="code-tag"></privateKey></SPAN> + <SPAN class="code-tag"><passphrase></SPAN>xxx<SPAN class="code-tag"></passphrase></SPAN> + <SPAN class="code-tag"><directoryPermissions></SPAN>775<SPAN class="code-tag"></directoryPermissions></SPAN> + <SPAN class="code-tag"><filePermissions></SPAN>664<SPAN class="code-tag"></filePermissions></SPAN> + <SPAN class="code-tag"></server></SPAN> +<SPAN class="code-tag"></servers></SPAN> +</PRE> +</DIV></DIV> + +<P>Keep the ssh key and pass phrase safe and secure. Its a good idea to only add the key and passphrase to the settings.xml file while you're actually using it and delete form the file at other times. Also you MUST delete the private ssh key from your Apache directory once you've ftp'd it to your local machine.</P> + + +</TD></TR></TBODY></TABLE> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Setting up ssh'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/treenavigation.html b/site/trunk/site-publish/documentation-2x/treenavigation.html new file mode 100644 index 0000000000..235692eeb9 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/treenavigation.html @@ -0,0 +1,176 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>TreeNavigation : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="" title="TreeNavigation">TreeNavigation</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="" title="TreeNavigation">TreeNavigation</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">TreeNavigation</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=109060"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=109060">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109060"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109060">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109060"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=109060">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + + + +<DIV class="plugin_pagetree"> + + + + <UL class="plugin_pagetree_children_list plugin_pagetree_children_list_noleftspace"> + <DIV class="plugin_pagetree_children"> + </DIV> + </UL> + + <FIELDSET class="hidden"> + <INPUT type="hidden" name="treeId" value=""> + <INPUT type="hidden" name="treeRequestId" value="/confluence/plugins/pagetree/naturalchildren.action?decorator=none&excerpt=false&sort=position&reverse=false&disableLinks=false"> + <INPUT type="hidden" name="treePageId" value=""> + + <INPUT type="hidden" name="noRoot" value="false"> + <INPUT type="hidden" name="rootPageId" value="108808"> + + <INPUT type="hidden" name="rootPage" value=""> + <INPUT type="hidden" name="startDepth" value="0"> + <INPUT type="hidden" name="spaceKey" value="TUSCANYxDOCx2x"> + + <INPUT type="hidden" name="i18n-pagetree.loading" value="Loading..."> + <INPUT type="hidden" name="i18n-pagetree.error.permission" value="Unable to load page tree. It seems that you do not have permission to view the root page."> + <INPUT type="hidden" name="i18n-pagetree.eeror.general" value="There was a problem retrieving the page tree. Please check the server log file for more information."> + <INPUT type="hidden" name="loginUrl" value="/confluence/login.action?os_destination=%2Fadmin%2Fautoexport%2Frebuild-start.action"> + + <FIELDSET class="hidden"> + <INPUT type="hidden" name="ancestorId" value="108808"> + </FIELDSET> + </FIELDSET> +</DIV> + + + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : TreeNavigation'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/tuscany-2x-extensibility-and-spis.data/Tuscany 2.x Extensibility and SPIs.ppt b/site/trunk/site-publish/documentation-2x/tuscany-2x-extensibility-and-spis.data/Tuscany 2.x Extensibility and SPIs.ppt Binary files differnew file mode 100644 index 0000000000..3f395de8d5 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/tuscany-2x-extensibility-and-spis.data/Tuscany 2.x Extensibility and SPIs.ppt diff --git a/site/trunk/site-publish/documentation-2x/tuscany-2x-extensibility-and-spis.html b/site/trunk/site-publish/documentation-2x/tuscany-2x-extensibility-and-spis.html new file mode 100644 index 0000000000..e0327332c1 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/tuscany-2x-extensibility-and-spis.html @@ -0,0 +1,1467 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Tuscany 2.x Extensibility and SPIs : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="sca-java-runtime-overview.html" title="SCA Java Runtime Overview">SCA Java Runtime Overview</A> > <A href="" title="Tuscany 2.x Extensibility and SPIs">Tuscany 2.x Extensibility and SPIs</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="sca-java-runtime-overview.html" title="SCA Java Runtime Overview">SCA Java Runtime Overview</A> > <A href="" title="Tuscany 2.x Extensibility and SPIs">Tuscany 2.x Extensibility and SPIs</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Tuscany 2.x Extensibility and SPIs</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=8552667"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=8552667">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=8552667"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=8552667">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=8552667"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=8552667">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <P><A name="Tuscany2.xExtensibilityandSPIs-spis"></A></P> + +<H1><A name="Tuscany2.xExtensibilityandSPIs-Tuscany2.xExtensibilityandSPIs.pptTuscany2.xExtensibilityandSPIs.ppt"></A><A href="tuscany-2x-extensibility-and-spis.data/Tuscany%202.x%20Extensibility%20and%20SPIs.ppt">Tuscany 2.x Extensibility and SPIs.ppt</A></H1> + +<H1><A name="Tuscany2.xExtensibilityandSPIs-SPI%2FAPIChangeHistory"></A>SPI/API Change History</H1> + +<DIV class="table-wrap"> +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> SVN Diff </TH> +<TH class="confluenceTh"> JIRA </TH> +<TH class="confluenceTh"> Change </TH> +</TR> +<TR> +<TD class="confluenceTd"> <A href="http://svn.apache.org/viewvc?view=revision&revision=901126" class="external-link" rel="nofollow">901126</A> </TD> +<TD class="confluenceTd"> N/A </TD> +<TD class="confluenceTd"> New client API from spec </TD> +</TR> +</TBODY></TABLE> +</DIV> + + +<H1><A name="Tuscany2.xExtensibilityandSPIs-CoreSPIs"></A>Core SPIs</H1> + +<DIV class="table-wrap"> +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> Module </TH> +<TH class="confluenceTh"> Exported Packages </TH> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/assembly" class="external-link" rel="nofollow">assembly</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.assembly</LI> + <LI>org.apache.tuscany.sca.assembly.builder</LI> + <LI>org.apache.tuscany.sca.assembly.impl</LI> + <LI>org.apache.tuscany.sca.definitions</LI> + <LI>org.apache.tuscany.sca.definitions.util</LI> + <LI>org.apache.tuscany.sca.interfacedef</LI> + <LI>org.apache.tuscany.sca.interfacedef.impl</LI> + <LI>org.apache.tuscany.sca.interfacedef.util</LI> + <LI>org.apache.tuscany.sca.policy</LI> + <LI>org.apache.tuscany.sca.policy.impl</LI> + <LI>org.apache.tuscany.sca.policy.util</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/assembly-xml" class="external-link" rel="nofollow">assembly-xml</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.assembly.xml</LI> + <LI>org.apache.tuscany.sca.definitions.xml</LI> + <LI>org.apache.tuscany.sca.policy.xml</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/assembly-xsd" class="external-link" rel="nofollow">assembly-xsd</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.assembly.xsd</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/contribution" class="external-link" rel="nofollow">contribution</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.contribution.scanner</LI> + <LI>org.apache.tuscany.sca.contribution.resolver</LI> + <LI>org.apache.tuscany.sca.contribution.processor</LI> + <LI>org.apache.tuscany.sca.contribution</LI> + <LI>org.apache.tuscany.sca.contribution.namespace</LI> + <LI>org.apache.tuscany.sca.contribution.java</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/core" class="external-link" rel="nofollow">core</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.core.assembly</LI> + <LI>org.apache.tuscany.sca.core.assembly.impl</LI> + <LI>org.apache.tuscany.sca.core.context</LI> + <LI>org.apache.tuscany.sca.core.factory</LI> + <LI>org.apache.tuscany.sca.core.invocation</LI> + <LI>org.apache.tuscany.sca.core.scope</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/core-databinding" class="external-link" rel="nofollow">core-databinding</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.core.databinding.processor</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/core-spi" class="external-link" rel="nofollow">core-spi</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.context</LI> + <LI>org.apache.tuscany.sca.invocation</LI> + <LI>org.apache.tuscany.sca.management</LI> + <LI>org.apache.tuscany.sca.provider</LI> + <LI>org.apache.tuscany.sca.runtime</LI> + <LI>org.apache.tuscany.sca.work</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/data-api" class="external-link" rel="nofollow">data-api</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.data.collection</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/databinding" class="external-link" rel="nofollow">databinding</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.databinding</LI> + <LI>org.apache.tuscany.sca.databinding.xml</LI> + <LI>org.apache.tuscany.sca.databinding.impl</LI> + <LI>org.apache.tuscany.sca.databinding.util</LI> + <LI>org.apache.tuscany.sca.databinding.annotation</LI> + <LI>org.apache.tuscany.sca.databinding.javabeans</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/deployment" class="external-link" rel="nofollow">deployment</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.deployment</LI> + <LI>org.apache.tuscany.sca.deployment.impl</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/extensibility" class="external-link" rel="nofollow">extensibility</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.core</LI> + <LI>org.apache.tuscany.sca.extensibility</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/launcher" class="external-link" rel="nofollow">launcher</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.launcher</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/monitor" class="external-link" rel="nofollow">monitor</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.monitor</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/node-api" class="external-link" rel="nofollow">node-api</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.node</LI> + <LI>org.apache.tuscany.sca.node.configuration</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/sca-api" class="external-link" rel="nofollow">sca-api</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.oasisopen.sca</LI> + <LI>org.oasisopen.sca.annotation</LI> + <LI>org.oasisopen.sca.client</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/xsd" class="external-link" rel="nofollow">xsd</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.xsd</LI> + <LI>org.apache.tuscany.sca.xsd.xml</LI> +</UL> +</TD> +</TR> +</TBODY></TABLE> +</DIV> + + +<P><A name="Tuscany2.xExtensibilityandSPIs-extensions"></A></P> + +<H1><A name="Tuscany2.xExtensibilityandSPIs-ExtensionPoints"></A>ExtensionPoints </H1> + +<DIV class="table-wrap"> +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> Modules </TH> +<TH class="confluenceTh"> Declared ExtensionPoints </TH> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/assembly" class="external-link" rel="nofollow">assembly</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.assembly.AssemblyFactory</LI> + <LI>org.apache.tuscany.sca.assembly.builder.BuilderExtensionPoint</LI> + <LI>org.apache.tuscany.sca.assembly.EndpointFactory</LI> + <LI>org.apache.tuscany.sca.assembly.SCABindingFactory</LI> + <LI>org.apache.tuscany.sca.definitions.DefinitionsFactory</LI> + <LI>org.apache.tuscany.sca.interfacedef.InterfaceContractMapper</LI> + <LI>org.apache.tuscany.sca.policy.PolicyFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/assembly-xml" class="external-link" rel="nofollow">assembly-xml</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.contribution.resolver.ModelResolver</LI> + <LI>org.apache.tuscany.sca.definitions.xml.Definitions</LI> + <LI>org.apache.tuscany.sca.definitions.xml.DefinitionsExtensionPoint</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/assembly-xsd" class="external-link" rel="nofollow">assembly-xsd</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.contribution.processor.ValidationSchema</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/builder" class="external-link" rel="nofollow">builder</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.assembly.builder.CompositeBuilder</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/contribution" class="external-link" rel="nofollow">contribution</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.contribution.ContributionFactory</LI> + <LI>org.apache.tuscany.sca.contribution.java.JavaImportExportFactory</LI> + <LI>org.apache.tuscany.sca.contribution.namespace.NamespaceImportExportFactory</LI> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint</LI> + <LI>org.apache.tuscany.sca.contribution.processor.StAXAttributeProcessor</LI> + <LI>org.apache.tuscany.sca.contribution.processor.StAXAttributeProcessorExtensionPoint</LI> + <LI>org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.contribution.processor.URLArtifactProcessorExtensionPoint</LI> + <LI>org.apache.tuscany.sca.contribution.processor.ValidatingXMLInputFactory</LI> + <LI>org.apache.tuscany.sca.contribution.processor.ValidationSchemaExtensionPoint</LI> + <LI>org.apache.tuscany.sca.contribution.resolver.ModelResolver</LI> + <LI>org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint</LI> + <LI>org.apache.tuscany.sca.contribution.scanner.ContributionScannerExtensionPoint</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/core" class="external-link" rel="nofollow">core</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.assembly.AssemblyFactory</LI> + <LI>org.apache.tuscany.sca.context.ComponentContextFactory</LI> + <LI>org.apache.tuscany.sca.context.RequestContextFactory</LI> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint</LI> + <LI>org.apache.tuscany.sca.core.scope.ScopeRegistry</LI> + <LI>org.apache.tuscany.sca.invocation.MessageFactory</LI> + <LI>org.apache.tuscany.sca.runtime.CompositeActivator</LI> + <LI>org.apache.tuscany.sca.runtime.DomainRegistryFactory</LI> + <LI>org.apache.tuscany.sca.runtime.EndpointReferenceBinder</LI> + <LI>org.apache.tuscany.sca.runtime.EndpointRegistry</LI> + <LI>org.apache.tuscany.sca.runtime.EndpointSerializer</LI> + <LI>org.apache.tuscany.sca.work.WorkScheduler</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/core-databinding" class="external-link" rel="nofollow">core-databinding</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.databinding.PullTransformer</LI> + <LI>org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor</LI> + <LI>org.apache.tuscany.sca.runtime.RuntimeWireProcessor</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/core-spi" class="external-link" rel="nofollow">core-spi</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.context.ContextFactoryExtensionPoint</LI> + <LI>org.apache.tuscany.sca.endpointresolver.EndpointResolverFactoryExtensionPoint</LI> + <LI>org.apache.tuscany.sca.provider.ProviderFactoryExtensionPoint</LI> + <LI>org.apache.tuscany.sca.runtime.RuntimeWireProcessorExtensionPoint</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/databinding" class="external-link" rel="nofollow">databinding</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.databinding.DataBinding</LI> + <LI>org.apache.tuscany.sca.databinding.DataBindingExtensionPoint</LI> + <LI>org.apache.tuscany.sca.databinding.Mediator</LI> + <LI>org.apache.tuscany.sca.databinding.PullTransformer</LI> + <LI>org.apache.tuscany.sca.databinding.PushTransformer</LI> + <LI>org.apache.tuscany.sca.databinding.SimpleTypeMapper</LI> + <LI>org.apache.tuscany.sca.databinding.TransformerExtensionPoint</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/deployment" class="external-link" rel="nofollow">deployment</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.deployment.Deployer</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/extensibility" class="external-link" rel="nofollow">extensibility</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.core.FactoryExtensionPoint</LI> + <LI>org.apache.tuscany.sca.core.ModuleActivatorExtensionPoint</LI> + <LI>org.apache.tuscany.sca.core.UtilityExtensionPoint</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/monitor" class="external-link" rel="nofollow">monitor</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.monitor.MonitorFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/xsd" class="external-link" rel="nofollow">xsd</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.contribution.resolver.ModelResolver</LI> + <LI>org.apache.tuscany.sca.xsd.XSDFactory</LI> +</UL> +</TD> +</TR> +</TBODY></TABLE> +</DIV> + + +<H1><A name="Tuscany2.xExtensibilityandSPIs-TechnologySpecifics%28Doweneedthishere%3F%29"></A>Technology Specifics (Do we need this here?)</H1> + +<H2><A name="Tuscany2.xExtensibilityandSPIs-SPIs"></A>SPIs</H2> + +<DIV class="table-wrap"> +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> Module </TH> +<TH class="confluenceTh"> Exported Packages </TH> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-atom" class="external-link" rel="nofollow">binding-atom</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.atom</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-atom-js-dojo" class="external-link" rel="nofollow">binding-atom-js-dojo</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.atom.js.dojo</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-atom-runtime" class="external-link" rel="nofollow">binding-atom-runtime</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.atom.collection</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-ejb" class="external-link" rel="nofollow">binding-ejb</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.ejb</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-http" class="external-link" rel="nofollow">binding-http</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.http</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-jms" class="external-link" rel="nofollow">binding-jms</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.jms</LI> + <LI>org.apache.tuscany.sca.binding.jms.operationselector</LI> + <LI>org.apache.tuscany.sca.binding.jms.policy</LI> + <LI>org.apache.tuscany.sca.binding.jms.policy.authentication.token</LI> + <LI>org.apache.tuscany.sca.binding.jms.policy.header</LI> + <LI>org.apache.tuscany.sca.binding.jms.wireformat</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-jsonp" class="external-link" rel="nofollow">binding-jsonp</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.jsonp</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc" class="external-link" rel="nofollow">binding-jsonrpc</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.jsonrpc</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-js-dojo" class="external-link" rel="nofollow">binding-jsonrpc-js-dojo</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.jsonrpc.js.dojo</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-rmi" class="external-link" rel="nofollow">binding-rmi</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.rmi</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-sca-axis2-runtime" class="external-link" rel="nofollow">binding-sca-axis2-runtime</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.sca.axis2</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime-rmi" class="external-link" rel="nofollow">binding-sca-runtime-rmi</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.sca.rmi</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-ws" class="external-link" rel="nofollow">binding-ws</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.ws</LI> + <LI>org.apache.tuscany.sca.binding.ws.addressing</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-ws-axis2" class="external-link" rel="nofollow">binding-ws-axis2</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.ws.axis2</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-ws-axis2-policy" class="external-link" rel="nofollow">binding-ws-axis2-policy</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.ws.axis2.policy.authentication.token</LI> + <LI>org.apache.tuscany.sca.binding.ws.axis2.policy.configuration</LI> + <LI>org.apache.tuscany.sca.binding.ws.axis2.policy.header</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-ws-wsdlgen" class="external-link" rel="nofollow">binding-ws-wsdlgen</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.ws.wsdlgen</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/common-java" class="external-link" rel="nofollow">common-java</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.common.java.classloader</LI> + <LI>org.apache.tuscany.sca.common.java.collection</LI> + <LI>org.apache.tuscany.sca.common.java.io</LI> + <LI>org.apache.tuscany.sca.common.java.reflection</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/common-xml" class="external-link" rel="nofollow">common-xml</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.common.xml</LI> + <LI>org.apache.tuscany.sca.common.xml.dom</LI> + <LI>org.apache.tuscany.sca.common.xml.sax</LI> + <LI>org.apache.tuscany.sca.common.xml.stax</LI> + <LI>org.apache.tuscany.sca.common.xml.stax.reader</LI> + <LI>org.apache.tuscany.sca.common.xml.xpath</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/contribution-osgi" class="external-link" rel="nofollow">contribution-osgi</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.contribution.osgi</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/databinding-axiom" class="external-link" rel="nofollow">databinding-axiom</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.databinding.axiom</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/databinding-jaxb" class="external-link" rel="nofollow">databinding-jaxb</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.databinding.jaxb</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/databinding-json" class="external-link" rel="nofollow">databinding-json</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.databinding.json</LI> + <LI>org.apache.tuscany.sca.databinding.json.axiom</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/endpoint-tribes" class="external-link" rel="nofollow">endpoint-tribes</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.endpoint.tribes</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/extensibility-equinox" class="external-link" rel="nofollow">extensibility-equinox</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.extensibility.equinox</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/host-http" class="external-link" rel="nofollow">host-http</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.host.http</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/host-rmi" class="external-link" rel="nofollow">host-rmi</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.host.rmi</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/host-webapp" class="external-link" rel="nofollow">host-webapp</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.host.webapp</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-bpel" class="external-link" rel="nofollow">implementation-bpel</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.implementation.bpel</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-java" class="external-link" rel="nofollow">implementation-java</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.implementation.java</LI> + <LI>org.apache.tuscany.sca.implementation.java.introspect</LI> + <LI>org.apache.tuscany.sca.implementation.java.introspect.impl</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-java-runtime" class="external-link" rel="nofollow">implementation-java-runtime</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.implementation.java.context</LI> + <LI>org.apache.tuscany.sca.implementation.java.injection</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-osgi" class="external-link" rel="nofollow">implementation-osgi</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.implementation.osgi</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-spring" class="external-link" rel="nofollow">implementation-spring</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.implementation.spring</LI> + <LI>org.apache.tuscany.sca.implementation.spring.introspect</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-web" class="external-link" rel="nofollow">implementation-web</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.implementation.web</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-web-runtime" class="external-link" rel="nofollow">implementation-web-runtime</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.implementation.web.runtime.utils</LI> + <LI>org.apache.tuscany.sca.implementation.web.runtime</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-widget" class="external-link" rel="nofollow">implementation-widget</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.implementation.widget</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-widget-runtime" class="external-link" rel="nofollow">implementation-widget-runtime</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.implementation.widget.provider</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/interface-java" class="external-link" rel="nofollow">interface-java</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.interfacedef.java.impl</LI> + <LI>org.apache.tuscany.sca.interfacedef.java.introspect</LI> + <LI>org.apache.tuscany.sca.interfacedef.java</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/interface-java-jaxws" class="external-link" rel="nofollow">interface-java-jaxws</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.interfacedef.java.jaxws</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/interface-wsdl" class="external-link" rel="nofollow">interface-wsdl</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.interfacedef.wsdl</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/node-launcher-equinox" class="external-link" rel="nofollow">node-launcher-equinox</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.node.equinox.launcher</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/policy-security" class="external-link" rel="nofollow">policy-security</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.policy.authorization</LI> + <LI>org.apache.tuscany.sca.policy.security.jaas</LI> + <LI>org.apache.tuscany.sca.policy.authentication.basic</LI> + <LI>org.apache.tuscany.sca.policy.security</LI> + <LI>org.apache.tuscany.sca.policy.identity</LI> + <LI>org.apache.tuscany.sca.policy.authentication.token</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/policy-xml-ws" class="external-link" rel="nofollow">policy-xml-ws</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.policy.xml.ws</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/web-javascript" class="external-link" rel="nofollow">web-javascript</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.web.javascript</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/node-impl" class="external-link" rel="nofollow">node-impl</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.node.impl</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/node-impl-osgi" class="external-link" rel="nofollow">node-impl-osgi</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.osgi.remoteserviceadmin</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/node-launcher" class="external-link" rel="nofollow">node-launcher</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.node.launcher</LI> +</UL> +</TD> +</TR> +</TBODY></TABLE> +</DIV> + + +<H2><A name="Tuscany2.xExtensibilityandSPIs-Extensions"></A>Extensions</H2> + +<DIV class="table-wrap"> +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> Modules </TH> +<TH class="confluenceTh"> Declared ExtensionPoints/Extensions </TH> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-atom" class="external-link" rel="nofollow">binding-atom</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.atom.AtomBindingFactory</LI> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-atom-js-dojo" class="external-link" rel="nofollow">binding-atom-js-dojo</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.web.javascript.JavascriptProxyFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-atom-runtime" class="external-link" rel="nofollow">binding-atom-runtime</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.provider.BindingProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-ejb" class="external-link" rel="nofollow">binding-ejb</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.ejb.EJBBindingFactory</LI> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.definitions.xml.Definitions</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-ejb-runtime" class="external-link" rel="nofollow">binding-ejb-runtime</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.provider.BindingProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-http" class="external-link" rel="nofollow">binding-http</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.http.HTTPBindingFactory</LI> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-http-runtime" class="external-link" rel="nofollow">binding-http-runtime</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.provider.BindingProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-jms" class="external-link" rel="nofollow">binding-jms</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.provider.SCADefinitionsProvider</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-jms-runtime" class="external-link" rel="nofollow">binding-jms-runtime</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.provider.BindingProviderFactory</LI> + <LI>org.apache.tuscany.sca.provider.OperationSelectorProviderFactory</LI> + <LI>org.apache.tuscany.sca.provider.PolicyProviderFactory</LI> + <LI>org.apache.tuscany.sca.provider.WireFormatProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-jsonp" class="external-link" rel="nofollow">binding-jsonp</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.jsonp.JSONPBindingFactory</LI> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.contribution.processor.ValidationSchema</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime" class="external-link" rel="nofollow">binding-jsonp-runtime</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.provider.BindingProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc" class="external-link" rel="nofollow">binding-jsonrpc</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.jsonrpc.JSONRPCBindingFactory</LI> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-js-dojo" class="external-link" rel="nofollow">binding-jsonrpc-js-dojo</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.web.javascript.JavascriptProxyFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime" class="external-link" rel="nofollow">binding-jsonrpc-runtime</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.provider.BindingProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-rmi" class="external-link" rel="nofollow">binding-rmi</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.rmi.RMIBindingFactory</LI> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-rmi-runtime" class="external-link" rel="nofollow">binding-rmi-runtime</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.provider.BindingProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-sca-axis2-runtime" class="external-link" rel="nofollow">binding-sca-axis2-runtime</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.provider.BindingProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime" class="external-link" rel="nofollow">binding-sca-runtime</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.definitions.xml.Definitions</LI> + <LI>org.apache.tuscany.sca.provider.BindingProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime-rmi" class="external-link" rel="nofollow">binding-sca-runtime-rmi</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.provider.BindingProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-ws" class="external-link" rel="nofollow">binding-ws</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory</LI> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-ws-axis2" class="external-link" rel="nofollow">binding-ws-axis2</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.definitions.xml.Definitions</LI> + <LI>org.apache.tuscany.sca.provider.BindingProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-ws-axis2-policy" class="external-link" rel="nofollow">binding-ws-axis2-policy</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.provider.PolicyProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/binding-ws-wsdlgen" class="external-link" rel="nofollow">binding-ws-wsdlgen</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.assembly.builder.BindingBuilder</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/contribution-osgi" class="external-link" rel="nofollow">contribution-osgi</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.contribution.resolver.ModelResolver</LI> + <LI>org.apache.tuscany.sca.contribution.scanner.ContributionScanner</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/databinding-axiom" class="external-link" rel="nofollow">databinding-axiom</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.databinding.DataBinding</LI> + <LI>org.apache.tuscany.sca.databinding.PullTransformer</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/databinding-jaxb" class="external-link" rel="nofollow">databinding-jaxb</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.databinding.DataBinding</LI> + <LI>org.apache.tuscany.sca.databinding.jaxb.XMLAdapterExtensionPoint</LI> + <LI>org.apache.tuscany.sca.databinding.PullTransformer</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/databinding-jaxb-axiom" class="external-link" rel="nofollow">databinding-jaxb-axiom</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.databinding.PullTransformer</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/databinding-json" class="external-link" rel="nofollow">databinding-json</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.databinding.DataBinding</LI> + <LI>org.apache.tuscany.sca.databinding.PullTransformer</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/domain-node" class="external-link" rel="nofollow">domain-node</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/endpoint-dht" class="external-link" rel="nofollow">endpoint-dht</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.runtime.EndpointRegistry</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/endpoint-tribes" class="external-link" rel="nofollow">endpoint-tribes</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.runtime.EndpointRegistry</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/endpoint-zookeeper" class="external-link" rel="nofollow">endpoint-zookeeper</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.runtime.EndpointRegistry</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/host-http" class="external-link" rel="nofollow">host-http</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.host.http.ServletHostExtensionPoint</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/host-jetty" class="external-link" rel="nofollow">host-jetty</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.host.http.ServletHost</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/host-jetty7" class="external-link" rel="nofollow">host-jetty7</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.host.http.ServletHost</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/host-rmi" class="external-link" rel="nofollow">host-rmi</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.host.rmi.RMIHostExtensionPoint</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/host-webapp" class="external-link" rel="nofollow">host-webapp</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.host.http.ServletHost</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-bpel" class="external-link" rel="nofollow">implementation-bpel</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.contribution.resolver.ModelResolver</LI> + <LI>org.apache.tuscany.sca.implementation.bpel.BPELFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-bpel-runtime" class="external-link" rel="nofollow">implementation-bpel-runtime</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.provider.ImplementationProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-java" class="external-link" rel="nofollow">implementation-java</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.implementation.java.introspect.JavaClassVisitor</LI> + <LI>org.apache.tuscany.sca.implementation.java.JavaImplementationFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-java-runtime" class="external-link" rel="nofollow">implementation-java-runtime</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.context.PropertyValueFactory</LI> + <LI>org.apache.tuscany.sca.definitions.xml.Definitions</LI> + <LI>org.apache.tuscany.sca.provider.ImplementationProviderFactory</LI> + <LI>org.apache.tuscany.sca.runtime.RuntimeWireProcessor</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-osgi" class="external-link" rel="nofollow">implementation-osgi</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.contribution.resolver.ModelResolver</LI> + <LI>org.apache.tuscany.sca.implementation.osgi.OSGiImplementationFactory</LI> + <LI>org.apache.tuscany.sca.implementation.osgi.ServiceDescriptionsFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-osgi-runtime" class="external-link" rel="nofollow">implementation-osgi-runtime</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.provider.ImplementationProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-spring" class="external-link" rel="nofollow">implementation-spring</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.assembly.builder.ImplementationBuilder</LI> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.definitions.xml.Definitions</LI> + <LI>org.apache.tuscany.sca.provider.ImplementationProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-web" class="external-link" rel="nofollow">implementation-web</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.assembly.builder.ImplementationBuilder</LI> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.implementation.web.WebImplementationFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-web-client" class="external-link" rel="nofollow">implementation-web-client</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.provider.ImplementationProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-web-runtime" class="external-link" rel="nofollow">implementation-web-runtime</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.provider.ImplementationProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-widget" class="external-link" rel="nofollow">implementation-widget</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.implementation.widget.WidgetImplementationFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-widget-runtime" class="external-link" rel="nofollow">implementation-widget-runtime</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.provider.ImplementationProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/implementation-widget-runtime-dojo" class="external-link" rel="nofollow">implementation-widget-runtime-dojo</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.web.javascript.ComponentJavaScriptGenerator</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/interface-java" class="external-link" rel="nofollow">interface-java</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor</LI> + <LI>org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/interface-java-jaxws" class="external-link" rel="nofollow">interface-java-jaxws</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.interfacedef.FaultExceptionMapper</LI> + <LI>org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/interface-wsdl" class="external-link" rel="nofollow">interface-wsdl</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.contribution.resolver.ModelResolver</LI> + <LI>org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/node-impl" class="external-link" rel="nofollow">node-impl</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.node.configuration.NodeConfigurationFactory</LI> + <LI>org.apache.tuscany.sca.node.NodeFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/node-impl-osgi" class="external-link" rel="nofollow">node-impl-osgi</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.node.NodeFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/policy-logging" class="external-link" rel="nofollow">policy-logging</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.assembly.builder.PolicyBuilder</LI> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.definitions.xml.Definitions</LI> + <LI>org.apache.tuscany.sca.provider.PolicyProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/policy-security" class="external-link" rel="nofollow">policy-security</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> + <LI>org.apache.tuscany.sca.definitions.xml.Definitions</LI> + <LI>org.apache.tuscany.sca.provider.PolicyProviderFactory</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/policy-xml-ws" class="external-link" rel="nofollow">policy-xml-ws</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/sca-client-impl" class="external-link" rel="nofollow">sca-client-impl</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/sca-client-rmi" class="external-link" rel="nofollow">sca-client-rmi</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/web-javascript" class="external-link" rel="nofollow">web-javascript</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.web.javascript.ComponentJavaScriptGeneratorExtensionPoint</LI> + <LI>org.apache.tuscany.sca.web.javascript.JavascriptProxyFactoryExtensionPoint</LI> +</UL> +</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/modules/web-javascript-dojo" class="external-link" rel="nofollow">web-javascript-dojo</A> </TD> +<TD class="confluenceTd"> <BR class="atl-forced-newline"> +<UL> + <LI>org.apache.tuscany.sca.core.ModuleActivator</LI> +</UL> +</TD> +</TR> +</TBODY></TABLE> +</DIV> + + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Tuscany 2.x Extensibility and SPIs'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/tuscany-maven-archetypes.html b/site/trunk/site-publish/documentation-2x/tuscany-maven-archetypes.html new file mode 100644 index 0000000000..ae0f54d03a --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/tuscany-maven-archetypes.html @@ -0,0 +1,243 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Tuscany Maven Archetypes : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="" title="Tuscany Maven Archetypes">Tuscany Maven Archetypes</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="" title="Tuscany Maven Archetypes">Tuscany Maven Archetypes</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Tuscany Maven Archetypes</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=2329557"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=2329557">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=2329557"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=2329557">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=2329557"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=2329557">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + +<H1><A name="TuscanyMavenArchetypes-TuscanyMavenArchetypes"></A>Tuscany Maven Archetypes</H1> + +<P>Tuscany provides some <A href="http://maven.apache.org/guides/introduction/introduction-to-archetypes.html" class="external-link" rel="nofollow">Maven archetypes </A> to make it easy to get going using Tuscany. Maven archetypes provide a simple way to create a project thats configured with exactly what you need to develop your application. You don't need to download, install, or pre-configure Tuscany or your environment, thats all done for you automatically, all you need pre-installed is Maven and Java.</P> + +<P>To give it a try run the following command:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +mvn archetype:generate -DarchetypeCatalog=http:<SPAN class="code-comment">//tuscany.apache.org</SPAN> +</PRE> +</DIV></DIV> + +<P>That will list out the available archetypes and ask you to choose which one you want:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +Choose archetype: +1: http:<SPAN class="code-comment">//tuscany.apache.org -> tuscany-contribution-jar (Create an SCA contribution JAR) +</SPAN>2: http:<SPAN class="code-comment">//tuscany.apache.org -> tuscany-quickstart (Create a Tuscany SCA and JSP project) +</SPAN>3: http:<SPAN class="code-comment">//tuscany.apache.org -> tuscany-quickstart-stripes (Create a Tuscany SCA and Stripes Web Framework project) +</SPAN>4: http:<SPAN class="code-comment">//tuscany.apache.org -> tuscany-quickstart-jsf (Create a Tuscany SCA and JSF project) +</SPAN>Choose a number: (1/2/3/4): +</PRE> +</DIV></DIV> + +<P>You are then prompted to answer several questions about the project such as the Maven group and artifact IDs, Java package names etc. Some of those will show default values before the prompt so you can just hit enter to take the default. Thats it, and then the Maven project is created in a folder in the current directory named after the artifactid you entered.</P> + +<P>The following shows the console session for creating an SCA contribution JAR:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +Choose a number: (1/2/3/4): 4 +Define value <SPAN class="code-keyword">for</SPAN> groupId: : org.myco.sca.test +Define value <SPAN class="code-keyword">for</SPAN> artifactId: : scatest +Define value <SPAN class="code-keyword">for</SPAN> version: 1.0-SNAPSHOT: : +Define value <SPAN class="code-keyword">for</SPAN> <SPAN class="code-keyword">package</SPAN>: org.myco.sca.test: : +Confirm properties configuration: +groupId: org.myco.sca.test +artifactId: scatest +version: 1.0-SNAPSHOT +<SPAN class="code-keyword">package</SPAN>: org.myco.sca.test + Y: : +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD SUCCESSFUL +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 1 minute 15 seconds +[INFO] Finished at: Tue Mar 31 15:08:45 BST 2009 +[INFO] Final Memory: 8M/14M +[INFO] ------------------------------------------------------------------------ +</PRE> +</DIV></DIV> + +<P>That will create a Maven project in a folder named scatest with the following directory structure and files:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +scatest\pom.xml +scatest\src\main\java\org\myco\sca\test\HelloworldImpl.java +scatest\src\main\java\org\myco\sca\test\HelloworldService.java +scatest\src\main\resources\helloworld.composite +scatest\src\main\resources\META-INF\sca-contribution.xml +</PRE> +</DIV></DIV> + +<P>When using one of the archetypes which create webapp projects the pom.xml is configured with the maven Jetty plugin so you can run the webapp right away without needing to install the WAR file into an appserver by using the command "mvn jetty:run". The following shows an examaple of this using the tuscany-quickstart archetype:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +> mvn archetype:generate -DarchetypeCatalog=http:<SPAN class="code-comment">//tuscany.apache.org +</SPAN>[INFO] Scanning <SPAN class="code-keyword">for</SPAN> projects... +. . . +Choose archetype: +1: http:<SPAN class="code-comment">//tuscany.apache.org -> tuscany-contribution-jar (Create an SCA JAR contribution project) +</SPAN>2: http:<SPAN class="code-comment">//tuscany.apache.org -> tuscany-contribution-zip (Create an SCA ZIP contribution project) +</SPAN>3: http:<SPAN class="code-comment">//tuscany.apache.org -> tuscany-quickstart (Create a simple SCA webapp project) +</SPAN>4: http:<SPAN class="code-comment">//tuscany.apache.org -> tuscany-quickstart-jsf (Create a Webapp using SCA and JSF) +</SPAN>5: http:<SPAN class="code-comment">//tuscany.apache.org -> tuscany-quickstart-stripes (Create a Webapp using SCA and the Stripes Web Framework) +</SPAN>Choose a number: (1/2/3/4/5): 3 +Define value <SPAN class="code-keyword">for</SPAN> groupId: : mygroup +Define value <SPAN class="code-keyword">for</SPAN> artifactId: : mytest +Define value <SPAN class="code-keyword">for</SPAN> version: 1.0-SNAPSHOT: : +Define value <SPAN class="code-keyword">for</SPAN> <SPAN class="code-keyword">package</SPAN>: mygroup: : +Confirm properties configuration: +groupId: mygroup +artifactId: mytest +version: 1.0-SNAPSHOT +<SPAN class="code-keyword">package</SPAN>: mygroup + Y: : +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD SUCCESSFUL +[INFO] ------------------------------------------------------------------------ + +> cd mytest +> mvn jetty:run +. . . +[INFO] Started Jetty Server +</PRE> +</DIV></DIV> + +<P>The webapp runs at the context path of the artifact name on port 8080 so on a web browser go to <A href="http://localhost:8080/mytest/" class="external-link" rel="nofollow">http://localhost:8080/mytest/</A> and you should see a page showing:</P> + +<P>Calling HelloworldService sayHello("world") returns:<BR> +Hello world </P> + + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Tuscany Maven Archetypes'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-context.png b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-context.png Binary files differnew file mode 100644 index 0000000000..644078c126 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-context.png diff --git a/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-context.png.jpeg b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-context.png.jpeg Binary files differnew file mode 100644 index 0000000000..b44bc4c7d8 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-context.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-structure.png b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-structure.png Binary files differnew file mode 100644 index 0000000000..968d460f81 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-structure.png diff --git a/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-structure.png.jpeg b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-structure.png.jpeg Binary files differnew file mode 100644 index 0000000000..55b08faa09 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.data/tuscany-runtime-structure.png.jpeg diff --git a/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.html b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.html new file mode 100644 index 0000000000..17d511af69 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/tuscany-runtime-overview.html @@ -0,0 +1,224 @@ + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <LINK type="text/css" rel="stylesheet" href="resources/space.css"> + <STYLE type="text/css"> + .footer { + background-image: url('http://cwiki.apache.org/confluence/images/border/border_bottom.gif'); + background-repeat: repeat-x; + background-position: left top; + padding-top: 4px; + color: #666; + } + </STYLE> + <SCRIPT type="text/javascript" language="javascript"> + var hide = null; + var show = null; + var children = null; + + function init() { + /* Search form initialization */ + var form = document.forms['search']; + if (form != null) { + form.elements['domains'].value = location.hostname; + form.elements['sitesearch'].value = location.hostname; + } + + /* Children initialization */ + hide = document.getElementById('hide'); + show = document.getElementById('show'); + children = document.all != null ? + document.all['children'] : + document.getElementById('children'); + if (children != null) { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + } + + function showChildren() { + children.style.display = 'block'; + show.style.display = 'none'; + hide.style.display = 'inline'; + } + + function hideChildren() { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + </SCRIPT> + <TITLE>Tuscany Runtime Overview</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + <BODY onload="init()"> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="development-guides.html" title="Development Guides">Development Guides</A> > <A href="" title="Tuscany Runtime Overview">Tuscany Runtime Overview</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="/wiki/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Tuscany Runtime Overview</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964723"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964723">Edit Page</A> + + <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964723"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964723">Add Page</A> + + <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964723"> + <IMG src="http://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5964723">Add News</A> + </DIV> + </DIV> + <DIV class="pagesubheading" style="margin: 0px 10px 0px 10px;"> + Added by <A href="http://cwiki.apache.org/confluence/users/viewuserprofile.action?username=slaws">Simon Laws</A>, last edited by <A href="http://cwiki.apache.org/confluence/users/viewuserprofile.action?username=slaws">Simon Laws</A> on Nov 13, 2009 + (<A class="noprint" href="http://cwiki.apache.org/confluence/pages/diffpages.action?pageId=5964723&originalId=5964756">view change</A>) + + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H1><A name="TuscanyRuntimeOverview-SoftwareOrganization"></A>Software Organization</H1> +<H3><A name="TuscanyRuntimeOverview-SourceCodeLocations"></A>Source Code Locations</H3> +<P>If you take a Tuscany SCA Java source distribution or look in the Tuscany subversion repository (<A href="http://svn.apache.org/repos/asf/tuscany/java/sca/" rel="nofollow">http://svn.apache.org/repos/asf/tuscany/java/sca/</A>) you'll see the code layed out as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +BUILDING +CHANGES +LICENSE +NOTICE +README +RELEASE_NOTES +archetypes - Maven archetypes <SPAN class="code-keyword">for</SPAN> creating Tuscany project templates +distribution - the code that defines and build Tuscany distributions +features - Maven projects that collect together Tuscany features +itest - project integration tests +modules - the source code <SPAN class="code-keyword">for</SPAN> the runtime and the SCA extensions +pom.xml +samples - project samples +shades - TBD +</PRE> +</DIV></DIV> + +<P>There is some related source code that's worth mentioning up front. Firstly the project Maven build relies on a set of Maven plugins that have been written specifically for Tuscany. They can also be found in the Tuscany subversion repository (<A href="http://svn.apache.org/repos/asf/tuscany/maven-plugins/trunk/" rel="nofollow">http://svn.apache.org/repos/asf/tuscany/maven-plugins/trunk/</A>) and are as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +maven-bundle-plugin - Creates Tuscany OSGi bundles based on the Tuscany modules and their dependencies + also generates eclipse PDE projects <SPAN class="code-keyword">for</SPAN> Tuscany modules +maven-eclipse-compiler - Compiles using the Eclipse compiler and performs OSGi validation +maven-java2wsdl-plugin - TBD +maven-osgi-junit - Runs Junit tests in an OSGi environment +maven-tuscany-plugin - TBD +maven-wsdl2java-plugin - TBD +</PRE> +</DIV></DIV> + +<P>Secondly there are a set of tests that the OASIS SCA specifications define called otests. These test the Tuscany SCA runtime for compliance with the specifications. The tests themselves are stored in the OASIS subversion system (<A href="http://tools.oasis-open.org/version-control/browse/" rel="nofollow">http://tools.oasis-open.org/version-control/browse/</A>). Tuscany has a set of modules that retrieve these tests automatically and configure the Tuscany environment to run them (<A href="http://svn.apache.org/repos/asf/tuscany/otest/" rel="nofollow">http://svn.apache.org/repos/asf/tuscany/otest/</A>) as follows:</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +README +build.xml - Ant utility script +pom.xml +sca-assembly - Generated automatically by svn externals when you check <SPAN class="code-keyword">this</SPAN> directory out +sca-java-caa - Generated automatically by svn externals when you check <SPAN class="code-keyword">this</SPAN> directory out +sca-java-ci - Generated automatically by svn externals when you check <SPAN class="code-keyword">this</SPAN> directory out +sca-policy - Generated automatically by svn externals when you check <SPAN class="code-keyword">this</SPAN> directory out +tuscany-java-caa-test-runner - Java Common Annotations and APIs test runner +tuscany-java-ci-test-runner - Java Component Implementation test runner +tuscany-policy-test-runner - Policy test runner +tuscany-test-runner - Assembly test runner +</PRE> +</DIV></DIV> + +<H3><A name="TuscanyRuntimeOverview-SCAJavaModules"></A>SCA Java Modules</H3> +<P>All of the functional code in Tuscany Java SCA can be found under the modules directory. There are a lot of sub-directories here but they basically fall into one of two categories, core function or extensions. We are using the term extension here in the sense that the SCA Assembly specification talks about and extension model You always have to have the core functions but most of the extensions are optional (we say most here because without some of the basic extensions the runtime won't do anything) Finding extension modules is easy. Modules that start with the following words are extensions.</P> + +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"> +binding +databinding +implementation +<SPAN class="code-keyword">interface</SPAN> +policy +</PRE> +</DIV></DIV> + +<P>As you can see SCA extensions relate to the extensible parts of the SCA composite file. For example, if you want to use <binding.jms/> in you SCA composite files then you need to include the Tuscany modules for this extension in you installation. In this case that would mean the modules binding-jms and binding-jms-runtime. <BR> +All of the other modules in the modules directory are core modules and are generally required to be present in you Tuscany runtime installation. The use of the word "generally" here sounds a bit vague. This is because the Tuscany runtime itself is based on an extensibility mechanism which means that many parts of the runtime (as well as the SCA extensions) are pluggable. In this way, for example, different hosting environments can be supported. Well talk about runtime extensibility further down this article but for the time being consider all core modules to be mandatory. </P> + +<H1><A name="TuscanyRuntimeOverview-RuntimeBuildingBlocks"></A>Runtime Building Blocks</H1> + +<P>As you may have realized the Tuscany SCA Java runtime is just a Java program that, once started listens for incoming messages (via SCA component services) and, sometimes responds with outgoing messages (via SCA component references).</P> + +<P><IMG src="tuscany-runtime-overview.data/tuscany-runtime-context.png" align="absmiddle" border="0"></P> + +<P>The runtime then provides the context within which SCA composite applications run. If we crack open the Tuscany Runtime box we see the following structure.</P> + +<P><IMG src="tuscany-runtime-overview.data/tuscany-runtime-structure.png" align="absmiddle" border="0"></P> + +<P>We'll take a high level look at these different blocks in turn starting with Core.</P> + +<H1><A name="TuscanyRuntimeOverview-TuscanyCore"></A>Tuscany Core</H1> +<H2><A name="TuscanyRuntimeOverview-OSGiandJSE"></A>OSGi and JSE</H2> +<P>The Tuscany runtime will work in the JSE environment and when deployed to an OSGi runtime like Felix or Equinox. Since 1.x we have been through an exercise of refactoring all of the runtime modules in OSGi bundles and providing consistent OSGi manifest files. See (???) for more details on how we OSGi-igfied the Tuscany runtime. </P> + +<H2><A name="TuscanyRuntimeOverview-RuntimeExtensibility"></A>Runtime Extensibility</H2> +<H2><A name="TuscanyRuntimeOverview-RuntimeModularity"></A>Runtime Modularity</H2> +<H1><A name="TuscanyRuntimeOverview-TuscanySPI"></A>Tuscany SPI</H1> + +<H1><A name="TuscanyRuntimeOverview-SCAExtensions"></A>SCA Extensions</H1> + +<H1><A name="TuscanyRuntimeOverview-TuscanyAPI"></A>Tuscany API</H1> + +<H1><A name="TuscanyRuntimeOverview-TuscanyHosting"></A>Tuscany Hosting</H1> +<H1><A name="TuscanyRuntimeOverview-RuntimeFeatures"></A>Runtime Features</H1> +<H1><A name="TuscanyRuntimeOverview-DomainandNodes"></A>Domain and Nodes</H1> +<H1><A name="TuscanyRuntimeOverview-RuntimeLifecycle"></A>Runtime Lifecycle</H1> +<H2><A name="TuscanyRuntimeOverview-Read"></A>Read</H2> +<H2><A name="TuscanyRuntimeOverview-Resolve"></A>Resolve</H2> +<H2><A name="TuscanyRuntimeOverview-Build"></A>Build</H2> +<H2><A name="TuscanyRuntimeOverview-Activate"></A>Activate</H2> +<H2><A name="TuscanyRuntimeOverview-Start"></A>Start</H2> +<H2><A name="TuscanyRuntimeOverview-Stop"></A>Stop</H2> + + </DIV> + + + </DIV> + </DIV> + <DIV class="footer"> + Generated by + <A href="http://www.atlassian.com/confluence/">Atlassian Confluence</A> (Version: 2.10.3 Build: 1519 Apr 15, 2009) + <A href="http://could.it/autoexport/">Auto Export Plugin</A> (Version: 1.0.0.beta1) + </DIV> + </BODY> +</HTML> diff --git a/site/trunk/site-publish/documentation-2x/tuscany-tomcat-distribution.html b/site/trunk/site-publish/documentation-2x/tuscany-tomcat-distribution.html new file mode 100644 index 0000000000..de9658782b --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/tuscany-tomcat-distribution.html @@ -0,0 +1,156 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>Tuscany Tomcat Distribution : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="" title="Tuscany Tomcat Distribution">Tuscany Tomcat Distribution</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="" title="Tuscany Tomcat Distribution">Tuscany Tomcat Distribution</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Tuscany Tomcat Distribution</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=2329563"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=2329563">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=2329563"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=2329563">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=2329563"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=2329563">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + +<H1><A name="TuscanyTomcatDistribution-TuscanyTomcatDistribution"></A>Tuscany Tomcat Distribution</H1> + +<P>Tuscany includes a tuscany.war distribution for SCA-enabling <A href="http://tomcat.apache.org/" class="external-link" rel="nofollow">Apache Tomcat</A>, find it at the <A href="http://tuscany.apache.org/sca-java-2x-releases.html" class="external-link" rel="nofollow">Tuscany download page</A>. </P> + +<P>There are several advantages with using an SCA-enabled Tomcat:</P> +<UL class="alternate" type="square"> + <LI>Individual Web Applications do not need to include any Tuscany jars or Tuscany configuration in the web.xml.</LI> + <LI>Other SCA contribution formats such as jar or zip files can be deployed to Tomcat.</LI> + <LI>An SCA domain can be used to support SCA wiring accross Web Applications and contributions</LI> +</UL> + + +<P>Updating Tomcat to use the tuscany.way distribution is really simple - deploy the tuscany.war to Tomcat, go to the <A href="http://localhost:8080/tuscany" class="external-link" rel="nofollow">Tuscany admin application</A>, click on install, and thats it. On a restart of Tomcat it can now run SCA contributions and SCA enabled Web applications. </P> + +<P>The initial release of the tuscany.war in 2.0 M3 includes support for SCA-enabled Web applications as well as SCA contributions deployed to a directory named "sca-contributions" in the Tomcat top-level directory, and a single Tomcat instance wide SCA domain. Upcoming releases will enhance the domain support to allow multiple SCA domains and domains spanning more than a single Tomcat instance.</P> + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : Tuscany Tomcat Distribution'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file diff --git a/site/trunk/site-publish/documentation-2x/user-reference.html b/site/trunk/site-publish/documentation-2x/user-reference.html new file mode 100644 index 0000000000..f32d0da77a --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/user-reference.html @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + + <LINK rel="SHORTCUT ICON" href="http://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + + <TITLE>User Reference : Apache Tuscany</TITLE> + + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + + + <BODY onload="init()"> + + + + + <TABLE valign="top" border="0" cellspacing="0" cellpadding="0" width="100%" background="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg"> + + <TR> + + <TD valing="top" align="left"> + + <A href="http://cwiki.apache.org/confluence/pages/viewpage.action?spaceKey=TUSCANYxDOCx2x&title=$siteroot"><IMG src="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg" height="91" width="25" border="0"></A> + + </TD> + + <TD> + + <A href="http://tuscany.apache.org/"><IMG src="http://tuscany.apache.org/images/TuscanyLogo.jpg" border="0"></A> + + </TD> + + + + <TD width="100%"> + + + + </TD> + + <!--td align="right"> + + <img src="http://incubator.apache.org/tuscany/images/apache- incubator- logo.png" border="0"> + + </td--> + + + + <!-- Adds the edit page link to the top banner--> + + <TD valign="bottom"> + + <DIV style="padding: 2px 10px; margin: 0px;"> + + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=5964351"> + + <IMG src="http://tuscany.apache.org/images/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + + </DIV> + + </TD> + + + + </TR> + + </TABLE> + + + + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + + <TR class="topBar"> + + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="index.html" title="Index">Index</A> > <A href="" title="User Reference">User Reference</A> + + </TD> + + + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + + <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + + </TD> + + </TR> + + </TABLE> + + + + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + + <TR> + + <TD align="left" valign="top"> + + + <DIV id="PageContent"> + + + + + <DIV class="pagecontent"> + + <DIV class="wiki-content"> + + <H3><A name="UserReference-ImplementationTypes"></A><A name="UserReference-ImplementationTypes"></A>Implementation Types</H3> + + +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> Type </TH> +<TH class="confluenceTh"> Release Introduced </TH> +<TH class="confluenceTh"> Description </TH> +</TR> +<TR> +<TD class="confluenceTd"> <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Java%20implementation.java&linkCreation=true&fromPageId=5964351" class="createlink">implementation.java</A></TD> +<TD class="confluenceTd">2.x-M1</TD> +<TD class="confluenceTd">Support for SCA components implemented with Java classes</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Java%20implementation.spring&linkCreation=true&fromPageId=5964351" class="createlink">implementation.spring</A></TD> +<TD class="confluenceTd">2.x-M3</TD> +<TD class="confluenceTd">Support for Spring Framework</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Java%20implementation.bpel&linkCreation=true&fromPageId=5964351" class="createlink">implementation.bpel</A></TD> +<TD class="confluenceTd">2.x-M1</TD> +<TD class="confluenceTd">Support for components implemented in BPEL</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Java%20implementation.osgi&linkCreation=true&fromPageId=5964351" class="createlink">implementation.osgi</A></TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd">Support for osgi</TD> +</TR> +<TR> +<TD class="confluenceTd"> <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Java%20implementation.web&linkCreation=true&fromPageId=5964351" class="createlink">implementation.web</A></TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd">Support JEE web apps as implementation types</TD> +</TR> +</TBODY></TABLE> + +<H3><A name="UserReference-ProtocolBindings"></A><A name="UserReference-ProtocolBindings"></A>Protocol Bindings</H3> + +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> Type </TH> +<TH class="confluenceTh"> Release Introduced </TH> +<TH class="confluenceTh"> Description </TH> +</TR> +<TR> +<TD class="confluenceTd"><A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Java%20binding.ws&linkCreation=true&fromPageId=5964351" class="createlink">binding.ws</A></TD> +<TD class="confluenceTd">2.0-M1</TD> +<TD class="confluenceTd">SOAP/HTTP web services</TD> +</TR> +<TR> +<TD class="confluenceTd"><A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Java%20binding.rmi&linkCreation=true&fromPageId=5964351" class="createlink">binding.rmi</A></TD> +<TD class="confluenceTd">2.0-M1</TD> +<TD class="confluenceTd">The Java RMI protocol</TD> +</TR> +<TR> +<TD class="confluenceTd"><A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Java%20binding.jms&linkCreation=true&fromPageId=5964351" class="createlink">binding.jms</A></TD> +<TD class="confluenceTd">?</TD> +<TD class="confluenceTd">Asynchronous JMS messaging</TD> +</TR> +<TR> +<TD class="confluenceTd"><A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Java%20binding.ejb&linkCreation=true&fromPageId=5964351" class="createlink">binding.ejb</A></TD> +<TD class="confluenceTd">?</TD> +<TD class="confluenceTd">EJB Binding</TD> +</TR> +<TR> +<TD class="confluenceTd"><A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Java%20binding.http&linkCreation=true&fromPageId=5964351" class="createlink">binding.http</A></TD> +<TD class="confluenceTd">?</TD> +<TD class="confluenceTd">Supports binding of methods over standard Hyper Text Transfer Protocol (HTTP), allowing you to create, retrieve, update, delete items. Also supports conditional creates, retrieves, updates, and deletes using the ETag and LastModified caching protocol described in HTTP.</TD> +</TR> +<TR> +<TD class="confluenceTd"><A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Java%20binding.jsonp&linkCreation=true&fromPageId=5964351" class="createlink">binding.jsonp</A></TD> +<TD class="confluenceTd">?</TD> +<TD class="confluenceTd">The JSON protocol over HTTP</TD> +</TR> +<TR> +<TD class="confluenceTd"><A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Java%20binding.jsonrpc&linkCreation=true&fromPageId=5964351" class="createlink">binding.jsonrpc</A></TD> +<TD class="confluenceTd">?</TD> +<TD class="confluenceTd">The JSON-RPC protocol</TD> +</TR> +<TR> +<TD class="confluenceTd"><A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Java%20binding.atom&linkCreation=true&fromPageId=5964351" class="createlink">binding.atom</A></TD> +<TD class="confluenceTd">?</TD> +<TD class="confluenceTd">supports Atom-publishing protocol, allowing you to create, retrieve, update, delete Atom entries</TD> +</TR> +</TBODY></TABLE> + +<H3><A name="UserReference-DataBindings"></A><A name="UserReference-DataBindings"></A>Data Bindings</H3> + +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> Type </TH> +<TH class="confluenceTh"> Release Introduced </TH> +<TH class="confluenceTh"> Description </TH> +</TR> +<TR> +<TD class="confluenceTd">databinding-axiom</TD> +<TD class="confluenceTd">?</TD> +<TD class="confluenceTd">Support for AXIOM data binding</TD> +</TR> +<TR> +<TD class="confluenceTd">databinding-jaxb</TD> +<TD class="confluenceTd">?</TD> +<TD class="confluenceTd">Support for JAXB data binding</TD> +</TR> +<TR> +<TD class="confluenceTd">databinding-json</TD> +<TD class="confluenceTd">?</TD> +<TD class="confluenceTd">Support for JSON data binding</TD> +</TR> +</TBODY></TABLE> + +<H3><A name="UserReference-Interfaces"></A><A name="UserReference-Interfaces"></A>Interfaces</H3> + +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> Type </TH> +<TH class="confluenceTh"> Release Introduced </TH> +<TH class="confluenceTh"> Description </TH> +</TR> +<TR> +<TD class="confluenceTd">interface-java</TD> +<TD class="confluenceTd">?</TD> +<TD class="confluenceTd">Interfaces described with java interfaces</TD> +</TR> +<TR> +<TD class="confluenceTd"><A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Java%20interface.wsdl&linkCreation=true&fromPageId=5964351" class="createlink">interface.wsdl</A></TD> +<TD class="confluenceTd">?</TD> +<TD class="confluenceTd">Interfaces described with WSDL definitions</TD> +</TR> +</TBODY></TABLE> + +<H3><A name="UserReference-Hosts"></A><A name="UserReference-Hosts"></A>Hosts</H3> + +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> Type </TH> +<TH class="confluenceTh"> Release Introduced </TH> +<TH class="confluenceTh"> Description </TH> +</TR> +<TR> +<TD class="confluenceTd">http-jetty</TD> +<TD class="confluenceTd">?</TD> +<TD class="confluenceTd">The integration between Tuscany and the Jetty web container</TD> +</TR> +</TBODY></TABLE> + + +<H3><A name="UserReference-Policy"></A><A name="UserReference-Policy"></A>Policy</H3> + +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> Type </TH> +<TH class="confluenceTh"> Release Introduced </TH> +<TH class="confluenceTh"> Description </TH> +</TR> +<TR> +<TD class="confluenceTd"><A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&title=SCA%20Java%20definitions.xml&linkCreation=true&fromPageId=5964351" class="createlink">definitions.xml</A></TD> +<TD class="confluenceTd">?</TD> +<TD class="confluenceTd">Defined intents, policy sets and binding defaults</TD> +</TR> +</TBODY></TABLE> + + </DIV> + + </DIV> + + </DIV> + + + </TD> + + </TR> + + </TABLE> + + + + + + <SCRIPT src="http://www.google-analytics.com/urchin.js" type="text/javascript"> + + </SCRIPT> + + <SCRIPT type="text/javascript"> + + _uacct = "UA-1174707-5"; + + urchinTracker(); + + </SCRIPT> + + + + + <A href="http://www.statcounter.com/" target="_blank"><IMG src="http://c26.statcounter.com/counter.php?sc_project=2619156&java=0&security=94bd7e7d&invisible=0" alt="website stats" border="0"></A> + + + + <DIV class="footer"> + + Copyright © 2003-2008, The Apache Software Foundation + + </DIV> + + + + + </BODY> + +</HTML> diff --git a/site/trunk/site-publish/documentation-2x/webnavigation.html b/site/trunk/site-publish/documentation-2x/webnavigation.html new file mode 100644 index 0000000000..1576901066 --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/webnavigation.html @@ -0,0 +1,141 @@ + + + + + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANYxDOCx2x/$images/favicon.ico"> + <TITLE>WebNavigation : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <STYLE> + .spacetree * ul { + padding-left:0px; + margin-left: 0px; + } + .spacetree * li { + margin-left: 5px; + padding-left:5px; + } + </STYLE> + + <BODY onload="init()"> + <!-- topNav --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" align="left" nowrap=""> + <A href="https://cwiki.apache.org/geronimo"> Home</A> > <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="" title="WebNavigation">WebNavigation</A> + </TD> + <TD align="right" valign="middle" nowrap=""> + <FORM name="search" action="http://www.google.com/search" method="get"> + <INPUT type="hidden" name="ie" value="UTF-8"> + <INPUT type="hidden" name="oe" value="UTF-8"> + <INPUT type="hidden" name="domains" value=""> + <INPUT type="hidden" name="sitesearch" value=""> + <INPUT type="text" name="q" maxlength="255" value=""> + <INPUT type="submit" name="btnG" value="Google Search"> + </FORM> + </TD> + </TR> + </TABLE> + + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="index.html" title="Apache Tuscany Docs 2.x">Apache Tuscany Docs 2.x</A> > <A href="" title="WebNavigation">WebNavigation</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://tuscany.apache.org/">Tuscany Home</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD valign="top" align="left" width="22%" bgcolor="#F9F9F9" class="noprint"> + <DIV class="tabletitle">Table of Contents</DIV> + <DIV class="spacetree"> + + + </DIV> + </TD> + <TD align="left" valign="top" width="78%"> + <!-- pageContent --> + <DIV id="PageContent"> + <DIV class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="http://geronimo.apache.org/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany Docs 2.x</DIV> + <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">WebNavigation</DIV> + + <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> +<!-- --> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5965035"> + <IMG src="http://geronimo.apache.org/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=5965035">Edit Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x"> + <IMG src="http://geronimo.apache.org/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A> + <A href="https://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANYxDOCx2x">Browse Space</A> + + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5965035"> + <IMG src="http://geronimo.apache.org/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A> + <A href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5965035">Add Page</A> + + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5965035"> + <IMG src="http://geronimo.apache.org/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A> + <A href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANYxDOCx2x&fromPageId=5965035">Add News</A> +<!-- --> + </DIV> + </DIV> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + + </DIV> + + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <!-- footer --> + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR> + <TD align="left" valign="middle" class="footer"> + + <IMG src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious"> + <A href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=550,height=550'); return false;">Bookmark this on Delicious</A> + + <IMG src="http://digg.com/img/badges/16x16-digg-guy.gif" width="16" height="16" alt="Digg!"> + <A href="" onclick="window.open('http://digg.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&topic=programming');">Digg this</A> + <!-- Slicker, but no text + <script type="text/javascript"> + digg_skin = 'icon'; + digg_window = 'new'; + digg_title = 'Apache Geronimo v2.2 Documentation : WebNavigation'; + digg_topic = 'programming'; + </script> + <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script> + --> + + </TD> + <TD align="right" valign="middle" class="footer"> + <A href="http://cwiki.apache.org/GMOxPMGT/geronimo-privacy-policy.html">Privacy Policy</A> - + Copyright © 2003-2010, The Apache Software Foundation, Licensed under <A href="http://www.apache.org/licenses/LICENSE-2.0">ASL 2.0.</A> + </TD> + </TR> + </TABLE> + + </BODY> +</HTML>
\ No newline at end of file |