[
https://issues.apache.org/jira/browse/FELIX-5802?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16793018#comment-16793018
]
Rob Walker commented on FELIX-5802:
-----------------------------------
A bit of of both - yes to understanding the specs, but also yes to solving a
problem. We're finally moving off the old Gravity servicebinder to Declarative
Services. In most respects it's a one for one equivalent, but all of the
services we move are now showing as service.scope=bundle rather than singleton
which they were under the servicebinder model. Looks like this is correct
behaviour in the SCR approach though, so we'll have to cater for it where it
impacts things.
> 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)