[ https://issues.apache.org/jira/browse/FELIX-5802?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16792973#comment-16792973 ]
David Jencks commented on FELIX-5802: ------------------------------------- I don't understand the point of view of what you wrote, who is doing the actions? The framework can only look at what it's handed when setting this flag. The SCR implementation has to register a ServiceFactory rather than the implementation object since it is required to only create and set up the implementation object when the service is requested. However, the ServiceFactory implementation used by the SCR implementation has a choice whether to always return the same instance or an instance per bundle; the SCR configuration xml is used to choose between these alternatives. > Service Component created via xml defines scope='singleton' and service > specifies property with scope='bundle' > -------------------------------------------------------------------------------------------------------------- > > Key: FELIX-5802 > URL: https://issues.apache.org/jira/browse/FELIX-5802 > Project: Felix > Issue Type: Bug > Components: Framework > Affects Versions: framework-5.6.10 > Reporter: Matt Pavlovich > Priority: Major > > Component with scope='singleton' created via xml or annotation has the > service registered with a property of service.scope='bundle' > Project reproducing the issue is available here: > [https://github.com/mattrpav/felix-5802] > Steps to reproduce: > # Define a serviceComponent via xml (or osgi ds annotation) > # Deploy bundle > # run scr:info (observe Service Scope: singleton) > # run service:list (observe service.scope = bundle) > Investigation: > * Service registers with property of 'service.scope=bundle' here: > [https://github.com/apache/felix/blob/trunk/framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java#L327] > * Debugging in felix.scr confirms that the xml is being parsed correctly and > the returned component metadata shows the 'scope' = 'singleton' correctly > [o.a.felix.scr.impl.xml.XmlHandler#L362|https://github.com/apache/felix/blob/trunk/scr/src/main/java/org/apache/felix/scr/impl/xml/XmlHandler.java#L362] > * Debugging confirms that felix.scr is detecting DS13 namespace > scr:info output: > {noformat} > karaf@root()> scr:info TestModule > *** Bundle: com.foo.test-module (124) > Component Description: > Name: BundleModule > Implementation Class: com.foo.TestModule > Default State: enabled > Activation: immediate > Configuration Policy: optional > Activate Method: activate > Deactivate Method: deactivate > Modified Method: - > Configuration Pid: [TestModule] > Services: > com.foo.api.Module > Service Scope: singleton > Component Description Properties: > Component Configuration: > ComponentId: 4 > State: active > Component Configuration Properties: > component.id = 4 > component.name = TestModule{noformat} > service:list output > {noformat} > karaf@root()> service:list > [com.foo.api.Module] > ------------------------ > component.id = 4 > component.name = TestModule > service.bundleid = 124 > service.id = 141 > service.scope = bundle > Provided by : > Company :: Foo :: TestModule (124){noformat} > OSGI-INF/serviceComponent.xml > {noformat} > <?xml version="1.0" encoding="utf-8"?> > <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.3.0" > name="TestModule" immediate="true"> > <service scope="singleton"> > <provide interface="com.foo.api.Module" /> > </service> > <implementation class="com.foo.TestModule" /> > </scr:component>{noformat} > > Note: When the same impl class is reconfigured to register as a service via > BundleActivator, the service has a service.scope = 'singleton' -- This message was sent by Atlassian JIRA (v7.6.3#76005)