For more informations, see section 121.6.10 and 121.6.11 of the OSGi compendium spec, but there is a clear different between the service being enabled or not and the lazy / eager activation.
2009/7/27 Guillaume Nodet <gno...@gmail.com>: > Lazy activation of services does not mean that the service is not registered, > but simply that the service object is not eagerly created. > Else, the service will never be registered in the OSGi registry. > Could you please revert this commit ? > > 2009/7/24 gawor <ga...@apache.org>: >> Author: gawor >> Date: Fri Jul 24 18:42:34 2009 >> New Revision: 797601 >> >> URL: http://svn.apache.org/viewvc?rev=797601&view=rev >> Log: >> services can also have eager or lazy activation >> >> Modified: >> >> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/ExtendedBlueprintContainer.java >> >> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/BlueprintContainerImpl.java >> >> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/ServiceRecipe.java >> >> Modified: >> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/ExtendedBlueprintContainer.java >> URL: >> http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/ExtendedBlueprintContainer.java?rev=797601&r1=797600&r2=797601&view=diff >> ============================================================================== >> --- >> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/ExtendedBlueprintContainer.java >> (original) >> +++ >> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/ExtendedBlueprintContainer.java >> Fri Jul 24 18:42:34 2009 >> @@ -20,6 +20,7 @@ >> import java.util.Dictionary; >> import java.util.List; >> >> +import org.apache.geronimo.blueprint.container.ServiceRecipe; >> import org.apache.geronimo.blueprint.di.Repository; >> import org.osgi.framework.Bundle; >> import org.osgi.framework.BundleContext; >> @@ -59,4 +60,6 @@ >> >> AccessControlContext getAccessControlContext(); >> >> + boolean isServiceEnabled(ServiceRecipe service); >> + >> } >> >> Modified: >> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/BlueprintContainerImpl.java >> URL: >> http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/BlueprintContainerImpl.java?rev=797601&r1=797600&r2=797601&view=diff >> ============================================================================== >> --- >> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/BlueprintContainerImpl.java >> (original) >> +++ >> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/BlueprintContainerImpl.java >> Fri Jul 24 18:42:34 2009 >> @@ -592,6 +592,20 @@ >> } >> } >> >> + public boolean isServiceEnabled(ServiceRecipe r) { >> + List<SatisfiableRecipe> dependencies = >> getSatisfiableDependenciesMap().get(r.getName()); >> + boolean enabled = true; >> + if (dependencies != null) { >> + for (SatisfiableRecipe recipe : dependencies) { >> + if (!recipe.isSatisfied()) { >> + enabled = false; >> + break; >> + } >> + } >> + } >> + return enabled; >> + } >> + >> private void instantiateEagerComponents() { >> List<String> components = new ArrayList<String>(); >> for (String name : >> componentDefinitionRegistry.getComponentDefinitionNames()) { >> @@ -619,16 +633,16 @@ >> services = repository.getAllRecipes(ServiceRecipe.class); >> for (ServiceRecipe r : services) { >> List<SatisfiableRecipe> dependencies = >> getSatisfiableDependenciesMap().get(r.getName()); >> - boolean satisfied = true; >> + boolean enabled = true; >> if (dependencies != null) { >> for (SatisfiableRecipe recipe : dependencies) { >> if (!recipe.isSatisfied()) { >> - satisfied = false; >> + enabled = false; >> break; >> } >> } >> } >> - if (satisfied) { >> + if (r.isEager() && enabled) { >> r.register(); >> } >> } >> >> Modified: >> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/ServiceRecipe.java >> URL: >> http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/ServiceRecipe.java?rev=797601&r1=797600&r2=797601&view=diff >> ============================================================================== >> --- >> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/ServiceRecipe.java >> (original) >> +++ >> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/ServiceRecipe.java >> Fri Jul 24 18:42:34 2009 >> @@ -94,6 +94,10 @@ >> this.prototypeService = >> isPrototypeService(metadata.getServiceComponent()); >> } >> >> + public boolean isEager() { >> + return (metadata.getActivation() == >> ComponentMetadata.ACTIVATION_EAGER); >> + } >> + >> public Recipe getServiceRecipe() { >> return serviceRecipe; >> } >> @@ -127,6 +131,9 @@ >> } >> ServiceRegistrationProxy proxy = new ServiceRegistrationProxy(); >> addObject(proxy, true); >> + if (blueprintContainer.isServiceEnabled(this)) { >> + register(); >> + } >> internalGetService(null, null); // null bundle means we don't want >> to retrieve the actual service when used with a ServiceFactory >> return proxy; >> } >> >> >> > > > > -- > Cheers, > Guillaume Nodet > ------------------------ > Blog: http://gnodet.blogspot.com/ > ------------------------ > Open Source SOA > http://fusesource.com > > > > -- Cheers, Guillaume Nodet ------------------------ Blog: http://gnodet.blogspot.com/ ------------------------ Open Source SOA http://fusesource.com