blob: 0d9d119ec23248656d206a31097e08d071866524 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head>
<title>Apache Felix - apache-felix-ipojo-online-manipulator</title>
<link rel="stylesheet" href="apache-felix-ipojo-online-manipulator_files/site.css" type="text/css" media="all">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head><body>
<div class="title"><div class="logo"><a href="http://felix.apache.org/site/index.html"><img alt="Apache Felix" src="apache-felix-ipojo-online-manipulator_files/logo.png" border="0"></a></div><div class="header"><a href="http://www.apache.org/"><img alt="Apache" src="apache-felix-ipojo-online-manipulator_files/apache.png" border="0"></a></div></div>
<div class="menu">
<ul>
<li><a href="http://felix.apache.org/site/news.html" title="news">news</a></li>
<li><a href="http://felix.apache.org/site/license.html" title="license">license</a></li>
<li><a href="http://felix.apache.org/site/downloads.cgi" rel="nofollow">downloads</a></li>
<li><a href="http://felix.apache.org/site/documentation.html" title="documentation">documentation</a></li>
<li><a href="http://felix.apache.org/site/mailinglists.html" title="mailinglists">mailing lists</a></li>
<li><a href="http://felix.apache.org/site/contributing.html" title="Contributing">contributing</a></li>
<li><a href="http://www.apache.org/" rel="nofollow">asf</a></li>
<li><a href="http://www.apache.org/foundation/sponsorship.html" rel="nofollow">sponsorship</a></li>
<li><a href="http://www.apache.org/foundation/thanks.html" rel="nofollow">sponsors</a>
<!-- ApacheCon Ad -->
<iframe src="apache-felix-ipojo-online-manipulator_files/button.html" style="border-width: 0pt; float: left;" scrolling="no" frameborder="0" height="135" width="135"></iframe>
<p style="height: 100px;">
<!-- ApacheCon Ad -->
</p></li></ul> </div>
<div class="main">
<style type="text/css">
@import url(http://people.apache.org/~clement/ipojo/site/superfish.css);
</style>
<style type="text/css">
@import url(http://people.apache.org/~clement/ipojo/site/style.css);
</style>
<p>
<script class="javascript" src="apache-felix-ipojo-online-manipulator_files/shCore.js"></script>
<script class="javascript" src="apache-felix-ipojo-online-manipulator_files/shBrushCSharp.js"></script>
<script class="javascript" src="apache-felix-ipojo-online-manipulator_files/shBrushPhp.js"></script>
<script class="javascript" src="apache-felix-ipojo-online-manipulator_files/shBrushJScript.js"></script>
<script class="javascript" src="apache-felix-ipojo-online-manipulator_files/shBrushVb.js"></script>
<script class="javascript" src="apache-felix-ipojo-online-manipulator_files/shBrushSql.js"></script>
<script class="javascript" src="apache-felix-ipojo-online-manipulator_files/shBrushXml.js"></script>
<script class="javascript" src="apache-felix-ipojo-online-manipulator_files/shBrushShell.js"></script>
<script class="javascript" src="apache-felix-ipojo-online-manipulator_files/shBrushDelphi.js"></script>
<script class="javascript" src="apache-felix-ipojo-online-manipulator_files/shBrushPython.js"></script>
<script class="javascript" src="apache-felix-ipojo-online-manipulator_files/shBrushJava.js"></script>
<script type="text/javascript" src="apache-felix-ipojo-online-manipulator_files/jquery-1.js"></script>
<script type="text/javascript" src="apache-felix-ipojo-online-manipulator_files/hoverIntent.js"></script>
<script type="text/javascript" src="apache-felix-ipojo-online-manipulator_files/superfish.js"></script>
<script type="text/javascript" src="apache-felix-ipojo-online-manipulator_files/supersubs.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("ul.sf-menu").supersubs({
minWidth: 14, // minimum width of sub-menus in em units
maxWidth: 30, // maximum width of sub-menus in em units
extraWidth: 1 // extra width can ensure lines don't sometimes turn over
// due to slight rounding differences and font-family
}).superfish(); // call supersubs first, then superfish, so that subs are
// not display:none when measuring. Call before initialising
// containing tabs for same reason.
});
</script>
</p><div class="main">
<div class="page-header">
<img src="apache-felix-ipojo-online-manipulator_files/header.png" class="header">
<a href="http://ipojo.org/"><img src="apache-felix-ipojo-online-manipulator_files/ipojo.png" class="header-logo" width="225"></a>
<ul class="sf-menu sf-js-enabled sf-shadow" id="ipojo-menu">
<li class="current">
<!-- Menu Overview -->
<a href="" class="sf-with-ul">Overview<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
<ul style="float: none; width: 14em; display: none; visibility: hidden;">
<li style="white-space: normal; float: left; width: 100%;">
<a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo.html" title="Apache Felix iPOJO">Home</a>
</li>
<li style="white-space: normal; float: left; width: 100%;">
<a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-why-choose-ipojo.html" title="apache-felix-ipojo-why-choose-ipojo">Why choose iPOJO</a>
</li>
<li style="white-space: normal; float: left; width: 100%;">
<a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-successstories.html" title="apache-felix-ipojo-successstories">Success stories</a>
</li>
<li style="white-space: normal; float: left; width: 100%;">
<a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-feature-overview.html" title="Apache Felix iPOJO Feature Overview">Features</a>
</li>
</ul>
</li>
<li class="">
<!-- Menu download -->
</li><li>
<a href="http://felix.apache.org/site/download.html" title="Download">Download </a>
</li>
<li class="">
<!-- Menu Documentation -->
<a href="" class="sf-with-ul">Documentation<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
<ul style="float: none; width: 14em; display: none; visibility: hidden;">
<!-- sub- menu : getting started -->
<li style="white-space: normal; float: left; width: 100%;" class="">
<a style="float: none; width: auto;" href="" class="sf-with-ul">Getting Started<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
<ul style="left: 14em; float: none; width: 14em; display: none; visibility: hidden;">
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-in-10-minutes.html" title="iPOJO in 10 minutes">iPOJO in 10 minutes</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/how-to-use-ipojo-annotations.html" title="How to use iPOJO Annotations">Using Annotations</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-hello-word-maven-based-tutorial.html" title="iPOJO Hello Word (Maven-Based) tutorial">Maven tutorial</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-advanced-tutorial.html" title="iPOJO Advanced Tutorial">Advanced tutorial</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-dosgi.html" title="apache-felix-ipojo-dosgi">Using Distributed OSGi</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-composition-tutorial.html" title="iPOJO Composition Tutorial">Application Composition</a></li>
</ul>
</li> <!-- end of getting started -->
<!-- sub menu : Describing Components -->
<li style="white-space: normal; float: left; width: 100%;" class="">
<a style="float: none; width: auto;" href="http://felix.apache.org/site/describing-components.html" class="sf-with-ul">Describing components<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
<ul style="left: 14em; float: none; width: 14em; display: none; visibility: hidden;">
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/service-requirement-handler.html" title="Service Requirement Handler">Requiring a service</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/providing-osgi-services.html" title="Providing OSGi services">Providing a service</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/lifecycle-callback-handler.html" title="Lifecycle Callback Handler">Lifecycle management</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/configuration-handler.html" title="Configuration Handler">Configuration</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/architecture-handler.html" title="Architecture Handler">Introspection</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/controller-lifecycle-handler.html" title="Controller Lifecycle Handler">Impacting the lifecycle</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/event-admin-handlers.html" title="Event Admin Handlers">Asynchronous communication</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-jmx-handler.html" title="iPOJO JMX Handler">JMX management</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/extender-pattern-handler.html" title="Extender Pattern Handler">Extender pattern</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/white-board-pattern-handler.html" title="White Board Pattern Handler">Whiteboard pattern</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/temporal-service-dependency.html" title="Temporal Service Dependency">Temporal dependencies</a></li>
</ul>
</li> <!-- End of describing components -->
<!-- sub- menu : User Guide -->
<li style="white-space: normal; float: left; width: 100%;" class="">
<a style="float: none; width: auto;" href="" class="sf-with-ul">User Guide<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
<ul style="left: 14em; float: none; width: 14em; display: none; visibility: hidden;">
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/using-xml-schemas.html" title="Using XML Schemas">XML Schemas</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-api.html" title="apache-felix-ipojo-api">API</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-testing-components.html" title="apache-felix-ipojo-testing-components">Testing components</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-eclipse-integration.html" title="apache-felix-ipojo-eclipse-integration">Eclipse Integration</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-faq.html" title="iPOJO FAQ">FAQ</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-reference-card.html" title="iPOJO-Reference-Card">Reference Card</a></li>
</ul>
</li> <!-- end of user guide -->
<!-- sub- menu : Dev Guide -->
<li class="" style="white-space: normal; float: left; width: 100%;">
<a style="float: none; width: auto;" href="" class="sf-with-ul">Advanced Topics<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
<ul style="left: 14em; float: none; width: 14em; display: none; visibility: hidden;">
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/ipojo/api/1.2.0" rel="nofollow">Javadoc</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/how-to-write-your-own-handler.html" title="How to write your own handler">Handler guide</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/how-to-use-ipojo-manipulation-metadata.html" title="How to use iPOJO Manipulation Metadata">Manipulation Metadata </a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/dive-into-the-ipojo-manipulation-depths.html" title="Dive into the iPOJO Manipulation depths">Dive into the iPOJO Manipulation depths</a></li>
</ul>
</li> <!-- End of Dev guide -->
</ul>
</li> <!-- End of doc -->
<!-- Menu 4 : Tools -->
<li class="">
<a href="" class="sf-with-ul">Tools<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
<ul style="float: none; width: 14em; display: none; visibility: hidden;">
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-ant-task.html" title="iPOJO Ant Task">Ant Task</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-eclipse-plug-in.html" title="iPOJO Eclipse Plug-in">Eclipse Plugin</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-maven-plug-in.html" title="iPOJO Maven Plug-in">Maven Plugin</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="" title="apache-felix-ipojo-online-manipulator">Online Manipulator</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-webconsole-plugin.html" title="iPOJO Webconsole Plugin">Webconsole plugin</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-junit4osgi.html" title="apache-felix-ipojo-junit4osgi">Junit4OSGi</a></li>
</ul>
</li><!-- End of tools -->
<!-- Menu 5 : Misc -->
<li class="">
<a href="" class="sf-with-ul">Misc<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
<ul style="float: none; width: 14em; display: none; visibility: hidden;">
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-issuestracker.html" title="apache-felix-ipojo-issuestracker">Issues Tracker</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-supportedvms.html" title="apache-felix-ipojo-supportedVMs">Supported JVMs</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-supportedosgi.html" title="apache-felix-ipojo-supportedOSGi">Supported OSGi Implementations</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://ipojo-dark-side.blogspot.com/" rel="nofollow">iPOJO's Dark Side Blog</a></li>
<li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/article-presentations.html" title="Article &amp; Presentations">Article &amp; Presentations</a></li>
</ul>
</li><!-- End of misc -->
</ul> <!-- End of the menu -->
</div> <!-- Page header -->
<div class="content">
<h1><a name="apache-felix-ipojo-online-manipulator-ApacheFelixiPOJOOnlineManipulator"></a>Apache Felix iPOJO Online Manipulator</h1>
<p><em>iPOJO generally requires an additional packaging step to preapre
the bundle to be managed by iPOJO. Despite this step doesn't change the
class semantic, it can be a little annoying. The online manipulator
avoids this offline step!</em></p>
<div>
<ul>
<li><a href="#apache-felix-ipojo-online-manipulator-ApacheFelixiPOJOOnlineManipulator">Apache Felix iPOJO Online Manipulator</a></li>
<ul>
<li><a href="#apache-felix-ipojo-online-manipulator-Features">Features</a></li>
<li><a href="#apache-felix-ipojo-online-manipulator-Usage">Usage</a></li>
<li><a href="#apache-felix-ipojo-online-manipulator-Dealingwithmetadata">Dealing with metadata</a></li>
</ul>
</ul></div>
<div class="panelMacro"><table class="infoMacro"><colgroup><col width="24"><col></colgroup><tbody><tr><td valign="top"><img src="apache-felix-ipojo-online-manipulator_files/information.gif" alt="" border="0" align="absmiddle" height="16" width="16"></td><td><b>1.3.0-SNAPSHOT</b><br><p>This
feature is only provided in iPOJO 1.3.0-SNAPSHOT, and will be available
in the iPOJO 1.4. If you want to use it, just use the <a href="http://felix.apache.org/site/download.html" title="Download">iPOJO trunk</a>.</p></td></tr></tbody></table></div>
<h2><a name="apache-felix-ipojo-online-manipulator-Features"></a>Features</h2>
<p>iPOJO is based on a bytecode <a href="http://felix.apache.org/site/dive-into-the-ipojo-manipulation-depths.html" title="Dive into the iPOJO Manipulation depths">manipulation</a>. This manipulate is <tt>safe</tt>
and does not change the class semantics. Classes can still used after
the manipulation without iPOJO. However this manipulation is required
for iPOJO management. Generally, this manipulation occurs offline
during the packaging time. The online manipulator allows to do this
manipulation at install time.</p>
<p>The online manipulator:</p>
<ul>
<li>avoids offline manipulation</li>
<li>supports annotations</li>
<li>supports XSD schema
<div class="" align="center"><p><img src="apache-felix-ipojo-online-manipulator_files/manipulation.png" border="0" align="absmiddle" width="640|height=300"></p></div>
<p>This is quite useful if you don't want to add an extra packaging step, and provides the same capabilities as the "regular" way.</p></li>
</ul>
<h2><a name="apache-felix-ipojo-online-manipulator-Usage"></a>Usage</h2>
<p>The online-manipulator is in fact an URL Handler. So, it will
process every bundle using a special URL prefix. To use it, just
follows the below instructions:</p>
<ul>
<li>Install and Start the URL Handler *<br>
This is a requirement. You must install and start the URL handler as
well as iPOJO (core). The URL Handler is build by the
online-manipulator iPOJO sub-project.</li>
</ul>
<ul>
<li>Install a bundle using the <tt>ipojo:</tt> URL prefix<br>
Using the handler is quite easy. When you want to deploy a non-manipulated iPOJO bundle just use an url like
<div class="code">
<div class="dp-highlighter"><table class="dp-c" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="line1"><span>install&nbsp;ipojo:file:/.../bundle.jar&nbsp;</span></td></tr></tbody></table></div><textarea style="display: none;" name="newcodemacro" class="java:nocontrols:nogutter" rows="10" readonly="readonly">install ipojo:file:/.../bundle.jar</textarea>
<script class="javascript">
if(!window.newcodemacro_initialised)
{
window.newcodemacro_initialised = true;
window.oldonloadmethod = window.onload;
window.onload = function(){
dp.SyntaxHighlighter.HighlightAll('newcodemacro');
if(window.oldonloadmethod)
{
window.oldonloadmethod();
}
}
}
</script>
</div>
</li>
</ul>
<p>The complete URL syntax is </p>
<div class="code">
<div class="dp-highlighter"><table class="dp-c" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="line1"><span>install&nbsp;ipojo:bundle_url[!metadata_url]&nbsp;</span></td></tr></tbody></table></div><textarea style="display: none;" name="newcodemacro" class="java:nocontrols:nogutter" rows="10" readonly="readonly">install ipojo:bundle_url[!metadata_url]</textarea>
<script class="javascript">
if(!window.newcodemacro_initialised)
{
window.newcodemacro_initialised = true;
window.oldonloadmethod = window.onload;
window.onload = function(){
dp.SyntaxHighlighter.HighlightAll('newcodemacro');
if(window.oldonloadmethod)
{
window.oldonloadmethod();
}
}
}
</script>
</div>
<p>When using the <tt>ipojo:</tt> prefix, the OSGi gateway delegates the loading to the url handler manipulating the bundle before its installation.</p>
<h2><a name="apache-felix-ipojo-online-manipulator-Dealingwithmetadata"></a>Dealing with metadata</h2>
<p>If the installed bundle contains a <tt>metadata.xml</tt> file either in its root or in the <tt>META-INF</tt> directory, the online manipulator will use it. However, you can also provide an external <tt>metadata.xml</tt> file by indicating the url of the file like in</p>
<div class="code">
<div class="dp-highlighter"><table class="dp-c" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="line1"><span>install&nbsp;ipojo:bundle_url!metadata_url&nbsp;</span></td></tr></tbody></table></div><textarea style="display: none;" name="newcodemacro" class="java:nocontrols:nogutter" rows="10" readonly="readonly">install ipojo:bundle_url!metadata_url</textarea>
<script class="javascript">
if(!window.newcodemacro_initialised)
{
window.newcodemacro_initialised = true;
window.oldonloadmethod = window.onload;
window.onload = function(){
dp.SyntaxHighlighter.HighlightAll('newcodemacro');
if(window.oldonloadmethod)
{
window.oldonloadmethod();
}
}
}
</script>
</div>
<p>If you provide such url, it will override the contained <tt>metadata.xml</tt> file.
<br clear="all">
<br clear="all"></p>
</div>
<img src="apache-felix-ipojo-online-manipulator_files/footer.png" class="footer">
</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 src="apache-felix-ipojo-online-manipulator_files/ga.js" type="text/javascript"></script>
<script type="text/javascript">
try{
var pageTracker = _gat._getTracker("UA-1518442-4");
pageTracker._trackPageview();
} catch(err) {}
</script>
</div>
</body></html>