blob: e19324e8c9535ca33f062229f813fb1e8006fd5d [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE- 2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<head>
<title>Apache Felix - Temporal Service Dependency</title>
<link rel="icon" href="/res/favicon.ico">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The most powerful component model for OSGi">
<link href="/ipojo/web/bootstrap/css/bootstrap-cerulean.css" rel="stylesheet">
<link href="/ipojo/web/bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
<link href="/ipojo/web/bootstrap/css/font-awesome.min.css" rel="stylesheet">
<link href="/ipojo/web/style.css" rel="stylesheet">
<!-- Overide alert's colors -->
<link href="/ipojo/web/bootstrap/css/alert.css" rel="stylesheet">
<link rel="stylesheet" href="/ipojo/web/github.css" type="text/css" media="all">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="/ipojo/web/bootstrap/js/bootstrap.min.js"></script>
</head>
<body data-spy="scroll" data-target=".subnav">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="/documentation/subprojects/apache-felix-ipojo.html">Apache Felix iPOJO</a>
<div class="nav-collapse" id="main-menu">
<ul class="nav" id="main-menu-left">
<li><a href="/documentation/subprojects/apache-felix-ipojo/ipojo-news.html">News</a></li>
<li><a href="http://felix.apache.org/downloads.cgi">Downloads</a></li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Tutorials <b class="caret"></b></a>
<ul class="dropdown-menu" id="tutorials-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-why-choose-ipojo.html">Why choose iPOJO</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-successstories.html">Success stories</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-feature-overview.html">Features</a></li>
<li class="divider"></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-in-10-minutes.html">iPOJO in 10 minutes</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/how-to-use-ipojo-annotations.html">Using Annotations</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-hello-word-maven-based-tutorial.html">Maven tutorial</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-advanced-tutorial.html">Advanced tutorial</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/apache-felix-ipojo-dosgi.html">Using Distributed OSGi</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-composition-tutorial.html">Application Composition</a></li>
</ul>
</li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation <b class="caret"></b></a>
<ul class="dropdown-menu" id="user-guide-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/service-requirement-handler.html">Requiring a service</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/providing-osgi-services.html">Providing a service</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/lifecycle-callback-handler.html">Lifecycle management</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/configuration-handler.html">Configuration</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/architecture-handler.html">Introspection</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/controller-lifecycle-handler.html">Impacting the lifecycle</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/injecting-bundle-context.html">Accessing the Bundle Context</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/apache-felix-ipojo-instances.html">Creating instances</a></li>
<li class="divider"></li>
<li class="dropdown-submenu">
<a tabindex="-1" href="#">External <em>handlers</em></a>
<ul class="dropdown-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/event-admin-handlers.html">Asynchronous communication</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/ipojo-jmx-handler.html">JMX management</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/extender-pattern-handler.html">Extender pattern</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/white-board-pattern-handler.html">Whiteboard pattern</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/temporal-service-dependency.html">Temporal dependencies</a></li>
</ul>
</li>
<li class="dropdown-submenu">
<a tabindex="-1" href="#">Configuration Admin &amp; Factories</a>
<ul class="dropdown-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/combining-ipojo-and-configuration-admin.html">iPOJO and config admin</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/ipojo-factory-service.html">Using the iPOJO Factory service</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/how-to-use-ipojo-factories.html">Factories and Instances</a></li>
</ul>
</li>
<li class="divider"></li>
<li class="dropdown-submenu">
<a tabindex="-1" href="#">Advanced topics</a>
<ul class="dropdown-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/instance-vs-service-controller.html">Instance vs. Service Controllers</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/service-binding-interceptors.html">Service Binding Interceptors</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/using-xml-schemas.html">XML Schemas</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/apache-felix-ipojo-api.html">Using the iPOJO API</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/constructing-pojo-objects-with-factory-methods.html">Constructing service objects with factory methods</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/using-ipojo-introspection-api.html">Using the introspection API</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-testing-components.html">Testing components</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/using-stereotypes.html">Using @Stereotypes</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-eclipse-integration.html">Eclipse Integration</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/ipojo-extender-configuration.html">Configuring iPOJO's Extender</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-faq.html">FAQ</a></li>
<li class="divider"></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-devguide/how-to-write-your-own-handler.html">Handler development</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-devguide/how-to-use-ipojo-manipulation-metadata.html">Manipulation Metadata </a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-devguide/dive-into-the-ipojo-manipulation-depths.html">Dive into the iPOJO Manipulation depths</a></li>
<li><a href="http://felix.apache.org/ipojo/api/1.12.1">Javadoc</a></li>
</ul>
</li>
</ul>
</li>
<li class="dropdown" id="tools-menu">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Tools <b class="caret"></b></a>
<ul class="dropdown-menu" id="swatch-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-ant-task.html">Ant Task</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-maven-plug-in.html">Maven Plugin</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-arch-command.html">Architecture commands</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/apache-felix-ipojo-online-manipulator.html">Online Manipulator</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-webconsole-plugin.html">Webconsole plugin</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-karaf-feature.html">Apache Karaf Features</a></li>
</ul>
</li>
<li class="dropdown" id="community-menu">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Community <b class="caret"></b></a>
<ul class="dropdown-menu" id="swatch-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/ipojo-support.html">Support</a></li>
<li><a href="http://www.apache.org/">ASF</a></li>
<li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="http://www.apache.org/foundation/thanks.html">Sponsors</a></li>
</ul>
</li>
<li class="dropdown" id="misc-menu">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Misc <b class="caret"></b></a>
<ul class="dropdown-menu" id="swatch-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-supportedvms.html">Supported JVMs</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-supportedosgi.html">Supported OSGi Implementations</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/articles-and-presentations.html">Article & Presentations</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/developing-camel-mediators-with-ipojo.html">Developping Camel mediators with iPOJO</a></li>
</ul>
</li>
</ul>
<ul class="nav pull-right" id="main-menu-right">
<li><a rel="tooltip" target="_blank" href="http://felix.apache.org">Apache Felix <i class="icon-share-alt"></i></a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="container">
<div class="content">
<style type="text/css">
/* The following code is added by mdx_elementid.py
It was originally lifted from http://subversion.apache.org/style/site.css */
/*
* Hide class="elementid-permalink", except when an enclosing heading
* has the :hover property.
*/
.headerlink, .elementid-permalink {
visibility: hidden;
}
h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
<h1 id="the-temporal-dependency-handler">The temporal dependency handler<a class="headerlink" href="#the-temporal-dependency-handler" title="Permanent link">&para;</a></h1>
<p><em>Regular service dependencies participate to the instance lifecycle. Moreover, the injected service object is either available or not available. A temporal dependency handler is a little different and provides a different resolution pattern. Indeed, the temporal dependency does not invalidate the instance. Moreover, if not available, the temporal dependency waits (and so blocks the current thread) for a provider. Of course, the maximum waiting time can be specified. If a timeout occurs, the handler throws a Runtime Exception.</em></p>
<div class="toc">
<ul>
<li><a href="#the-temporal-dependency-handler">The temporal dependency handler</a><ul>
<li><a href="#using-the-handler">Using the handler</a></li>
<li><a href="#configuration">Configuration</a></li>
<li><a href="#ontimeout-actions">OnTimeout actions</a></li>
<li><a href="#collection-injection">Collection injection</a></li>
<li><a href="#proxy-injection">Proxy injection</a></li>
</ul>
</li>
</ul>
</div>
<h2 id="using-the-handler">Using the handler<a class="headerlink" href="#using-the-handler" title="Permanent link">&para;</a></h2>
<p>First of all, you need to configure the component type to use the handler such as:</p>
<div class="codehilite"><pre><span class="nt">&lt;iPOJO</span> <span class="na">xmlns:temporal=</span><span class="s">&quot;org.apache.felix.ipojo.handler.temporal&quot;</span><span class="nt">&gt;</span>
<span class="nt">&lt;component</span>
<span class="na">className=</span><span class="s">&quot;org.apache.felix.ipojo.example.Temporal&quot;</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- Temporal dependency configuration --&gt;</span>
<span class="nt">&lt;temporal:requires</span> <span class="na">field=</span><span class="s">&quot;mytemporal&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;provides/&gt;</span>
<span class="nt">&lt;/component&gt;</span>
<span class="nt">&lt;/iPOJO&gt;</span>
</pre></div>
<p>Notice that, this handler is an external handler. So, it uses the "org.apache.felix.ipojo.handler.temporal" namespace.
Once described, you can implement your component. The specified field will be mapped to the temporal dependency. As for regular field injection, aggregation, targeted service specification (i.e. interface) is discovered automatically. Filter, comparator and binding policy are also supported. However, the optional attribute is not supported. In fact, this attribute is meaningless in the case of a temporal dependency.
Using the field in your code will try to find a matching service provider. If a provider is available, the field receives the service object immediately. Else, the thread is stopped and waits for a provider. The default wait time is 3s (you can also specify this time). If no provider is available after this time, the thread throws a RuntimeException. If a provider becomes available during this time, the field receives immediately the value and the execution can continue.</p>
<p>You can also use annotations:</p>
<div class="codehilite"><pre><span class="nd">@Component</span>
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">UseTemporal</span> <span class="o">{</span>
<span class="nd">@Temporal</span> <span class="c1">// was org.apache.felix.ipojo.handler.temporal.Requires before the 1.7.0</span>
<span class="kd">private</span> <span class="n">FooService</span> <span class="n">mytemporal</span><span class="o">;</span>
<span class="o">}</span>
</pre></div>
<h2 id="configuration">Configuration<a class="headerlink" href="#configuration" title="Permanent link">&para;</a></h2>
<p>The handler has only one mandatory attributes:</p>
<ul>
<li>Field: the implementation field supporting the dependency (not needed with annotations)</li>
</ul>
<p>The handler supports on specific optional attributes:</p>
<ul>
<li>Timeout: the maximum time waited in order to find a provider (default: 3s). For an infinite timeout, the timeout value is either <code>infinite</code> or <code>-1</code>.</li>
<li>OnTimeout: specifies the action to do when the timeout occurs. Four actions are supported: <code>null</code>, <code>nullable</code>, <code>empty-array</code>, <code>default-implementation</code>. By default, no action is specified, and an exception occurs when the timeout is reached.</li>
</ul>
<p>The attributes from "regular" dependencies are also supported (like filter).</p>
<h2 id="ontimeout-actions">OnTimeout actions<a class="headerlink" href="#ontimeout-actions" title="Permanent link">&para;</a></h2>
<p>When a timeout occurs, you can specify what the handler must do. By default, it throws a runtime exception. However, four others actions can be set in the 'onTimeout' attribute.</p>
<ul>
<li>The null action (<code>onTimeout="null"</code>) will return <code>null</code> instead of the service object.</li>
<li>The nullable action (<code>onTimeout="nullable"</code>) will return a "Nullable" object instead of the service object. This object is a fake but can be used a regular service object. However, invoking actions on this object will do nothing. In the case of aggregate dependency, an array containing a "nullable" object is returned.</li>
<li>The empty action is only supported for aggregate dependency (the field must be an array). In this case, an empty array is returned. (In the 1.2.0 version, the <code>empty-array</code> attribute became <code>empty</code>)</li>
<li>
<p>The default-implementation action is a little different. Instead of specifying the action, you need to specify the default-implementation (the qualified class name) that you want to use. For example <code>onTimeout="o.a.f.i.MyDefaultLogServiceImpl"</code>. In this case, the handler will inject an instance of this object instead of a real service object. On aggregate dependency, an array with one default-implementation object is returned.</p>
<p>:::xml
<iPOJO xmlns:temporal="org.apache.felix.ipojo.handler.temporal">
<component
className="org.apache.felix.ipojo.example.Temporal"></p>
<div class="codehilite"><pre><span class="o">&lt;</span>!<span class="o">--</span> <span class="n">Temporal</span> <span class="n">dependency</span> <span class="n">configuration</span> <span class="o">--&gt;</span>
<span class="o">&lt;</span><span class="n">temporal</span><span class="p">:</span><span class="n">requires</span> <span class="n">field</span><span class="p">=</span>&quot;<span class="n">fs</span>&quot; <span class="n">timeout</span><span class="p">=</span>&quot;300&quot; <span class="n">ontimeout</span><span class="p">=</span>&quot;<span class="n">nullable</span>&quot;<span class="o">/&gt;</span>
<span class="o">&lt;</span><span class="n">provides</span><span class="o">/&gt;</span>
</pre></div>
<p></component>
</iPOJO></p>
</li>
</ul>
<p>This is equivalent to:</p>
<div class="codehilite"><pre><span class="nd">@Component</span>
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">Temporal</span> <span class="o">{</span>
<span class="nd">@Temporal</span><span class="o">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">300</span><span class="o">,</span> <span class="n">ontimeout</span><span class="o">=</span><span class="s">&quot;nullable&quot;</span><span class="o">)</span>
<span class="kd">private</span> <span class="n">FooService</span> <span class="n">mytemporal</span><span class="o">;</span>
<span class="o">}</span>
</pre></div>
<h2 id="collection-injection">Collection injection<a class="headerlink" href="#collection-injection" title="Permanent link">&para;</a></h2>
<p>Temporal dependencies can also be injected inside Collection. To achieve this, the 'specification' attribute must indicates the looked specification, and the field must be a Collection.</p>
<div class="codehilite"><pre><span class="nt">&lt;iPOJO</span> <span class="na">xmlns:temporal=</span><span class="s">&quot;org.apache.felix.ipojo.handler.temporal&quot;</span><span class="nt">&gt;</span>
<span class="nt">&lt;component</span>
<span class="na">className=</span><span class="s">&quot;org.apache.felix.ipojo.example.Temporal&quot;</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- Temporal dependency configuration --&gt;</span>
<span class="nt">&lt;temporal:requires</span> <span class="na">field=</span><span class="s">&quot;mycollection&quot;</span> <span class="na">specification=</span><span class="s">&quot;my.service.specification&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;provides/&gt;</span>
<span class="nt">&lt;/component&gt;</span>
<span class="nt">&lt;/iPOJO&gt;</span>
</pre></div>
<p>This is equivalent to:</p>
<div class="codehilite"><pre><span class="nd">@Component</span>
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">Temporal</span> <span class="o">{</span>
<span class="nd">@Temporal</span><span class="o">(</span><span class="n">specification</span><span class="o">=</span><span class="s">&quot;my.service.specification&quot;</span><span class="o">)</span>
<span class="kd">private</span> <span class="n">List</span><span class="o">&lt;</span><span class="n">FooService</span><span class="o">&gt;</span> <span class="n">mycollection</span><span class="o">;</span>
<span class="o">}</span>
</pre></div>
<h2 id="proxy-injection">Proxy injection<a class="headerlink" href="#proxy-injection" title="Permanent link">&para;</a></h2>
<p>Temporal dependencies can also be injected as proxies. So it is possible to give the temporal dependency to helper object.
On 'scalar' dependencies, the service lookup is executed during an operation invocation. Timeout policies are also executed is the lookup failed.
On aggregate dependencies (necessary Collection), the service lookup is executed when the iterator(), and toArray(...) methods are invoked. Timeout policies are also executed if the lookup failed. Proxies are enabled by default since the 1.7.0 version.</p>
<p>To set a temporal dependency as a proxy, just add the <code>proxy</code> attribute as follows:</p>
<div class="codehilite"><pre><span class="nt">&lt;iPOJO</span> <span class="na">xmlns:temporal=</span><span class="s">&quot;org.apache.felix.ipojo.handler.temporal&quot;</span><span class="nt">&gt;</span>
<span class="nt">&lt;component</span>
<span class="na">className=</span><span class="s">&quot;org.apache.felix.ipojo.example.Temporal&quot;</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- Temporal dependencies configuration --&gt;</span>
<span class="nt">&lt;temporal:requires</span> <span class="na">proxy=</span><span class="s">&quot;true&quot;</span> <span class="na">field=</span><span class="s">&quot;fs&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;temporal:requires</span> <span class="na">proxy=</span><span class="s">&quot;true&quot;</span> <span class="na">field=</span><span class="s">&quot;mycollection&quot;</span> <span class="na">specification=</span><span class="s">&quot;my.service.specification&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;provides/&gt;</span>
<span class="nt">&lt;/component&gt;</span>
<span class="nt">&lt;/iPOJO&gt;</span>
</pre></div>
<p>By default, proxies are <strong>enabled</strong>. Setting proxy to <code>false</code> disables them.</p>
</div>
</div>
<hr/>
<div class="container">
<footer id="footer">
<div class="row">
<div class="trademarkFooter span7">
Apache Felix, Felix, Apache, the Apache feather logo, and the Apache Felix project
logo are trademarks of The Apache Software Foundation. All other marks mentioned
may be trademarks or registered trademarks of their respective owners.
</div>
<div class="timestamp span3 offset2">
Rev. 1700393 by cziegeler on Tue, 1 Sep 2015 06:04:06 +0000
</div>
</div>
</footer>
</div>
</body>
<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">
try{
var pageTracker = _gat._getTracker("UA-1518442-4");
pageTracker._trackPageview();
} catch(err) {}
</script>
</html>