[ 
https://issues.apache.org/jira/browse/FELIX-5802?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16401041#comment-16401041
 ] 

Thomas Watson commented on FELIX-5802:
--------------------------------------

service.scope is a service property which is set by the framework based on the 
service object type that is being registered.  The SCR implementation cannot 
set it to singleton when it registers the service using a ServiceFactory.  See 
https://osgi.org/specification/osgi.core/7.0.0/framework.service.html#framework.service.scope

> 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)

Reply via email to