blob: 5627815a551799634d84c2b97f0af45b478ea585 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="keywords" content="SMILA/Documentation/Bulkbuilder,SMILA/Documentation/JobManager,SMILA/Glossary" />
<link rel="shortcut icon" href="http://wiki.eclipse.org/SMILA/Documentation/favicon.ico" />
<link rel="search" type="application/opensearchdescription+xml" href="http://wiki.eclipse.org/opensearch_desc.php" title="Eclipsepedia (English)" />
<link rel="alternate" type="application/rss+xml" title="Eclipsepedia RSS Feed" href="http://wiki.eclipse.org/index.php?title=Special:Recentchanges&amp;feed=rss" />
<link rel="alternate" type="application/atom+xml" title="Eclipsepedia Atom Feed" href="http://wiki.eclipse.org/index.php?title=Special:Recentchanges&amp;feed=atom" />
<title>SMILA/Documentation/Bulkbuilder - Eclipsepedia</title>
<style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "/skins/eclipsenova/novaWide.css?116"; /*]]>*/</style>
<link rel="stylesheet" type="text/css" media="print" href="http://wiki.eclipse.org/skins/eclipsenova/eclipsenovaPrint.css?116" />
<link rel="stylesheet" type="text/css" media="handheld" href="http://wiki.eclipse.org/skins/eclipsenova/handheld.css?116" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/header.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/tabs.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/visual.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/layout.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/footer.css" media="screen" />
<!--[if IE]><link rel="stylesheet" type="text/css" href="/skins/eclipsenova/IEpngfix.css" media="screen" /><![endif]-->
<!--[if lt IE 5.5000]><style type="text/css">@import "/skins/eclipsenova/IE50Fixes.css?116";</style> <![endif]-->
<!--[if IE 5.5000]><style type="text/css">@import "/skins/eclipsenova/IE55Fixes.css?116";</style><![endif]-->
<!--[if IE 6]><style type="text/css">@import "/skins/eclipsenova/IE60Fixes.css?116";</style><![endif]-->
<!--[if IE 7]><style type="text/css">@import "/skins/eclipsenova/IE70Fixes.css?116";</style><![endif]-->
<!--[if lt IE 7]><script type="text/javascript" src="/skins/common/IEFixes.js?116"></script>
<meta http-equiv="imagetoolbar" content="no" /><![endif]-->
<script type= "text/javascript">/*<![CDATA[*/
var skin = "eclipsenova";
var stylepath = "/skins";
var wgArticlePath = "/$1";
var wgScriptPath = "";
var wgScript = "/index.php";
var wgServer = "http://wiki.eclipse.org";
var wgCanonicalNamespace = "";
var wgCanonicalSpecialPageName = false;
var wgNamespaceNumber = 0;
var wgPageName = "SMILA/Documentation/Bulkbuilder";
var wgTitle = "SMILA/Documentation/Bulkbuilder";
var wgAction = "view";
var wgRestrictionEdit = [];
var wgRestrictionMove = [];
var wgArticleId = "32865";
var wgIsArticle = true;
var wgUserName = null;
var wgUserGroups = null;
var wgUserLanguage = "en";
var wgContentLanguage = "en";
var wgBreakFrames = false;
var wgCurRevisionId = "264851";
var wgVersion = "1.12.0";
var wgEnableAPI = true;
var wgEnableWriteAPI = false;
/*]]>*/</script>
<script type="text/javascript" src="http://wiki.eclipse.org/skins/common/wikibits.js?116"><!-- wikibits js --></script>
<!-- Performance mods similar to those for bug 166401 -->
<script type="text/javascript" src="http://wiki.eclipse.org/index.php?title=-&amp;action=raw&amp;gen=js&amp;useskin=eclipsenova"><!-- site js --></script>
<!-- Head Scripts -->
<script type="text/javascript" src="http://wiki.eclipse.org/skins/common/ajax.js?116"></script>
<link rel="stylesheet" type="text/css" href="Bulkbuilder.html" /> </head>
<body class="mediawiki ns-0 ltr page-SMILA_Documentation_Bulkbuilder">
<div id="globalWrapper">
<div id="column-one">
<!-- Eclipse Additions for the Top Nav start here M. Ward-->
<div id="header">
<div id="header-graphic">
<img src="http://wiki.eclipse.org/skins/eclipsenova/eclipse.png" alt="Eclipse Wiki">
</div>
<!-- Pulled 101409 Mward -->
<div class="portlet" id="p-personal">
<div class="pBody">
<ul>
<li id="pt-login"><a href="http://wiki.eclipse.org/index.php?title=Special:Userlogin&amp;returnto=SMILA/Documentation/Bulkbuilder">Log in</a></li>
</ul>
</div>
</div>
<div id="header-icons">
<div id="sites">
<ul id="sitesUL">
<li><a href="http://www.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/eclipseIcon.png" width="28" height="28" alt="Eclipse Foundation" title="Eclipse Foundation" /><div>Eclipse Foundation</div></a></li>
<li><a href="http://marketplace.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/marketplace.png" width="28" height="28" alt="Eclipse Marketplace" title="Eclipse Marketplace" /><div>Eclipse Marketplace</div></a></li>
<li><a href="https://bugs.eclipse.org/bugs"><img src="http://dev.eclipse.org/custom_icons/system-search-bw.png" width="28" height="28" alt="Bugzilla" title="Bugzilla" /><div>Bugzilla</div></a></li>
<li><a href="http://live.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/audio-input-microphone-bw.png" width="28" height="28" alt="Live" title="Live" /><div>Eclipse Live</div></a></li>
<li><a href="http://planeteclipse.org"><img src="http://dev.eclipse.org/large_icons/devices/audio-card.png" width="28" height="28" alt="PlanetEclipse" title="Planet" /><div>Planet Eclipse</div></a></li>
<li><a href="http://portal.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/preferences-system-network-proxy-bw.png" width="28" height="28" alt="Portal" title="Portal" /><div>My Foundation Portal</div></a></li>
</ul>
</div>
</div>
</div>
<!-- NEW HEADER STUFF HERE -->
<div id="header-menu">
<div id="header-nav">
<ul> <li><a class="first_one" href="http://wiki.eclipse.org/" target="_self">Home</a></li> <li><a href="http://www.eclipse.org/downloads/" target="_self">Downloads</a></li>
<li><a href="http://www.eclipse.org/users/" target="_self">Users</a></li>
<li><a href="http://www.eclipse.org/membership/" target="_self">Members</a></li>
<li><a href="http://wiki.eclipse.org/index.php/Development_Resources" target="_self">Committers</a></li>
<li><a href="http://www.eclipse.org/resources/" target="_self">Resources</a></li>
<li><a href="http://www.eclipse.org/projects/" target="_self">Projects</a></li>
<li><a href="http://www.eclipse.org/org/" target="_self">About Us</a></li>
</ul>
</div>
<div id="header-utils">
<!-- moved the search window here -->
<form action="http://wiki.eclipse.org/Special:Search" >
<input class="input" name="search" type="text" accesskey="f" value="" />
<input type='submit' onclick="this.submit();" name="go" id="searchGoButton" class="button" title="Go to a page with this exact name if one exists" value="Go" />&nbsp;
<input type='submit' onclick="this.submit();" name="fulltext" class="button" id="mw-searchButton" title="Search Eclipsepedia for this text" value="Search" />
</form>
</div>
</div>
<!-- Eclipse Additions for the Header stop here -->
<!-- Additions and mods for leftside nav Start here -->
<!--Started nav rip here-->
<!-- these are the nav controls main page, changes etc -->
<div id="novaContent" class="faux">
<div id="leftcol">
<ul id="leftnav">
<!-- these are the page controls, edit history etc -->
<li class="separator"><a class="separator">Navigation &#160;&#160;</li>
<li id="n-mainpage"><a href="http://wiki.eclipse.org/Main_Page">Main Page</a></li>
<li id="n-portal"><a href="http://wiki.eclipse.org/Eclipsepedia:Community_Portal">Community portal</a></li>
<li id="n-currentevents"><a href="http://wiki.eclipse.org/Eclipsepedia:Current_events">Current events</a></li>
<li id="n-recentchanges"><a href="http://wiki.eclipse.org/Special:Recentchanges">Recent changes</a></li>
<li id="n-randompage"><a href="http://wiki.eclipse.org/Special:Random">Random page</a></li>
<li id="n-help"><a href="http://wiki.eclipse.org/Help:Contents">Help</a></li>
<li class="separator"><a class="separator">Toolbox &#160;&#160;</a></li>
<li id="t-whatlinkshere"><a href="http://wiki.eclipse.org/Special:Whatlinkshere/SMILA/Documentation/Bulkbuilder">What links here</a></li>
<li id="t-recentchangeslinked"><a href="http://wiki.eclipse.org/Special:Recentchangeslinked/SMILA/Documentation/Bulkbuilder">Related changes</a></li>
<!-- This is the toolbox section -->
<li id="t-upload"><a href="http://wiki.eclipse.org/Special:Upload">Upload file</a></li>
<li id="t-specialpages"><a href="http://wiki.eclipse.org/Special:Specialpages">Special pages</a></li>
<li id="t-print"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/Bulkbuilder&amp;printable=yes">Printable version</a></li> <li id="t-permalink"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/Bulkbuilder&amp;oldid=264851">Permanent link</a></li> </ul>
</div>
<!-- Additions and mods for leftside nav End here -->
<div id="column-content">
<div id="content">
<a name="top" id="top"></a>
<div id="tabs">
<ul class="primary">
<li class="active"><a href="Bulkbuilder.html"><span class="tab">Page</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=Talk:SMILA/Documentation/Bulkbuilder&amp;action=edit"><span class="tab">Discussion</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/Bulkbuilder&amp;action=edit"><span class="tab">View source</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/Bulkbuilder&amp;action=history"><span class="tab">History</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=Special:Userlogin&amp;returnto=SMILA/Documentation/Bulkbuilder"><span class="tab">Edit</span></a></li>
</ul>
</div>
<script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
<h1 class="firstHeading">SMILA/Documentation/Bulkbuilder</h1>
<div id="bodyContent">
<h3 id="siteSub">From Eclipsepedia</h3>
<div id="contentSub"><span class="subpages">&lt; <a href="../../SMILA.html" title="SMILA">SMILA</a> | <a href="../Documentation.html" title="SMILA/Documentation">Documentation</a></span></div>
<div id="jump-to-nav">Jump to: <a href="Bulkbuilder.html#column-one">navigation</a>, <a href="Bulkbuilder.html#searchInput">search</a></div> <!-- start content -->
<div class="messagebox" style="background-color: #def3fe; border: 1px solid #c5d7e0; color: black; padding: 5px; margin: 1ex 0; min-height: 35px; padding-left: 45px;">
<div style="float: left; margin-left: -40px;"><a href="http://wiki.eclipse.org/Image:Note.png" class="image" title="Note.png"><img alt="" src="http://wiki.eclipse.org/images/c/cc/Note.png" width="35" height="35" border="0" /></a></div>
<div><b> Available since SMILA 0.9.0!</b><br /></div>
</div>
<table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1"><a href="Bulkbuilder.html#BulkBuilder_.28bundle_org.eclipse.smila.bulkbuilder.29"><span class="tocnumber">1</span> <span class="toctext">BulkBuilder (bundle org.eclipse.smila.bulkbuilder)</span></a>
<ul>
<li class="toclevel-2"><a href="Bulkbuilder.html#JavaDoc"><span class="tocnumber">1.1</span> <span class="toctext">JavaDoc</span></a></li>
<li class="toclevel-2"><a href="Bulkbuilder.html#Configuration"><span class="tocnumber">1.2</span> <span class="toctext">Configuration</span></a></li>
<li class="toclevel-2"><a href="Bulkbuilder.html#Bulkbuilder_definition_in_workers.json"><span class="tocnumber">1.3</span> <span class="toctext">Bulkbuilder definition in workers.json</span></a></li>
<li class="toclevel-2"><a href="Bulkbuilder.html#Record_push_REST_API"><span class="tocnumber">1.4</span> <span class="toctext">Record push REST API</span></a>
<ul>
<li class="toclevel-3"><a href="Bulkbuilder.html#push_a_single_record_or_push_a_request_to_delete_a_single_record"><span class="tocnumber">1.4.1</span> <span class="toctext">push a single record or push a request to delete a single record</span></a></li>
<li class="toclevel-3"><a href="Bulkbuilder.html#push_a_micro_bulk"><span class="tocnumber">1.4.2</span> <span class="toctext">push a micro bulk</span></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
<a name="BulkBuilder_.28bundle_org.eclipse.smila.bulkbuilder.29"></a><h1> <span class="mw-headline"> BulkBuilder (bundle org.eclipse.smila.bulkbuilder) </span></h1>
<p>The <a href="../Glossary.html#B" title="SMILA/Glossary">Bulkbuilder</a> is a <a href="../Glossary.html#W" title="SMILA/Glossary">worker</a> designed to increase throughput of record processing in SMILA in an <a href="../Glossary.html#W" title="SMILA/Glossary">asynchronous workflow</a>.
</p><p>The bulk builder receives single records or <a href="../Glossary.html#M" title="SMILA/Glossary">micro bulks</a> and combines them into one single bulk for further processing an an asynchronous workflow.
The bulks are created on a time and/or bulks size base (either specified by a configuration file or with job parameters) to create new bulks from the incoming records as follows:
</p>
<ul><li> a record or microbulk is pushed into the system via the bulk builder's handlers
</li><li> if the Bulkbuilder has no current task for this job, a new initial task will be requested from the <a href="../Glossary.html#T" title="SMILA/Glossary">Taskmanager</a>
</li><li> the created bulks will be created with <tt>org.eclipse.smila.objectstore</tt>
</li><li> a record or a micro bulk will be appended to the bulk file specified by the worker's current task.
</li><li> if the bulk exceeds the configured bulk size, the bulk will be committed (i.e. the task will be finished and the bulk can be processed by follow-up workers), if not, the task will remain active and the bulk will remain in progress by the Bulkbuilder worker.
</li><li> open bulks will be examined regularly if they exceed their time constraints, i.e. if the bulk's age exceeds the maximum age configured. If so, the current bulk will be commited and the task finished.
</li></ul>
<a name="JavaDoc"></a><h2> <span class="mw-headline"> JavaDoc </span></h2>
<p>This page gives only a rough overview of the service. Please refer to the <a href="http://build.eclipse.org/rt/smila/javadoc/current/index.html?org/eclipse/smila/bulkbuilder/package-summary.html" class="external text" title="http://build.eclipse.org/rt/smila/javadoc/current/index.html?org/eclipse/smila/bulkbuilder/package-summary.html" rel="nofollow">Bulkbuilder JavaDoc</a> for detailed information about the Java components.
</p>
<a name="Configuration"></a><h2> <span class="mw-headline"> Configuration </span></h2>
<p>The Bulkbuilder can be configured via a configuration file named <tt>bulkbuilder.properties</tt>.
</p><p>The file looks like follows:
</p>
<pre>
# configuration of BulkBuilder
# maximum number of micro bulks that can be processed in parallel.
# Default is -1 (unlimited)
maxParallelMicroBulks=-1
# maximum size after which to close a pending bulk
# Default is 10m = 10 Mebibytes
bulkLimitSize=10m
# maximum time after which to close a pending bulk in seconds
# Default is 120.
bulkLimitTime=120
</pre>
<p>Description of parameters:
</p>
<ul><li>maxParallelMicroBulks
<ul><li>the number of maximum allowed parallel microbulks. Unlimited (-1) by default.
<ul><li> Since microbulks will be parsed in memory, a large amount of microbulks can cause <tt>OutOfMemoryException</tt>s, so the user should be careful about the amount of data confined in a microbulk as well as the number of parallel microbulk pushing clients.
</li></ul>
</li></ul>
</li><li>bulkLimitSize
<ul><li>the size limit for bulks
</li><li>if the bulk size exceeds this limit after a record or microbulk has been appended to this bulk, the task is finished and the next request will cause a new bulk to be created
</li><li>default size is 10 Mebibytes
</li></ul>
</li><li>bulkLimitTime
<ul><li>if the age of a bulk exceeds <tt>bulkLimitTime</tt> seconds, the bulk will be committed, the task will be finished and any future request will cause a new task and bulk to be generated.
</li><li>default age of a bulk is 120 seconds.
</li></ul>
</li></ul>
<p>These configured <tt>bulkLimitSize</tt> and <tt>bulkLimitTime</tt> configuration values can be overridden by job properties, so the limits can be fine tuned to the expected record sizes or frequencies of the different jobs and thus behave different for each job.
</p>
<a name="Bulkbuilder_definition_in_workers.json"></a><h2> <span class="mw-headline"> Bulkbuilder definition in workers.json </span></h2>
<pre>
{
&quot;name&quot;&nbsp;: &quot;bulkbuilder&quot;,
&quot;modes&quot;&nbsp;: [&quot;bulkSource&quot;, &quot;autoCommit&quot;],
&quot;output&quot;&nbsp;: [{
&quot;name&quot;&nbsp;: &quot;insertedRecords&quot;,
&quot;type&quot;&nbsp;: &quot;recordBulks&quot;,
&quot;group&quot;&nbsp;: &quot;recordBulks&quot;,
&quot;modes&quot;&nbsp;: [&quot;optional&quot;]
}, {
&quot;name&quot;&nbsp;: &quot;deletedRecords&quot;,
&quot;type&quot;&nbsp;: &quot;indexDeletes&quot;,
&quot;group&quot;&nbsp;: &quot;recordBulks&quot;,
&quot;modes&quot;&nbsp;: [&quot;optional&quot;]
}
]
}
</pre>
<p>After flushing a bulk (either automatically via timing or sizing constraints or triggered by the user), the task is finished and tasks will be generated for the workers connected to the <tt>insertedRecords</tt> and <tt>deletedRecords</tt> slots, so they can process the created bulk of records and/or delete requests pushed into the system.
</p><p>See <a href="JobManager.html" title="SMILA/Documentation/JobManager">JobManager</a> for more information on job processing.
</p>
<a name="Record_push_REST_API"></a><h2> <span class="mw-headline"> Record push REST API </span></h2>
<p>Note that records will only be processed for active jobs. If a job is not in the state "RUNNING" it will not accept new records or micro bulks.
</p><p>Also note that a record must contain a <tt>_recordid</tt> metadata attribute.
</p>
<a name="push_a_single_record_or_push_a_request_to_delete_a_single_record"></a><h3> <span class="mw-headline"> push a single record or push a request to delete a single record </span></h3>
<p>Use a POST request to push a record to a specific job.
Use a DELETE request to request deletion of a specific record in a specific job.
</p><p><b>Supported operations:</b>
</p>
<ul><li>POST: push a single record or commit the current bulk.
<ul><li>if a request body is present, this is interpreted as the JSON representation of a record and pushed into the system.
</li><li>if no request body is present the current bulks (i.e. the records and delte requests added to the system) will be flushed and the current task finished.
</li></ul>
</li><li>DELETE: request deletion of a single record
<ul><li>if the <tt>_recordid</tt> request parameter is present, then a delete request for the record with this id is appended to the DELETE bulk of the bulkbuilder
</li><li>if <tt>_recordid</tt> request parameter is not present, the current bulks will be flushed and the current task will be finished.
</li></ul>
</li></ul>
<p><b>Usage:</b>
</p>
<ul><li>URL: <tt>http://&lt;hostname&gt;:8080/smila/job/&lt;job-name&gt;/record/</tt>.
</li><li>Allowed methods:
<ul><li>POST
</li><li>DELETE
</li></ul>
</li><li>Response status codes:
<ul><li>202 ACCEPTED: Upon successful execution.
</li><li>404 NOT FOUND + JSON Body with error message: If the specified job cannot be found or has not the status <tt>RUNNING</tt>.
</li><li>400 BAD REQUEST + JSON Body with error message: If the pushed record/delete request has no <tt>_recordid</tt> or the record is invalid in another way (e.g. invalid JSON syntax).
</li></ul>
</li></ul>
<a name="push_a_micro_bulk"></a><h3> <span class="mw-headline"> push a micro bulk </span></h3>
<p>Note: a microbulk consists of a JSON record per line and is thus in itself not valid JSON.
</p><p>E.g.
</p>
<pre>
{&quot;_recordid&quot;: &quot;id1&quot;, &quot;attribute1&quot;: &quot;attribute1&quot;, ...}
{&quot;_recordid&quot;: &quot;id2&quot;, &quot;attribute1&quot;: &quot;attribute2&quot;, ...}
{&quot;_recordid&quot;: &quot;id3&quot;, &quot;attribute1&quot;: &quot;attribute3&quot;, ...}
</pre>
<p>Use a POST request to push a microbulk to a specific job.
</p><p><b>Supported operations:</b>
</p>
<ul><li>POST: push a microbulk.
<ul><li>if a request body is present, this is interpreted as the JSON representation of a record and pushed into the system.
</li><li>if no request body is present, an error will be generated. A micro bulk can be committed using the <tt>record</tt> API (see above).
</li></ul>
</li></ul>
<p><b>Usage:</b>
</p>
<ul><li>URL: <tt>http://&lt;hostname&gt;:8080/smila/job/&lt;job-name&gt;/bulk/</tt>.
</li><li>Allowed methods:
<ul><li>POST
</li></ul>
</li><li>Response status codes:
<ul><li>202 ACCEPTED: Upon successful execution.
</li><li>404 NOT FOUND + JSON Body with error message: If the specified job cannot be found or has not the status <tt>RUNNING</tt>.
</li><li>400 BAD REQUEST + JSON Body with error message: If one the pushed records in the microbulk has no <tt>_recordid</tt> or the micro bulk is invalid in another way (e.g. invalid JSON syntax of a single record, or a record spans over multiple lines of the input).
</li></ul>
</li></ul>
<!--
NewPP limit report
Preprocessor node count: 77/1000000
Post-expand include size: 649/2097152 bytes
Template argument size: 119/2097152 bytes
#ifexist count: 0/100
-->
<!-- Saved in parser cache with key wikidb:pcache:idhash:32865-0!1!0!!en!2!edit=0 and timestamp 20111027144048 -->
<div class="printfooter">
Retrieved from "<a href="Bulkbuilder.html">http://wiki.eclipse.org/SMILA/Documentation/Bulkbuilder</a>"</div>
<!-- end content -->
<div class="visualClear"></div>
</div>
</div>
</div>
<!-- Yoink of toolbox for phoenix moved up -->
</div>
</div>
<div id="clearFooter"/>
<div id="footer" >
<ul id="footernav">
<li class="first"><a href="http://www.eclipse.org/">Home</a></li>
<li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
<li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
<li><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></li>
<li><a href="http://www.eclipse.org/org/foundation/contact.php">Contact</a></li>
<li><a href="http://wiki.eclipse.org/Eclipsepedia:About" title="Eclipsepedia:About">About Eclipsepedia</a></li>
</ul>
<span id="copyright">Copyright &copy; 2011 The Eclipse Foundation. All Rights Reserved</span>
<p id="footercredit">This page was last modified 11:52, 17 August 2011 by <a href="http://wiki.eclipse.org/User:Andreas.Weber.empolis.com" title="User:Andreas.Weber.empolis.com">Andreas Weber</a>. Based on work by <a href="http://wiki.eclipse.org/User:Andreas.schank.attensity.com" title="User:Andreas.schank.attensity.com">A. Schank</a>.</p>
<p id="footerviews">This page has been accessed 267 times.</p>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-910670-4");
pageTracker._trackPageview();
</script>
<!-- <div class="visualClear"></div> -->
<script type="text/javascript">if (window.runOnloadHook) runOnloadHook();</script>
</div>
<!-- Served in 0.130 secs. --></body></html>