You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pd...@apache.org on 2018/10/09 23:21:17 UTC
svn commit: r1843368 -
/felix/site/trunk/content/documentation/subprojects/apache-felix-dependency-manager/reference/service-scopes.mdtext
Author: pderop
Date: Tue Oct 9 23:21:17 2018
New Revision: 1843368
URL: http://svn.apache.org/viewvc?rev=1843368&view=rev
Log:
dm r12 updates
Modified:
felix/site/trunk/content/documentation/subprojects/apache-felix-dependency-manager/reference/service-scopes.mdtext
Modified: felix/site/trunk/content/documentation/subprojects/apache-felix-dependency-manager/reference/service-scopes.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/subprojects/apache-felix-dependency-manager/reference/service-scopes.mdtext?rev=1843368&r1=1843367&r2=1843368&view=diff
==============================================================================
--- felix/site/trunk/content/documentation/subprojects/apache-felix-dependency-manager/reference/service-scopes.mdtext (original)
+++ felix/site/trunk/content/documentation/subprojects/apache-felix-dependency-manager/reference/service-scopes.mdtext Tue Oct 9 23:21:17 2018
@@ -142,28 +142,33 @@ And when one client will request a compo
Example of a scoped component which defines an init method:
:::java
- import org.apache.felix.dm.annotation.api.Component;
- import org.apache.felix.dm.annotation.api.ServiceScope;
+ public class Activator extends DependencyActivatorBase {
+ @Override
+ public void init(BundleContext context, DependencyManager dm) throws Exception {
+ dm.add(createComponent()
+ .setScope(ServiceScope.PROTOTYPE)
+ .setInterface(MyService.class.getName(), null)
+ .setImplementation(MyServiceImpl.class));
+ }
+ }
- @Component(scope=ServiceScope.PROTOTYPE)
public static class MyServiceImpl implements MyService {
-
- @Init
- void init(Component comp) {
+ void init(Component comp) {
// add dependencies dynamically
- }
+ }
- @Start
void start() {
// only called on clones, not on the prototype instance
}
- @Stop
void stop() {
// called on each clone, not on the prototype instance singleton
}
}
+So, if you don't need an init callback then use the `Component.setCallbacks(null, "start", "stop", null)`
+method in order to avoid the creation of the prototype instance.
+
# Limitation when using DM ServiceDependency from API and ServiceObjects
When using DependencyManager ServiceDependency from the native API (not using annotations),