Author: buildbot
Date: Tue Oct 9 23:21:36 2018
New Revision: 1036218
Log:
Staging update by buildbot for felix
Modified:
websites/staging/felix/trunk/content/ (props changed)
websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-dependency-manager/reference/service-scopes.html
Propchange: websites/staging/felix/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue Oct 9 23:21:36 2018
@@ -1 +1 @@
-1843366
+1843368
Modified:
websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-dependency-manager/reference/service-scopes.html
==============================================================================
---
websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-dependency-manager/reference/service-scopes.html
(original)
+++
websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-dependency-manager/reference/service-scopes.html
Tue Oct 9 23:21:36 2018
@@ -203,23 +203,25 @@ and when all dependencies are satisfied
then the ServiceFactory (or PrototypeServiceFactory) is registered.
And when one client will request a component instance, then a clone will be
created and returned.</p>
<p>Example of a scoped component which defines an init method:</p>
-<div class="codehilite"><pre><span class="kn">import</span> <span
class="nn">org.apache.felix.dm.annotation.api.Component</span><span
class="o">;</span>
-<span class="kn">import</span> <span
class="nn">org.apache.felix.dm.annotation.api.ServiceScope</span><span
class="o">;</span>
+<div class="codehilite"><pre><span class="kd">public</span> <span
class="kd">class</span> <span class="nc">Activator</span> <span
class="kd">extends</span> <span class="n">DependencyActivatorBase</span> <span
class="o">{</span>
+ <span class="nd">@Override</span>
+ <span class="kd">public</span> <span class="kt">void</span> <span
class="nf">init</span><span class="o">(</span><span
class="n">BundleContext</span> <span class="n">context</span><span
class="o">,</span> <span class="n">DependencyManager</span> <span
class="n">dm</span><span class="o">)</span> <span class="kd">throws</span>
<span class="n">Exception</span> <span class="o">{</span>
+ <span class="n">dm</span><span class="o">.</span><span
class="na">add</span><span class="o">(</span><span
class="n">createComponent</span><span class="o">()</span>
+ <span class="o">.</span><span class="na">setScope</span><span
class="o">(</span><span class="n">ServiceScope</span><span
class="o">.</span><span class="na">PROTOTYPE</span><span class="o">)</span>
+ <span class="o">.</span><span class="na">setInterface</span><span
class="o">(</span><span class="n">MyService</span><span class="o">.</span><span
class="na">class</span><span class="o">.</span><span
class="na">getName</span><span class="o">(),</span> <span
class="kc">null</span><span class="o">)</span>
+ <span class="o">.</span><span
class="na">setImplementation</span><span class="o">(</span><span
class="n">MyServiceImpl</span><span class="o">.</span><span
class="na">class</span><span class="o">));</span>
+ <span class="o">}</span>
+<span class="o">}</span>
-<span class="nd">@Component</span><span class="o">(</span><span
class="n">scope</span><span class="o">=</span><span
class="n">ServiceScope</span><span class="o">.</span><span
class="na">PROTOTYPE</span><span class="o">)</span>
<span class="kd">public</span> <span class="kd">static</span> <span
class="kd">class</span> <span class="nc">MyServiceImpl</span> <span
class="kd">implements</span> <span class="n">MyService</span> <span
class="o">{</span>
-
- <span class="nd">@Init</span>
- <span class="kt">void</span> <span class="nf">init</span><span
class="o">(</span><span class="n">Component</span> <span
class="n">comp</span><span class="o">)</span> <span class="o">{</span>
+ <span class="kt">void</span> <span class="nf">init</span><span
class="o">(</span><span class="n">Component</span> <span
class="n">comp</span><span class="o">)</span> <span class="o">{</span>
<span class="c1">// add dependencies dynamically</span>
- <span class="o">}</span>
+ <span class="o">}</span>
- <span class="nd">@Start</span>
<span class="kt">void</span> <span class="nf">start</span><span
class="o">()</span> <span class="o">{</span>
<span class="c1">// only called on clones, not on the prototype
instance</span>
<span class="o">}</span>
- <span class="nd">@Stop</span>
<span class="kt">void</span> <span class="nf">stop</span><span
class="o">()</span> <span class="o">{</span>
<span class="c1">// called on each clone, not on the prototype instance
singleton</span>
<span class="o">}</span>
@@ -227,6 +229,8 @@ And when one client will request a compo
</pre></div>
+<p>So, if you don't need an init callback then use the
<code>Component.setCallbacks(null, "start", "stop", null)</code>
+method in order to avoid the creation of the prototype instance.</p>
<h1
id="limitation-when-using-dm-servicedependency-from-api-and-serviceobjects">Limitation
when using DM ServiceDependency from API and ServiceObjects<a
class="headerlink"
href="#limitation-when-using-dm-servicedependency-from-api-and-serviceobjects"
title="Permanent link">¶</a></h1>
<p>When using DependencyManager ServiceDependency from the native API (not
using annotations),
you have to know that the ServiceDependency always internally dereferences and
creates the
@@ -265,7 +269,7 @@ create the MyService instances manually.
never auto-dereference the injected service in case the bind method takes as
argument a
ServiceObjects (or a ServiceReference) method.</p>
<div class="timestamp" style="margin-top: 30px; font-size: 80%;
text-align: right;">
- Rev. 1843366 by pderop on Tue, 9 Oct 2018 23:15:20 +0000
+ Rev. 1843368 by pderop on Tue, 9 Oct 2018 23:21:17 +0000
</div>
<div class="trademarkFooter">
Apache Felix, Felix, Apache, the Apache feather logo, and the Apache
Felix project