Csaba Szucs | 8 Feb 10:38
Picon

Service component deployment fails into a running Equinox application

Hello Guys,

I have an Equinox OSGi application using Declarative Services with 3 plugins:
-a service interface plugin
-a service provider component
-a service consumer component (cardinality: 0..n, policy: dynamic)

Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.8.0.v20110908-1857
3 ACTIVE osgi.example.service.consumer_1.0.0.qualifier
4 ACTIVE org.eclipse.osgi.services_3.3.0.v20110711-1243
5 ACTIVE org.eclipse.equinox.util_1.0.300.v20110502
6 ACTIVE org.eclipse.equinox.ds_1.3.100.v20110705
10 ACTIVE osgi.example.service_interface_1.0.0.qualifier
11 ACTIVE osgi.example.service.implementation_1.0.0.qualifier

In case the application is launched, the service consumer is triggered.

But in case the service provider is installed and started only after the application has launched, SCR fails to load service implementation class. See exception stack below!

What is the problem with this runtime/post-application deployment of the service component?

Please note:
With Apache Felix and SCR, there is no problem with the runtime deployment at all.

Many thanks, Csaba.

Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.8.0.v20110908-1857
3 ACTIVE osgi.example.service.consumer_1.0.0.qualifier
4 ACTIVE org.eclipse.osgi.services_3.3.0.v20110711-1243
5 ACTIVE org.eclipse.equinox.util_1.0.300.v20110502
6 ACTIVE org.eclipse.equinox.ds_1.3.100.v20110705
10 ACTIVE osgi.example.service_interface_1.0.0.qualifier

osgi> install file:/home/csaba/eclipse_distros/Indigo/workspace/osgi.example.service.implementation
Bundle id is 11.

id State Bundle
11 INSTALLED osgi.example.service.implementation_1.0.0.qualifier

osgi> start 11

Here SCR throws an exception:


!SESSION 2012-02-06 21:01:12.378 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.6.0_20
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=en_US
Command-line arguments: -dev file:/home/csaba/eclipse_distros/Indigo/workspace/.metadata/.plugins/org.eclipse.pde.core/New_configuration (1)/dev.properties -os linux -ws gtk -arch x86 -consoleLog -console -consolelog

!ENTRY org.eclipse.equinox.ds 4 0 2012-02-06 21:03:11.214
!MESSAGE Exception occurred while creating new instance of component Component[
name = osgi.example.service.implementation
activate = activate
deactivate = deactivate
modified =
configuration-policy = optional
factory = null
autoenable = true
immediate = false
implementation = osgi.example.service.implementation.ServiceImpl
state = Unsatisfied
properties =
serviceFactory = false
serviceInterface = [osgi.example.service_interface.Service]
references = null
located in bundle = osgi.example.service.implementation_1.0.0.qualifier [13]
]
!STACK 0
java.lang.ClassNotFoundException: osgi.example.service.implementation.ServiceImpl
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1208)
at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:480)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance(ServiceComponentProp.java:271)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:332)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:588)
at org.eclipse.equinox.internal.ds.ServiceReg.getService(ServiceReg.java:53)
at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run(ServiceUse.java:141)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService(ServiceUse.java:139)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:468)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:467)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(BundleContextImpl.java:594)
at org.eclipse.equinox.internal.ds.InstanceProcess.getService(InstanceProcess.java:686)
at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod(ComponentReference.java:111)
at org.eclipse.equinox.internal.ds.model.ComponentReference.bind(ComponentReference.java:322)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference(ServiceComponentProp.java:441)
at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind(InstanceProcess.java:415)
at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:319)
at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:221)
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:504)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:259)
at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:441)
at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:213)
at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:800)
at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:767)
at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)

!ENTRY org.eclipse.equinox.ds 4 0 2012-02-06 21:03:11.216
!MESSAGE Exception occurred while creating new instance of component Component[
name = osgi.example.service.implementation
activate = activate
deactivate = deactivate
modified =
configuration-policy = optional
factory = null
autoenable = true
immediate = false
implementation = osgi.example.service.implementation.ServiceImpl
state = Unsatisfied
properties =
serviceFactory = false
serviceInterface = [osgi.example.service_interface.Service]
references = null
located in bundle = osgi.example.service.implementation_1.0.0.qualifier [13]
]
!STACK 0
java.lang.ClassNotFoundException: osgi.example.service.implementation.ServiceImpl
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1208)
at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:480)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance(ServiceComponentProp.java:271)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:332)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:588)
at org.eclipse.equinox.internal.ds.ServiceReg.getService(ServiceReg.java:53)
at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run(ServiceUse.java:141)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService(ServiceUse.java:139)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:468)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:467)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(BundleContextImpl.java:594)
at org.eclipse.equinox.internal.ds.InstanceProcess.getService(InstanceProcess.java:686)
at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod(ComponentReference.java:111)
at org.eclipse.equinox.internal.ds.model.ComponentReference.bind(ComponentReference.java:322)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference(ServiceComponentProp.java:441)
at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind(InstanceProcess.java:415)
at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:319)
at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:221)
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:504)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:259)
at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:441)
at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:213)
at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:800)
at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:767)
at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)

!ENTRY org.eclipse.osgi 4 0 2012-02-06 21:03:11.220
!MESSAGE An unexpected runtime error has occurred.
!STACK 0
org.osgi.service.component.ComponentException: Exception occurred while creating new instance of component Component[
name = osgi.example.service.implementation
activate = activate
deactivate = deactivate
modified =
configuration-policy = optional
factory = null
autoenable = true
immediate = false
implementation = osgi.example.service.implementation.ServiceImpl
state = Unsatisfied
properties =
serviceFactory = false
serviceInterface = [osgi.example.service_interface.Service]
references = null
located in bundle = osgi.example.service.implementation_1.0.0.qualifier [13]
]
at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:482)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance(ServiceComponentProp.java:271)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:332)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:588)
at org.eclipse.equinox.internal.ds.ServiceReg.getService(ServiceReg.java:53)
at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run(ServiceUse.java:141)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService(ServiceUse.java:139)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:468)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:467)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(BundleContextImpl.java:594)
at org.eclipse.equinox.internal.ds.InstanceProcess.getService(InstanceProcess.java:686)
at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod(ComponentReference.java:111)
at org.eclipse.equinox.internal.ds.model.ComponentReference.bind(ComponentReference.java:322)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference(ServiceComponentProp.java:441)
at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind(InstanceProcess.java:415)
at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:319)
at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:221)
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:504)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:259)
at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:441)
at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:213)
at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:800)
at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:767)
at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
Caused by: java.lang.ClassNotFoundException: osgi.example.service.implementation.ServiceImpl
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1208)
at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:480)
... 34 more

!ENTRY osgi.example.service.implementation 4 0 2012-02-06 21:03:11.223
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.ServiceException: Exception in org.eclipse.equinox.internal.ds.ServiceReg.getService()
at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService(ServiceUse.java:151)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:468)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:467)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(BundleContextImpl.java:594)
at org.eclipse.equinox.internal.ds.InstanceProcess.getService(InstanceProcess.java:686)
at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod(ComponentReference.java:111)
at org.eclipse.equinox.internal.ds.model.ComponentReference.bind(ComponentReference.java:322)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference(ServiceComponentProp.java:441)
at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind(InstanceProcess.java:415)
at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:319)
at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:221)
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:504)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:259)
at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:441)
at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:213)
at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:800)
at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:767)
at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
Caused by: org.osgi.service.component.ComponentException: Exception occurred while creating new instance of component Component[
name = osgi.example.service.implementation
activate = activate
deactivate = deactivate
modified =
configuration-policy = optional
factory = null
autoenable = true
immediate = false
implementation = osgi.example.service.implementation.ServiceImpl
state = Unsatisfied
properties =
serviceFactory = false
serviceInterface = [osgi.example.service_interface.Service]
references = null
located in bundle = osgi.example.service.implementation_1.0.0.qualifier [13]
]
at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:482)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance(ServiceComponentProp.java:271)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:332)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:588)
at org.eclipse.equinox.internal.ds.ServiceReg.getService(ServiceReg.java:53)
at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run(ServiceUse.java:141)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService(ServiceUse.java:139)
... 27 more
Caused by: java.lang.ClassNotFoundException: osgi.example.service.implementation.ServiceImpl
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1208)
at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:480)
... 34 more

!ENTRY osgi.example.service.consumer 2 0 2012-02-06 21:03:11.228
!MESSAGE [SCR] Could not get the service object relevant to the reference. One possible reason is a circularity problem. Another possible reason is that BundleContext.getService() returns null.
Details:
Problematic reference = Reference[name = Service, interface = osgi.example.service_interface.Service, policy = dynamic, cardinality = 0..n, target = null, bind = setService, unbind = unsetService]
of service component = osgi.example.service.consumer
component implementation class = osgi.example.service.consumer.ServiceConsumer
located in bundle with symbolic name = osgi.example.service.consumer
bundle location = initial <at> reference:file:../../../../osgi.example.service.consumer/

!ENTRY osgi.example.service.consumer 2 0 2012-02-06 21:03:11.229
!MESSAGE [SCR] ComponentReference.bind(): bind method 'setService' is not found or it is not accessible!
Details:
Problematic reference = Reference[name = Service, interface = osgi.example.service_interface.Service, policy = dynamic, cardinality = 0..n, target = null, bind = setService, unbind = unsetService]
of service component = osgi.example.service.consumer
component implementation class = osgi.example.service.consumer.ServiceConsumer
located in bundle with symbolic name = osgi.example.service.consumer
bundle location = initial <at> reference:file:../../../../osgi.example.service.consumer/
Alex Blewitt | 8 Feb 10:45
Picon
Gravatar

Re: Service component deployment fails into a running Equinox application

Do you have an optional import for the package name? 

If you do, and that bundle starts first, then it won't be wired to the package. If you start up the bundle
containing the package first, then start up the provider, it will resolve the list of optional imports.
Once started, even if an optional package is added later it's not added to the existing running bundle's
package list. If you do a 'refresh' on the service provider, does the problem go away?

Alex

On 8 Feb 2012, at 09:38, Csaba Szucs wrote:

> Hello Guys,
> 
> I have an Equinox OSGi application using Declarative Services with 3 plugins:
> -a service interface plugin
> -a service provider component
> -a service consumer component (cardinality: 0..n, policy: dynamic)
> 
> Framework is launched.
> id	State Bundle
> 0	ACTIVE org.eclipse.osgi_3.8.0.v20110908-1857
> 3	ACTIVE osgi.example.service.consumer_1.0.0.qualifier
> 4	ACTIVE org.eclipse.osgi.services_3.3.0.v20110711-1243
> 5	ACTIVE org.eclipse.equinox.util_1.0.300.v20110502
> 6	ACTIVE org.eclipse.equinox.ds_1.3.100.v20110705
> 10	ACTIVE osgi.example.service_interface_1.0.0.qualifier
> 11	ACTIVE osgi.example.service.implementation_1.0.0.qualifier
> 
> In case the application is launched, the service consumer is triggered.
> 
> But in case the service provider is installed and started only after the application has launched, SCR
fails to load service implementation class. See exception stack below!
> 
> What is the problem with this runtime/post-application deployment of the service component?
> 
> Please note:
> With Apache Felix and SCR, there is no problem with the runtime deployment at all.
> 
> Many thanks, Csaba.
> 
> Framework is launched.
> id	State Bundle
> 0	ACTIVE org.eclipse.osgi_3.8.0.v20110908-1857
> 3	ACTIVE osgi.example.service.consumer_1.0.0.qualifier
> 4	ACTIVE org.eclipse.osgi.services_3.3.0.v20110711-1243
> 5	ACTIVE org.eclipse.equinox.util_1.0.300.v20110502
> 6	ACTIVE org.eclipse.equinox.ds_1.3.100.v20110705
> 10	ACTIVE osgi.example.service_interface_1.0.0.qualifier
> 
> osgi> install file:/home/csaba/eclipse_distros/Indigo/workspace/osgi.example.service.implementation
> Bundle id is 11.
> 
> id	State Bundle
> 11	INSTALLED osgi.example.service.implementation_1.0.0.qualifier
> 
> osgi> start 11
> 
> Here SCR throws an exception:
> 
> 
> !SESSION 2012-02-06 21:01:12.378 -----------------------------------------------
> eclipse.buildId=unknown
> java.version=1.6.0_20
> java.vendor=Sun Microsystems Inc.
> BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=en_US
> Command-line arguments: -dev
file:/home/csaba/eclipse_distros/Indigo/workspace/.metadata/.plugins/org.eclipse.pde.core/New_configuration
(1)/dev.properties -os linux -ws gtk -arch x86 -consoleLog -console -consolelog
> 
> !ENTRY org.eclipse.equinox.ds 4 0 2012-02-06 21:03:11.214
> !MESSAGE Exception occurred while creating new instance of component Component[
> name = osgi.example.service.implementation
> activate = activate
> deactivate = deactivate
> modified = 
> configuration-policy = optional
> factory = null
> autoenable = true
> immediate = false
> implementation = osgi.example.service.implementation.ServiceImpl
> state = Unsatisfied
> properties = 
> serviceFactory = false
> serviceInterface = [osgi.example.service_interface.Service]
> references = null
> located in bundle = osgi.example.service.implementation_1.0.0.qualifier [13]
> ] 
> !STACK 0
> java.lang.ClassNotFoundException: osgi.example.service.implementation.ServiceImpl
> at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
> at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
> at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
> at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
> at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
> at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
> at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1208)
> at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:480)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance(ServiceComponentProp.java:271)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:332)
> at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:588)
> at org.eclipse.equinox.internal.ds.ServiceReg.getService(ServiceReg.java:53)
> at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run(ServiceUse.java:141)
> at java.security.AccessController.doPrivileged(Native Method)
> at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService(ServiceUse.java:139)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:468)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:467)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(BundleContextImpl.java:594)
> at org.eclipse.equinox.internal.ds.InstanceProcess.getService(InstanceProcess.java:686)
> at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod(ComponentReference.java:111)
> at org.eclipse.equinox.internal.ds.model.ComponentReference.bind(ComponentReference.java:322)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference(ServiceComponentProp.java:441)
> at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind(InstanceProcess.java:415)
> at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:319)
> at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:221)
> at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
> at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
> at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
> at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:504)
> at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:259)
> at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:441)
> at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:213)
> at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:800)
> at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:767)
> at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
> at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
> 
> !ENTRY org.eclipse.equinox.ds 4 0 2012-02-06 21:03:11.216
> !MESSAGE Exception occurred while creating new instance of component Component[
> name = osgi.example.service.implementation
> activate = activate
> deactivate = deactivate
> modified = 
> configuration-policy = optional
> factory = null
> autoenable = true
> immediate = false
> implementation = osgi.example.service.implementation.ServiceImpl
> state = Unsatisfied
> properties = 
> serviceFactory = false
> serviceInterface = [osgi.example.service_interface.Service]
> references = null
> located in bundle = osgi.example.service.implementation_1.0.0.qualifier [13]
> ] 
> !STACK 0
> java.lang.ClassNotFoundException: osgi.example.service.implementation.ServiceImpl
> at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
> at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
> at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
> at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
> at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
> at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
> at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1208)
> at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:480)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance(ServiceComponentProp.java:271)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:332)
> at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:588)
> at org.eclipse.equinox.internal.ds.ServiceReg.getService(ServiceReg.java:53)
> at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run(ServiceUse.java:141)
> at java.security.AccessController.doPrivileged(Native Method)
> at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService(ServiceUse.java:139)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:468)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:467)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(BundleContextImpl.java:594)
> at org.eclipse.equinox.internal.ds.InstanceProcess.getService(InstanceProcess.java:686)
> at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod(ComponentReference.java:111)
> at org.eclipse.equinox.internal.ds.model.ComponentReference.bind(ComponentReference.java:322)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference(ServiceComponentProp.java:441)
> at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind(InstanceProcess.java:415)
> at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:319)
> at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:221)
> at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
> at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
> at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
> at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:504)
> at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:259)
> at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:441)
> at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:213)
> at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:800)
> at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:767)
> at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
> at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
> 
> !ENTRY org.eclipse.osgi 4 0 2012-02-06 21:03:11.220
> !MESSAGE An unexpected runtime error has occurred.
> !STACK 0
> org.osgi.service.component.ComponentException: Exception occurred while creating new instance of
component Component[
> name = osgi.example.service.implementation
> activate = activate
> deactivate = deactivate
> modified = 
> configuration-policy = optional
> factory = null
> autoenable = true
> immediate = false
> implementation = osgi.example.service.implementation.ServiceImpl
> state = Unsatisfied
> properties = 
> serviceFactory = false
> serviceInterface = [osgi.example.service_interface.Service]
> references = null
> located in bundle = osgi.example.service.implementation_1.0.0.qualifier [13]
> ] 
> at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:482)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance(ServiceComponentProp.java:271)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:332)
> at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:588)
> at org.eclipse.equinox.internal.ds.ServiceReg.getService(ServiceReg.java:53)
> at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run(ServiceUse.java:141)
> at java.security.AccessController.doPrivileged(Native Method)
> at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService(ServiceUse.java:139)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:468)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:467)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(BundleContextImpl.java:594)
> at org.eclipse.equinox.internal.ds.InstanceProcess.getService(InstanceProcess.java:686)
> at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod(ComponentReference.java:111)
> at org.eclipse.equinox.internal.ds.model.ComponentReference.bind(ComponentReference.java:322)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference(ServiceComponentProp.java:441)
> at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind(InstanceProcess.java:415)
> at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:319)
> at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:221)
> at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
> at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
> at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
> at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:504)
> at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:259)
> at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:441)
> at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:213)
> at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:800)
> at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:767)
> at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
> at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
> Caused by: java.lang.ClassNotFoundException: osgi.example.service.implementation.ServiceImpl
> at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
> at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
> at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
> at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
> at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
> at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
> at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1208)
> at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:480)
> ... 34 more
> 
> !ENTRY osgi.example.service.implementation 4 0 2012-02-06 21:03:11.223
> !MESSAGE FrameworkEvent ERROR
> !STACK 0
> org.osgi.framework.ServiceException: Exception in org.eclipse.equinox.internal.ds.ServiceReg.getService()
> at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService(ServiceUse.java:151)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:468)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:467)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(BundleContextImpl.java:594)
> at org.eclipse.equinox.internal.ds.InstanceProcess.getService(InstanceProcess.java:686)
> at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod(ComponentReference.java:111)
> at org.eclipse.equinox.internal.ds.model.ComponentReference.bind(ComponentReference.java:322)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference(ServiceComponentProp.java:441)
> at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind(InstanceProcess.java:415)
> at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:319)
> at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:221)
> at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
> at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
> at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
> at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:504)
> at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:259)
> at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:441)
> at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:213)
> at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:800)
> at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:767)
> at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
> at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
> Caused by: org.osgi.service.component.ComponentException: Exception occurred while creating new
instance of component Component[
> name = osgi.example.service.implementation
> activate = activate
> deactivate = deactivate
> modified = 
> configuration-policy = optional
> factory = null
> autoenable = true
> immediate = false
> implementation = osgi.example.service.implementation.ServiceImpl
> state = Unsatisfied
> properties = 
> serviceFactory = false
> serviceInterface = [osgi.example.service_interface.Service]
> references = null
> located in bundle = osgi.example.service.implementation_1.0.0.qualifier [13]
> ] 
> at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:482)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance(ServiceComponentProp.java:271)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:332)
> at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:588)
> at org.eclipse.equinox.internal.ds.ServiceReg.getService(ServiceReg.java:53)
> at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run(ServiceUse.java:141)
> at java.security.AccessController.doPrivileged(Native Method)
> at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService(ServiceUse.java:139)
> ... 27 more
> Caused by: java.lang.ClassNotFoundException: osgi.example.service.implementation.ServiceImpl
> at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
> at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
> at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
> at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
> at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
> at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
> at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1208)
> at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:480)
> ... 34 more
> 
> !ENTRY osgi.example.service.consumer 2 0 2012-02-06 21:03:11.228
> !MESSAGE [SCR] Could not get the service object relevant to the reference. One possible reason is a
circularity problem. Another possible reason is that BundleContext.getService() returns null.
> Details:
> Problematic reference = Reference[name = Service, interface =
osgi.example.service_interface.Service, policy = dynamic, cardinality = 0..n, target = null, bind =
setService, unbind = unsetService]
> of service component = osgi.example.service.consumer
> component implementation class = osgi.example.service.consumer.ServiceConsumer
> located in bundle with symbolic name = osgi.example.service.consumer
> bundle location = initial <at> reference:file:../../../../osgi.example.service.consumer/
> 
> !ENTRY osgi.example.service.consumer 2 0 2012-02-06 21:03:11.229
> !MESSAGE [SCR] ComponentReference.bind(): bind method 'setService' is not found or it is not accessible!
> Details:
> Problematic reference = Reference[name = Service, interface =
osgi.example.service_interface.Service, policy = dynamic, cardinality = 0..n, target = null, bind =
setService, unbind = unsetService]
> of service component = osgi.example.service.consumer
> component implementation class = osgi.example.service.consumer.ServiceConsumer
> located in bundle with symbolic name = osgi.example.service.consumer
> bundle location = initial <at> reference:file:../../../../osgi.example.service.consumer/ _______________________________________________
> equinox-dev mailing list
> equinox-dev@...
> https://dev.eclipse.org/mailman/listinfo/equinox-dev

Csaba Szucs | 8 Feb 12:26
Picon

Re: Service component deployment fails into a running Equinox application

Hello,

No, I do not, but I also tried it with that without any success. Nor do I with the 'refresh' Equinox console command. I always get the same exception stack...

Actually what I try to do is to provide a proof-of-concept Equinox application that is dynamically/at-runtime extendable (through service provider components) without the need to stop/restart the base application.
But it's really strange that I don't have any problem with my bundles in Apache Felix and SCR.

Perhaps do you know some other working solution for the requirement?

Many thanks, Csaba.


2012/2/8 Alex Blewitt <alex.blewitt-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Do you have an optional import for the package name?

If you do, and that bundle starts first, then it won't be wired to the package. If you start up the bundle containing the package first, then start up the provider, it will resolve the list of optional imports. Once started, even if an optional package is added later it's not added to the existing running bundle's package list. If you do a 'refresh' on the service provider, does the problem go away?

Alex

On 8 Feb 2012, at 09:38, Csaba Szucs wrote:

> Hello Guys,
>
> I have an Equinox OSGi application using Declarative Services with 3 plugins:
> -a service interface plugin
> -a service provider component
> -a service consumer component (cardinality: 0..n, policy: dynamic)
>
> Framework is launched.
> id    State Bundle
> 0     ACTIVE org.eclipse.osgi_3.8.0.v20110908-1857
> 3     ACTIVE osgi.example.service.consumer_1.0.0.qualifier
> 4     ACTIVE org.eclipse.osgi.services_3.3.0.v20110711-1243
> 5     ACTIVE org.eclipse.equinox.util_1.0.300.v20110502
> 6     ACTIVE org.eclipse.equinox.ds_1.3.100.v20110705
> 10    ACTIVE osgi.example.service_interface_1.0.0.qualifier
> 11    ACTIVE osgi.example.service.implementation_1.0.0.qualifier
>
> In case the application is launched, the service consumer is triggered.
>
> But in case the service provider is installed and started only after the application has launched, SCR fails to load service implementation class. See exception stack below!
>
> What is the problem with this runtime/post-application deployment of the service component?
>
> Please note:
> With Apache Felix and SCR, there is no problem with the runtime deployment at all.
>
> Many thanks, Csaba.
>
> Framework is launched.
> id    State Bundle
> 0     ACTIVE org.eclipse.osgi_3.8.0.v20110908-1857
> 3     ACTIVE osgi.example.service.consumer_1.0.0.qualifier
> 4     ACTIVE org.eclipse.osgi.services_3.3.0.v20110711-1243
> 5     ACTIVE org.eclipse.equinox.util_1.0.300.v20110502
> 6     ACTIVE org.eclipse.equinox.ds_1.3.100.v20110705
> 10    ACTIVE osgi.example.service_interface_1.0.0.qualifier
>
> osgi> install file:/home/csaba/eclipse_distros/Indigo/workspace/osgi.example.service.implementation
> Bundle id is 11.
>
> id    State Bundle
> 11    INSTALLED osgi.example.service.implementation_1.0.0.qualifier
>
> osgi> start 11
>
> Here SCR throws an exception:
>
>
> !SESSION 2012-02-06 21:01:12.378 -----------------------------------------------
> eclipse.buildId=unknown
> java.version=1.6.0_20
> java.vendor=Sun Microsystems Inc.
> BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=en_US
> Command-line arguments: -dev file:/home/csaba/eclipse_distros/Indigo/workspace/.metadata/.plugins/org.eclipse.pde.core/New_configuration (1)/dev.properties -os linux -ws gtk -arch x86 -consoleLog -console -consolelog
>
> !ENTRY org.eclipse.equinox.ds 4 0 2012-02-06 21:03:11.214
> !MESSAGE Exception occurred while creating new instance of component Component[
> name = osgi.example.service.implementation
> activate = activate
> deactivate = deactivate
> modified =
> configuration-policy = optional
> factory = null
> autoenable = true
> immediate = false
> implementation = osgi.example.service.implementation.ServiceImpl
> state = Unsatisfied
> properties =
> serviceFactory = false
> serviceInterface = [osgi.example.service_interface.Service]
> references = null
> located in bundle = osgi.example.service.implementation_1.0.0.qualifier [13]
> ]
> !STACK 0
> java.lang.ClassNotFoundException: osgi.example.service.implementation.ServiceImpl
> at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
> at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
> at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
> at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
> at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
> at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
> at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1208)
> at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:480)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance(ServiceComponentProp.java:271)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:332)
> at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:588)
> at org.eclipse.equinox.internal.ds.ServiceReg.getService(ServiceReg.java:53)
> at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run(ServiceUse.java:141)
> at java.security.AccessController.doPrivileged(Native Method)
> at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService(ServiceUse.java:139)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:468)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:467)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(BundleContextImpl.java:594)
> at org.eclipse.equinox.internal.ds.InstanceProcess.getService(InstanceProcess.java:686)
> at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod(ComponentReference.java:111)
> at org.eclipse.equinox.internal.ds.model.ComponentReference.bind(ComponentReference.java:322)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference(ServiceComponentProp.java:441)
> at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind(InstanceProcess.java:415)
> at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:319)
> at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:221)
> at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
> at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
> at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
> at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:504)
> at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:259)
> at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:441)
> at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:213)
> at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:800)
> at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:767)
> at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
> at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
>
> !ENTRY org.eclipse.equinox.ds 4 0 2012-02-06 21:03:11.216
> !MESSAGE Exception occurred while creating new instance of component Component[
> name = osgi.example.service.implementation
> activate = activate
> deactivate = deactivate
> modified =
> configuration-policy = optional
> factory = null
> autoenable = true
> immediate = false
> implementation = osgi.example.service.implementation.ServiceImpl
> state = Unsatisfied
> properties =
> serviceFactory = false
> serviceInterface = [osgi.example.service_interface.Service]
> references = null
> located in bundle = osgi.example.service.implementation_1.0.0.qualifier [13]
> ]
> !STACK 0
> java.lang.ClassNotFoundException: osgi.example.service.implementation.ServiceImpl
> at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
> at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
> at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
> at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
> at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
> at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
> at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1208)
> at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:480)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance(ServiceComponentProp.java:271)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:332)
> at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:588)
> at org.eclipse.equinox.internal.ds.ServiceReg.getService(ServiceReg.java:53)
> at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run(ServiceUse.java:141)
> at java.security.AccessController.doPrivileged(Native Method)
> at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService(ServiceUse.java:139)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:468)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:467)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(BundleContextImpl.java:594)
> at org.eclipse.equinox.internal.ds.InstanceProcess.getService(InstanceProcess.java:686)
> at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod(ComponentReference.java:111)
> at org.eclipse.equinox.internal.ds.model.ComponentReference.bind(ComponentReference.java:322)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference(ServiceComponentProp.java:441)
> at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind(InstanceProcess.java:415)
> at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:319)
> at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:221)
> at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
> at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
> at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
> at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:504)
> at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:259)
> at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:441)
> at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:213)
> at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:800)
> at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:767)
> at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
> at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
>
> !ENTRY org.eclipse.osgi 4 0 2012-02-06 21:03:11.220
> !MESSAGE An unexpected runtime error has occurred.
> !STACK 0
> org.osgi.service.component.ComponentException: Exception occurred while creating new instance of component Component[
> name = osgi.example.service.implementation
> activate = activate
> deactivate = deactivate
> modified =
> configuration-policy = optional
> factory = null
> autoenable = true
> immediate = false
> implementation = osgi.example.service.implementation.ServiceImpl
> state = Unsatisfied
> properties =
> serviceFactory = false
> serviceInterface = [osgi.example.service_interface.Service]
> references = null
> located in bundle = osgi.example.service.implementation_1.0.0.qualifier [13]
> ]
> at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:482)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance(ServiceComponentProp.java:271)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:332)
> at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:588)
> at org.eclipse.equinox.internal.ds.ServiceReg.getService(ServiceReg.java:53)
> at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run(ServiceUse.java:141)
> at java.security.AccessController.doPrivileged(Native Method)
> at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService(ServiceUse.java:139)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:468)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:467)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(BundleContextImpl.java:594)
> at org.eclipse.equinox.internal.ds.InstanceProcess.getService(InstanceProcess.java:686)
> at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod(ComponentReference.java:111)
> at org.eclipse.equinox.internal.ds.model.ComponentReference.bind(ComponentReference.java:322)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference(ServiceComponentProp.java:441)
> at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind(InstanceProcess.java:415)
> at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:319)
> at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:221)
> at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
> at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
> at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
> at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:504)
> at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:259)
> at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:441)
> at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:213)
> at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:800)
> at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:767)
> at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
> at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
> Caused by: java.lang.ClassNotFoundException: osgi.example.service.implementation.ServiceImpl
> at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
> at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
> at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
> at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
> at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
> at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
> at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1208)
> at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:480)
> ... 34 more
>
> !ENTRY osgi.example.service.implementation 4 0 2012-02-06 21:03:11.223
> !MESSAGE FrameworkEvent ERROR
> !STACK 0
> org.osgi.framework.ServiceException: Exception in org.eclipse.equinox.internal.ds.ServiceReg.getService()
> at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService(ServiceUse.java:151)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:468)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:467)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(BundleContextImpl.java:594)
> at org.eclipse.equinox.internal.ds.InstanceProcess.getService(InstanceProcess.java:686)
> at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod(ComponentReference.java:111)
> at org.eclipse.equinox.internal.ds.model.ComponentReference.bind(ComponentReference.java:322)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference(ServiceComponentProp.java:441)
> at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind(InstanceProcess.java:415)
> at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:319)
> at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:221)
> at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
> at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
> at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
> at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
> at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
> at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:504)
> at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:259)
> at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:441)
> at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:213)
> at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:800)
> at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:767)
> at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
> at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
> Caused by: org.osgi.service.component.ComponentException: Exception occurred while creating new instance of component Component[
> name = osgi.example.service.implementation
> activate = activate
> deactivate = deactivate
> modified =
> configuration-policy = optional
> factory = null
> autoenable = true
> immediate = false
> implementation = osgi.example.service.implementation.ServiceImpl
> state = Unsatisfied
> properties =
> serviceFactory = false
> serviceInterface = [osgi.example.service_interface.Service]
> references = null
> located in bundle = osgi.example.service.implementation_1.0.0.qualifier [13]
> ]
> at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:482)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance(ServiceComponentProp.java:271)
> at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:332)
> at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:588)
> at org.eclipse.equinox.internal.ds.ServiceReg.getService(ServiceReg.java:53)
> at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run(ServiceUse.java:141)
> at java.security.AccessController.doPrivileged(Native Method)
> at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService(ServiceUse.java:139)
> ... 27 more
> Caused by: java.lang.ClassNotFoundException: osgi.example.service.implementation.ServiceImpl
> at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
> at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
> at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
> at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
> at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
> at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
> at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1208)
> at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:480)
> ... 34 more
>
> !ENTRY osgi.example.service.consumer 2 0 2012-02-06 21:03:11.228
> !MESSAGE [SCR] Could not get the service object relevant to the reference. One possible reason is a circularity problem. Another possible reason is that BundleContext.getService() returns null.
> Details:
> Problematic reference = Reference[name = Service, interface = osgi.example.service_interface.Service, policy = dynamic, cardinality = 0..n, target = null, bind = setService, unbind = unsetService]
> of service component = osgi.example.service.consumer
> component implementation class = osgi.example.service.consumer.ServiceConsumer
> located in bundle with symbolic name = osgi.example.service.consumer
> bundle location = initial <at> reference:file:../../../../osgi.example.service.consumer/
>
> !ENTRY osgi.example.service.consumer 2 0 2012-02-06 21:03:11.229
> !MESSAGE [SCR] ComponentReference.bind(): bind method 'setService' is not found or it is not accessible!
> Details:
> Problematic reference = Reference[name = Service, interface = osgi.example.service_interface.Service, policy = dynamic, cardinality = 0..n, target = null, bind = setService, unbind = unsetService]
> of service component = osgi.example.service.consumer
> component implementation class = osgi.example.service.consumer.ServiceConsumer
> located in bundle with symbolic name = osgi.example.service.consumer
> bundle location = initial <at> reference:file:../../../../osgi.example.service.consumer/ _______________________________________________
> equinox-dev mailing list
> equinox-dev-j9T/66MeVpFAfugRpC6u6w@public.gmane.org
> https://dev.eclipse.org/mailman/listinfo/equinox-dev

_______________________________________________
equinox-dev mailing list
equinox-dev-j9T/66MeVpFAfugRpC6u6w@public.gmane.org
https://dev.eclipse.org/mailman/listinfo/equinox-dev

Thomas Watson | 8 Feb 14:54
Picon
Favicon

Re: Service component deployment fails into a running Equinox application

I would open a bug against Equinox->Compendium (at
https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Equinox).  This sounds
like a bug and it would be helpful if you could provide your testcase
attached to the bug.

Thanks.

Tom

|------------>
| From:      |
|------------>
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
  |Csaba Szucs <csaba.szucs@...>                                                                                                               |
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| To:        |
|------------>
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
  |Equinox development mailing list <equinox-dev@...>,                                                                                       |
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Date:      |
|------------>
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
  |02/08/2012 05:28 AM                                                                                                                               |
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Subject:   |
|------------>
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
  |Re: [equinox-dev] Service component deployment fails into a running Equinox application                                                           |
  >--------------------------------------------------------------------------------------------------------------------------------------------------|

Hello,

No, I do not, but I also tried it with that without any success. Nor do I
with the 'refresh' Equinox console command. I always get the same exception
stack...

Actually what I try to do is to provide a proof-of-concept Equinox
application that is dynamically/at-runtime extendable (through service
provider components) without the need to stop/restart the base application.
But it's really strange that I don't have any problem with my bundles in
Apache Felix and SCR.

Perhaps do you know some other working solution for the requirement?

Many thanks, Csaba.

2012/2/8 Alex Blewitt <alex.blewitt@...>
  Do you have an optional import for the package name?

  If you do, and that bundle starts first, then it won't be wired to the
  package. If you start up the bundle containing the package first, then
  start up the provider, it will resolve the list of optional imports. Once
  started, even if an optional package is added later it's not added to the
  existing running bundle's package list. If you do a 'refresh' on the
  service provider, does the problem go away?

  Alex

  On 8 Feb 2012, at 09:38, Csaba Szucs wrote:

  > Hello Guys,
  >
  > I have an Equinox OSGi application using Declarative Services with 3
  plugins:
  > -a service interface plugin
  > -a service provider component
  > -a service consumer component (cardinality: 0..n, policy: dynamic)
  >
  > Framework is launched.
  > id    State Bundle
  > 0     ACTIVE org.eclipse.osgi_3.8.0.v20110908-1857
  > 3     ACTIVE osgi.example.service.consumer_1.0.0.qualifier
  > 4     ACTIVE org.eclipse.osgi.services_3.3.0.v20110711-1243
  > 5     ACTIVE org.eclipse.equinox.util_1.0.300.v20110502
  > 6     ACTIVE org.eclipse.equinox.ds_1.3.100.v20110705
  > 10    ACTIVE osgi.example.service_interface_1.0.0.qualifier
  > 11    ACTIVE osgi.example.service.implementation_1.0.0.qualifier
  >
  > In case the application is launched, the service consumer is triggered.
  >
  > But in case the service provider is installed and started only after
  the application has launched, SCR fails to load service implementation
  class. See exception stack below!
  >
  > What is the problem with this runtime/post-application deployment of
  the service component?
  >
  > Please note:
  > With Apache Felix and SCR, there is no problem with the runtime
  deployment at all.
  >
  > Many thanks, Csaba.
  >
  > Framework is launched.
  > id    State Bundle
  > 0     ACTIVE org.eclipse.osgi_3.8.0.v20110908-1857
  > 3     ACTIVE osgi.example.service.consumer_1.0.0.qualifier
  > 4     ACTIVE org.eclipse.osgi.services_3.3.0.v20110711-1243
  > 5     ACTIVE org.eclipse.equinox.util_1.0.300.v20110502
  > 6     ACTIVE org.eclipse.equinox.ds_1.3.100.v20110705
  > 10    ACTIVE osgi.example.service_interface_1.0.0.qualifier
  >
  > osgi> install
  file:/home/csaba/eclipse_distros/Indigo/workspace/osgi.example.service.implementation

  > Bundle id is 11.
  >
  > id    State Bundle
  > 11    INSTALLED osgi.example.service.implementation_1.0.0.qualifier
  >
  > osgi> start 11
  >
  > Here SCR throws an exception:
  >
  >
  > !SESSION 2012-02-06 21:01:12.378
  -----------------------------------------------
  > eclipse.buildId=unknown
  > java.version=1.6.0_20
  > java.vendor=Sun Microsystems Inc.
  > BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=en_US
  > Command-line arguments: -dev
  file:/home/csaba/eclipse_distros/Indigo/workspace/.metadata/.plugins/org.eclipse.pde.core/New_configuration
 (1)/dev.properties -os linux -ws gtk -arch x86 -consoleLog -console
  -consolelog
  >
  > !ENTRY org.eclipse.equinox.ds 4 0 2012-02-06 21:03:11.214
  > !MESSAGE Exception occurred while creating new instance of component
  Component[
  > name = osgi.example.service.implementation
  > activate = activate
  > deactivate = deactivate
  > modified =
  > configuration-policy = optional
  > factory = null
  > autoenable = true
  > immediate = false
  > implementation = osgi.example.service.implementation.ServiceImpl
  > state = Unsatisfied
  > properties =
  > serviceFactory = false
  > serviceInterface = [osgi.example.service_interface.Service]
  > references = null
  > located in bundle = osgi.example.service.implementation_1.0.0.qualifier
  [13]
  > ]
  > !STACK 0
  > java.lang.ClassNotFoundException:
  osgi.example.service.implementation.ServiceImpl
  > at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal
  (BundleLoader.java:513)
  > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
  (BundleLoader.java:429)
  > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
  (BundleLoader.java:417)
  > at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass
  (DefaultClassLoader.java:107)
  > at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
  > at org.eclipse.osgi.internal.loader.BundleLoader.loadClass
  (BundleLoader.java:345)
  > at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass
  (BundleHost.java:229)
  > at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass
  (AbstractBundle.java:1208)
  > at
  org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance
  (ServiceComponent.java:480)
  > at
  org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance
  (ServiceComponentProp.java:271)
  > at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build
  (ServiceComponentProp.java:332)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent
  (InstanceProcess.java:588)
  > at org.eclipse.equinox.internal.ds.ServiceReg.getService
  (ServiceReg.java:53)
  > at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run
  (ServiceUse.java:141)
  > at java.security.AccessController.doPrivileged(Native Method)
  > at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService
  (ServiceUse.java:139)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService
(ServiceRegistrationImpl.java:468)
  > at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService
  (ServiceRegistry.java:467)
  > at
  org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService
  (BundleContextImpl.java:594)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.getService
  (InstanceProcess.java:686)
  > at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod
  (ComponentReference.java:111)
  > at org.eclipse.equinox.internal.ds.model.ComponentReference.bind
  (ComponentReference.java:322)
  > at
  org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference
  (ServiceComponentProp.java:441)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind
  (InstanceProcess.java:415)
  > at org.eclipse.equinox.internal.ds.Resolver.getEligible
  (Resolver.java:319)
  > at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged
  (SCRManager.java:221)
  > at
  org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged
(FilteredServiceListener.java:104)
  > at
  org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent
  (BundleContextImpl.java:861)
  > at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent
  (EventManager.java:230)
  > at
  org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous
(ListenerQueue.java:148)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged
(ServiceRegistry.java:819)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent
(ServiceRegistry.java:771)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register
(ServiceRegistrationImpl.java:130)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService
  (ServiceRegistry.java:214)
  > at
  org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService
(BundleContextImpl.java:433)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.registerService
  (InstanceProcess.java:504)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents
  (InstanceProcess.java:259)
  > at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied
  (Resolver.java:441)
  > at org.eclipse.equinox.internal.ds.Resolver.enableComponents
  (Resolver.java:213)
  > at org.eclipse.equinox.internal.ds.SCRManager.performWork
  (SCRManager.java:800)
  > at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch
  (SCRManager.java:767)
  > at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
  > at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run
  (Executor.java:70)
  >
  > !ENTRY org.eclipse.equinox.ds 4 0 2012-02-06 21:03:11.216
  > !MESSAGE Exception occurred while creating new instance of component
  Component[
  > name = osgi.example.service.implementation
  > activate = activate
  > deactivate = deactivate
  > modified =
  > configuration-policy = optional
  > factory = null
  > autoenable = true
  > immediate = false
  > implementation = osgi.example.service.implementation.ServiceImpl
  > state = Unsatisfied
  > properties =
  > serviceFactory = false
  > serviceInterface = [osgi.example.service_interface.Service]
  > references = null
  > located in bundle = osgi.example.service.implementation_1.0.0.qualifier
  [13]
  > ]
  > !STACK 0
  > java.lang.ClassNotFoundException:
  osgi.example.service.implementation.ServiceImpl
  > at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal
  (BundleLoader.java:513)
  > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
  (BundleLoader.java:429)
  > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
  (BundleLoader.java:417)
  > at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass
  (DefaultClassLoader.java:107)
  > at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
  > at org.eclipse.osgi.internal.loader.BundleLoader.loadClass
  (BundleLoader.java:345)
  > at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass
  (BundleHost.java:229)
  > at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass
  (AbstractBundle.java:1208)
  > at
  org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance
  (ServiceComponent.java:480)
  > at
  org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance
  (ServiceComponentProp.java:271)
  > at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build
  (ServiceComponentProp.java:332)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent
  (InstanceProcess.java:588)
  > at org.eclipse.equinox.internal.ds.ServiceReg.getService
  (ServiceReg.java:53)
  > at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run
  (ServiceUse.java:141)
  > at java.security.AccessController.doPrivileged(Native Method)
  > at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService
  (ServiceUse.java:139)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService
(ServiceRegistrationImpl.java:468)
  > at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService
  (ServiceRegistry.java:467)
  > at
  org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService
  (BundleContextImpl.java:594)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.getService
  (InstanceProcess.java:686)
  > at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod
  (ComponentReference.java:111)
  > at org.eclipse.equinox.internal.ds.model.ComponentReference.bind
  (ComponentReference.java:322)
  > at
  org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference
  (ServiceComponentProp.java:441)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind
  (InstanceProcess.java:415)
  > at org.eclipse.equinox.internal.ds.Resolver.getEligible
  (Resolver.java:319)
  > at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged
  (SCRManager.java:221)
  > at
  org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged
(FilteredServiceListener.java:104)
  > at
  org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent
  (BundleContextImpl.java:861)
  > at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent
  (EventManager.java:230)
  > at
  org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous
(ListenerQueue.java:148)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged
(ServiceRegistry.java:819)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent
(ServiceRegistry.java:771)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register
(ServiceRegistrationImpl.java:130)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService
  (ServiceRegistry.java:214)
  > at
  org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService
(BundleContextImpl.java:433)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.registerService
  (InstanceProcess.java:504)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents
  (InstanceProcess.java:259)
  > at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied
  (Resolver.java:441)
  > at org.eclipse.equinox.internal.ds.Resolver.enableComponents
  (Resolver.java:213)
  > at org.eclipse.equinox.internal.ds.SCRManager.performWork
  (SCRManager.java:800)
  > at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch
  (SCRManager.java:767)
  > at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
  > at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run
  (Executor.java:70)
  >
  > !ENTRY org.eclipse.osgi 4 0 2012-02-06 21:03:11.220
  > !MESSAGE An unexpected runtime error has occurred.
  > !STACK 0
  > org.osgi.service.component.ComponentException: Exception occurred while
  creating new instance of component Component[
  > name = osgi.example.service.implementation
  > activate = activate
  > deactivate = deactivate
  > modified =
  > configuration-policy = optional
  > factory = null
  > autoenable = true
  > immediate = false
  > implementation = osgi.example.service.implementation.ServiceImpl
  > state = Unsatisfied
  > properties =
  > serviceFactory = false
  > serviceInterface = [osgi.example.service_interface.Service]
  > references = null
  > located in bundle = osgi.example.service.implementation_1.0.0.qualifier
  [13]
  > ]
  > at
  org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance
  (ServiceComponent.java:482)
  > at
  org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance
  (ServiceComponentProp.java:271)
  > at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build
  (ServiceComponentProp.java:332)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent
  (InstanceProcess.java:588)
  > at org.eclipse.equinox.internal.ds.ServiceReg.getService
  (ServiceReg.java:53)
  > at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run
  (ServiceUse.java:141)
  > at java.security.AccessController.doPrivileged(Native Method)
  > at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService
  (ServiceUse.java:139)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService
(ServiceRegistrationImpl.java:468)
  > at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService
  (ServiceRegistry.java:467)
  > at
  org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService
  (BundleContextImpl.java:594)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.getService
  (InstanceProcess.java:686)
  > at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod
  (ComponentReference.java:111)
  > at org.eclipse.equinox.internal.ds.model.ComponentReference.bind
  (ComponentReference.java:322)
  > at
  org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference
  (ServiceComponentProp.java:441)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind
  (InstanceProcess.java:415)
  > at org.eclipse.equinox.internal.ds.Resolver.getEligible
  (Resolver.java:319)
  > at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged
  (SCRManager.java:221)
  > at
  org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged
(FilteredServiceListener.java:104)
  > at
  org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent
  (BundleContextImpl.java:861)
  > at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent
  (EventManager.java:230)
  > at
  org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous
(ListenerQueue.java:148)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged
(ServiceRegistry.java:819)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent
(ServiceRegistry.java:771)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register
(ServiceRegistrationImpl.java:130)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService
  (ServiceRegistry.java:214)
  > at
  org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService
(BundleContextImpl.java:433)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.registerService
  (InstanceProcess.java:504)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents
  (InstanceProcess.java:259)
  > at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied
  (Resolver.java:441)
  > at org.eclipse.equinox.internal.ds.Resolver.enableComponents
  (Resolver.java:213)
  > at org.eclipse.equinox.internal.ds.SCRManager.performWork
  (SCRManager.java:800)
  > at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch
  (SCRManager.java:767)
  > at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
  > at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run
  (Executor.java:70)
  > Caused by: java.lang.ClassNotFoundException:
  osgi.example.service.implementation.ServiceImpl
  > at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal
  (BundleLoader.java:513)
  > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
  (BundleLoader.java:429)
  > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
  (BundleLoader.java:417)
  > at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass
  (DefaultClassLoader.java:107)
  > at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
  > at org.eclipse.osgi.internal.loader.BundleLoader.loadClass
  (BundleLoader.java:345)
  > at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass
  (BundleHost.java:229)
  > at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass
  (AbstractBundle.java:1208)
  > at
  org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance
  (ServiceComponent.java:480)
  > ... 34 more
  >
  > !ENTRY osgi.example.service.implementation 4 0 2012-02-06 21:03:11.223
  > !MESSAGE FrameworkEvent ERROR
  > !STACK 0
  > org.osgi.framework.ServiceException: Exception in
  org.eclipse.equinox.internal.ds.ServiceReg.getService()
  > at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService
  (ServiceUse.java:151)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService
(ServiceRegistrationImpl.java:468)
  > at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService
  (ServiceRegistry.java:467)
  > at
  org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService
  (BundleContextImpl.java:594)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.getService
  (InstanceProcess.java:686)
  > at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod
  (ComponentReference.java:111)
  > at org.eclipse.equinox.internal.ds.model.ComponentReference.bind
  (ComponentReference.java:322)
  > at
  org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference
  (ServiceComponentProp.java:441)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind
  (InstanceProcess.java:415)
  > at org.eclipse.equinox.internal.ds.Resolver.getEligible
  (Resolver.java:319)
  > at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged
  (SCRManager.java:221)
  > at
  org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged
(FilteredServiceListener.java:104)
  > at
  org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent
  (BundleContextImpl.java:861)
  > at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent
  (EventManager.java:230)
  > at
  org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous
(ListenerQueue.java:148)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged
(ServiceRegistry.java:819)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent
(ServiceRegistry.java:771)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register
(ServiceRegistrationImpl.java:130)
  > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService
  (ServiceRegistry.java:214)
  > at
  org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService
(BundleContextImpl.java:433)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.registerService
  (InstanceProcess.java:504)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents
  (InstanceProcess.java:259)
  > at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied
  (Resolver.java:441)
  > at org.eclipse.equinox.internal.ds.Resolver.enableComponents
  (Resolver.java:213)
  > at org.eclipse.equinox.internal.ds.SCRManager.performWork
  (SCRManager.java:800)
  > at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch
  (SCRManager.java:767)
  > at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
  > at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run
  (Executor.java:70)
  > Caused by: org.osgi.service.component.ComponentException: Exception
  occurred while creating new instance of component Component[
  > name = osgi.example.service.implementation
  > activate = activate
  > deactivate = deactivate
  > modified =
  > configuration-policy = optional
  > factory = null
  > autoenable = true
  > immediate = false
  > implementation = osgi.example.service.implementation.ServiceImpl
  > state = Unsatisfied
  > properties =
  > serviceFactory = false
  > serviceInterface = [osgi.example.service_interface.Service]
  > references = null
  > located in bundle = osgi.example.service.implementation_1.0.0.qualifier
  [13]
  > ]
  > at
  org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance
  (ServiceComponent.java:482)
  > at
  org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance
  (ServiceComponentProp.java:271)
  > at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build
  (ServiceComponentProp.java:332)
  > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent
  (InstanceProcess.java:588)
  > at org.eclipse.equinox.internal.ds.ServiceReg.getService
  (ServiceReg.java:53)
  > at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run
  (ServiceUse.java:141)
  > at java.security.AccessController.doPrivileged(Native Method)
  > at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService
  (ServiceUse.java:139)
  > ... 27 more
  > Caused by: java.lang.ClassNotFoundException:
  osgi.example.service.implementation.ServiceImpl
  > at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal
  (BundleLoader.java:513)
  > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
  (BundleLoader.java:429)
  > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
  (BundleLoader.java:417)
  > at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass
  (DefaultClassLoader.java:107)
  > at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
  > at org.eclipse.osgi.internal.loader.BundleLoader.loadClass
  (BundleLoader.java:345)
  > at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass
  (BundleHost.java:229)
  > at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass
  (AbstractBundle.java:1208)
  > at
  org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance
  (ServiceComponent.java:480)
  > ... 34 more
  >
  > !ENTRY osgi.example.service.consumer 2 0 2012-02-06 21:03:11.228
  > !MESSAGE [SCR] Could not get the service object relevant to the
  reference. One possible reason is a circularity problem. Another possible
  reason is that BundleContext.getService() returns null.
  > Details:
  > Problematic reference = Reference[name = Service, interface =
  osgi.example.service_interface.Service, policy = dynamic, cardinality =
  0..n, target = null, bind = setService, unbind = unsetService]
  > of service component = osgi.example.service.consumer
  > component implementation class =
  osgi.example.service.consumer.ServiceConsumer
  > located in bundle with symbolic name = osgi.example.service.consumer
  > bundle location = initial <at> reference:
  file:../../../../osgi.example.service.consumer/
  >
  > !ENTRY osgi.example.service.consumer 2 0 2012-02-06 21:03:11.229
  > !MESSAGE [SCR] ComponentReference.bind(): bind method 'setService' is
  not found or it is not accessible!
  > Details:
  > Problematic reference = Reference[name = Service, interface =
  osgi.example.service_interface.Service, policy = dynamic, cardinality =
  0..n, target = null, bind = setService, unbind = unsetService]
  > of service component = osgi.example.service.consumer
  > component implementation class =
  osgi.example.service.consumer.ServiceConsumer
  > located in bundle with symbolic name = osgi.example.service.consumer
  > bundle location = initial <at> reference:
  file:../../../../osgi.example.service.consumer/
  _______________________________________________
  > equinox-dev mailing list
  > equinox-dev@...
  > https://dev.eclipse.org/mailman/listinfo/equinox-dev

  _______________________________________________
  equinox-dev mailing list
  equinox-dev@...
  https://dev.eclipse.org/mailman/listinfo/equinox-dev
_______________________________________________
equinox-dev mailing list
equinox-dev@...
https://dev.eclipse.org/mailman/listinfo/equinox-dev

Csaba Szucs | 9 Feb 10:27
Picon

Re: Service component deployment fails into a running Equinox application

Hello Guys,

Sorry, it was my mistake.

I realized that I did install the service provider plugin as a workspace plugin (including the bin folder) and not as a jar file. If I install and start the service provider as a plugin JAR file, everything is ok.

So it does not work like this:
osgi>install file:/home/csaba/eclipse_distros/Indigo/workspace/osgi.example.service.implementation

But it does work like this
osgi>install file:/home/csaba/tmp/plugins/osgi.example.service.implementation_1.0.0_20120209.jar

So I think, this is not a bug...

Thanks, anyway!
Csaba


2012/2/8 Thomas Watson <tjwatson-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
I would open a bug against Equinox->Compendium (at
https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Equinox).  This sounds
like a bug and it would be helpful if you could provide your testcase
attached to the bug.

Thanks.

Tom




|------------>
| From:      |
|------------>
 >--------------------------------------------------------------------------------------------------------------------------------------------------|
 |Csaba Szucs <csaba.szucs <at> gmail.com>                                                                                                               |
 >--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| To:        |
|------------>
 >--------------------------------------------------------------------------------------------------------------------------------------------------|
 |Equinox development mailing list <equinox-dev-j9T/66MeVpFAfugRpC6u6w@public.gmane.org>,                                                                                       |
 >--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Date:      |
|------------>
 >--------------------------------------------------------------------------------------------------------------------------------------------------|
 |02/08/2012 05:28 AM                                                                                                                               |
 >--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Subject:   |
|------------>
 >--------------------------------------------------------------------------------------------------------------------------------------------------|
 |Re: [equinox-dev] Service component deployment fails into a running Equinox application                                                           |
 >--------------------------------------------------------------------------------------------------------------------------------------------------|





Hello,

No, I do not, but I also tried it with that without any success. Nor do I
with the 'refresh' Equinox console command. I always get the same exception
stack...

Actually what I try to do is to provide a proof-of-concept Equinox
application that is dynamically/at-runtime extendable (through service
provider components) without the need to stop/restart the base application.
But it's really strange that I don't have any problem with my bundles in
Apache Felix and SCR.

Perhaps do you know some other working solution for the requirement?

Many thanks, Csaba.


2012/2/8 Alex Blewitt <alex.blewitt-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
 Do you have an optional import for the package name?

 If you do, and that bundle starts first, then it won't be wired to the
 package. If you start up the bundle containing the package first, then
 start up the provider, it will resolve the list of optional imports. Once
 started, even if an optional package is added later it's not added to the
 existing running bundle's package list. If you do a 'refresh' on the
 service provider, does the problem go away?

 Alex

 On 8 Feb 2012, at 09:38, Csaba Szucs wrote:

 > Hello Guys,
 >
 > I have an Equinox OSGi application using Declarative Services with 3
 plugins:
 > -a service interface plugin
 > -a service provider component
 > -a service consumer component (cardinality: 0..n, policy: dynamic)
 >
 > Framework is launched.
 > id    State Bundle
 > 0     ACTIVE org.eclipse.osgi_3.8.0.v20110908-1857
 > 3     ACTIVE osgi.example.service.consumer_1.0.0.qualifier
 > 4     ACTIVE org.eclipse.osgi.services_3.3.0.v20110711-1243
 > 5     ACTIVE org.eclipse.equinox.util_1.0.300.v20110502
 > 6     ACTIVE org.eclipse.equinox.ds_1.3.100.v20110705
 > 10    ACTIVE osgi.example.service_interface_1.0.0.qualifier
 > 11    ACTIVE osgi.example.service.implementation_1.0.0.qualifier
 >
 > In case the application is launched, the service consumer is triggered.
 >
 > But in case the service provider is installed and started only after
 the application has launched, SCR fails to load service implementation
 class. See exception stack below!
 >
 > What is the problem with this runtime/post-application deployment of
 the service component?
 >
 > Please note:
 > With Apache Felix and SCR, there is no problem with the runtime
 deployment at all.
 >
 > Many thanks, Csaba.
 >
 > Framework is launched.
 > id    State Bundle
 > 0     ACTIVE org.eclipse.osgi_3.8.0.v20110908-1857
 > 3     ACTIVE osgi.example.service.consumer_1.0.0.qualifier
 > 4     ACTIVE org.eclipse.osgi.services_3.3.0.v20110711-1243
 > 5     ACTIVE org.eclipse.equinox.util_1.0.300.v20110502
 > 6     ACTIVE org.eclipse.equinox.ds_1.3.100.v20110705
 > 10    ACTIVE osgi.example.service_interface_1.0.0.qualifier
 >
 > osgi> install
 file:/home/csaba/eclipse_distros/Indigo/workspace/osgi.example.service.implementation

 > Bundle id is 11.
 >
 > id    State Bundle
 > 11    INSTALLED osgi.example.service.implementation_1.0.0.qualifier
 >
 > osgi> start 11
 >
 > Here SCR throws an exception:
 >
 >
 > !SESSION 2012-02-06 21:01:12.378
 -----------------------------------------------
 > eclipse.buildId=unknown
 > java.version=1.6.0_20
 > java.vendor=Sun Microsystems Inc.
 > BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=en_US
 > Command-line arguments: -dev
 file:/home/csaba/eclipse_distros/Indigo/workspace/.metadata/.plugins/org.eclipse.pde.core/New_configuration
 (1)/dev.properties -os linux -ws gtk -arch x86 -consoleLog -console
 -consolelog
 >
 > !ENTRY org.eclipse.equinox.ds 4 0 2012-02-06 21:03:11.214
 > !MESSAGE Exception occurred while creating new instance of component
 Component[
 > name = osgi.example.service.implementation
 > activate = activate
 > deactivate = deactivate
 > modified =
 > configuration-policy = optional
 > factory = null
 > autoenable = true
 > immediate = false
 > implementation = osgi.example.service.implementation.ServiceImpl
 > state = Unsatisfied
 > properties =
 > serviceFactory = false
 > serviceInterface = [osgi.example.service_interface.Service]
 > references = null
 > located in bundle = osgi.example.service.implementation_1.0.0.qualifier
 [13]
 > ]
 > !STACK 0
 > java.lang.ClassNotFoundException:
 osgi.example.service.implementation.ServiceImpl
 > at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal
 (BundleLoader.java:513)
 > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
 (BundleLoader.java:429)
 > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
 (BundleLoader.java:417)
 > at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass
 (DefaultClassLoader.java:107)
 > at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
 > at org.eclipse.osgi.internal.loader.BundleLoader.loadClass
 (BundleLoader.java:345)
 > at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass
 (BundleHost.java:229)
 > at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass
 (AbstractBundle.java:1208)
 > at
 org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance
 (ServiceComponent.java:480)
 > at
 org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance
 (ServiceComponentProp.java:271)
 > at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build
 (ServiceComponentProp.java:332)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent
 (InstanceProcess.java:588)
 > at org.eclipse.equinox.internal.ds.ServiceReg.getService
 (ServiceReg.java:53)
 > at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run
 (ServiceUse.java:141)
 > at java.security.AccessController.doPrivileged(Native Method)
 > at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService
 (ServiceUse.java:139)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService
(ServiceRegistrationImpl.java:468)
 > at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService
 (ServiceRegistry.java:467)
 > at
 org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService
 (BundleContextImpl.java:594)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.getService
 (InstanceProcess.java:686)
 > at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod
 (ComponentReference.java:111)
 > at org.eclipse.equinox.internal.ds.model.ComponentReference.bind
 (ComponentReference.java:322)
 > at
 org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference
 (ServiceComponentProp.java:441)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind
 (InstanceProcess.java:415)
 > at org.eclipse.equinox.internal.ds.Resolver.getEligible
 (Resolver.java:319)
 > at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged
 (SCRManager.java:221)
 > at
 org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged
(FilteredServiceListener.java:104)
 > at
 org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent
 (BundleContextImpl.java:861)
 > at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent
 (EventManager.java:230)
 > at
 org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous
(ListenerQueue.java:148)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged
(ServiceRegistry.java:819)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent
(ServiceRegistry.java:771)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register
(ServiceRegistrationImpl.java:130)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService
 (ServiceRegistry.java:214)
 > at
 org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService
(BundleContextImpl.java:433)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.registerService
 (InstanceProcess.java:504)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents
 (InstanceProcess.java:259)
 > at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied
 (Resolver.java:441)
 > at org.eclipse.equinox.internal.ds.Resolver.enableComponents
 (Resolver.java:213)
 > at org.eclipse.equinox.internal.ds.SCRManager.performWork
 (SCRManager.java:800)
 > at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch
 (SCRManager.java:767)
 > at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
 > at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run
 (Executor.java:70)
 >
 > !ENTRY org.eclipse.equinox.ds 4 0 2012-02-06 21:03:11.216
 > !MESSAGE Exception occurred while creating new instance of component
 Component[
 > name = osgi.example.service.implementation
 > activate = activate
 > deactivate = deactivate
 > modified =
 > configuration-policy = optional
 > factory = null
 > autoenable = true
 > immediate = false
 > implementation = osgi.example.service.implementation.ServiceImpl
 > state = Unsatisfied
 > properties =
 > serviceFactory = false
 > serviceInterface = [osgi.example.service_interface.Service]
 > references = null
 > located in bundle = osgi.example.service.implementation_1.0.0.qualifier
 [13]
 > ]
 > !STACK 0
 > java.lang.ClassNotFoundException:
 osgi.example.service.implementation.ServiceImpl
 > at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal
 (BundleLoader.java:513)
 > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
 (BundleLoader.java:429)
 > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
 (BundleLoader.java:417)
 > at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass
 (DefaultClassLoader.java:107)
 > at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
 > at org.eclipse.osgi.internal.loader.BundleLoader.loadClass
 (BundleLoader.java:345)
 > at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass
 (BundleHost.java:229)
 > at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass
 (AbstractBundle.java:1208)
 > at
 org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance
 (ServiceComponent.java:480)
 > at
 org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance
 (ServiceComponentProp.java:271)
 > at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build
 (ServiceComponentProp.java:332)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent
 (InstanceProcess.java:588)
 > at org.eclipse.equinox.internal.ds.ServiceReg.getService
 (ServiceReg.java:53)
 > at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run
 (ServiceUse.java:141)
 > at java.security.AccessController.doPrivileged(Native Method)
 > at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService
 (ServiceUse.java:139)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService
(ServiceRegistrationImpl.java:468)
 > at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService
 (ServiceRegistry.java:467)
 > at
 org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService
 (BundleContextImpl.java:594)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.getService
 (InstanceProcess.java:686)
 > at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod
 (ComponentReference.java:111)
 > at org.eclipse.equinox.internal.ds.model.ComponentReference.bind
 (ComponentReference.java:322)
 > at
 org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference
 (ServiceComponentProp.java:441)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind
 (InstanceProcess.java:415)
 > at org.eclipse.equinox.internal.ds.Resolver.getEligible
 (Resolver.java:319)
 > at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged
 (SCRManager.java:221)
 > at
 org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged
(FilteredServiceListener.java:104)
 > at
 org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent
 (BundleContextImpl.java:861)
 > at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent
 (EventManager.java:230)
 > at
 org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous
(ListenerQueue.java:148)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged
(ServiceRegistry.java:819)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent
(ServiceRegistry.java:771)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register
(ServiceRegistrationImpl.java:130)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService
 (ServiceRegistry.java:214)
 > at
 org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService
(BundleContextImpl.java:433)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.registerService
 (InstanceProcess.java:504)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents
 (InstanceProcess.java:259)
 > at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied
 (Resolver.java:441)
 > at org.eclipse.equinox.internal.ds.Resolver.enableComponents
 (Resolver.java:213)
 > at org.eclipse.equinox.internal.ds.SCRManager.performWork
 (SCRManager.java:800)
 > at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch
 (SCRManager.java:767)
 > at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
 > at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run
 (Executor.java:70)
 >
 > !ENTRY org.eclipse.osgi 4 0 2012-02-06 21:03:11.220
 > !MESSAGE An unexpected runtime error has occurred.
 > !STACK 0
 > org.osgi.service.component.ComponentException: Exception occurred while
 creating new instance of component Component[
 > name = osgi.example.service.implementation
 > activate = activate
 > deactivate = deactivate
 > modified =
 > configuration-policy = optional
 > factory = null
 > autoenable = true
 > immediate = false
 > implementation = osgi.example.service.implementation.ServiceImpl
 > state = Unsatisfied
 > properties =
 > serviceFactory = false
 > serviceInterface = [osgi.example.service_interface.Service]
 > references = null
 > located in bundle = osgi.example.service.implementation_1.0.0.qualifier
 [13]
 > ]
 > at
 org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance
 (ServiceComponent.java:482)
 > at
 org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance
 (ServiceComponentProp.java:271)
 > at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build
 (ServiceComponentProp.java:332)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent
 (InstanceProcess.java:588)
 > at org.eclipse.equinox.internal.ds.ServiceReg.getService
 (ServiceReg.java:53)
 > at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run
 (ServiceUse.java:141)
 > at java.security.AccessController.doPrivileged(Native Method)
 > at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService
 (ServiceUse.java:139)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService
(ServiceRegistrationImpl.java:468)
 > at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService
 (ServiceRegistry.java:467)
 > at
 org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService
 (BundleContextImpl.java:594)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.getService
 (InstanceProcess.java:686)
 > at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod
 (ComponentReference.java:111)
 > at org.eclipse.equinox.internal.ds.model.ComponentReference.bind
 (ComponentReference.java:322)
 > at
 org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference
 (ServiceComponentProp.java:441)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind
 (InstanceProcess.java:415)
 > at org.eclipse.equinox.internal.ds.Resolver.getEligible
 (Resolver.java:319)
 > at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged
 (SCRManager.java:221)
 > at
 org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged
(FilteredServiceListener.java:104)
 > at
 org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent
 (BundleContextImpl.java:861)
 > at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent
 (EventManager.java:230)
 > at
 org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous
(ListenerQueue.java:148)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged
(ServiceRegistry.java:819)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent
(ServiceRegistry.java:771)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register
(ServiceRegistrationImpl.java:130)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService
 (ServiceRegistry.java:214)
 > at
 org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService
(BundleContextImpl.java:433)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.registerService
 (InstanceProcess.java:504)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents
 (InstanceProcess.java:259)
 > at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied
 (Resolver.java:441)
 > at org.eclipse.equinox.internal.ds.Resolver.enableComponents
 (Resolver.java:213)
 > at org.eclipse.equinox.internal.ds.SCRManager.performWork
 (SCRManager.java:800)
 > at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch
 (SCRManager.java:767)
 > at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
 > at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run
 (Executor.java:70)
 > Caused by: java.lang.ClassNotFoundException:
 osgi.example.service.implementation.ServiceImpl
 > at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal
 (BundleLoader.java:513)
 > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
 (BundleLoader.java:429)
 > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
 (BundleLoader.java:417)
 > at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass
 (DefaultClassLoader.java:107)
 > at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
 > at org.eclipse.osgi.internal.loader.BundleLoader.loadClass
 (BundleLoader.java:345)
 > at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass
 (BundleHost.java:229)
 > at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass
 (AbstractBundle.java:1208)
 > at
 org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance
 (ServiceComponent.java:480)
 > ... 34 more
 >
 > !ENTRY osgi.example.service.implementation 4 0 2012-02-06 21:03:11.223
 > !MESSAGE FrameworkEvent ERROR
 > !STACK 0
 > org.osgi.framework.ServiceException: Exception in
 org.eclipse.equinox.internal.ds.ServiceReg.getService()
 > at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService
 (ServiceUse.java:151)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService
(ServiceRegistrationImpl.java:468)
 > at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService
 (ServiceRegistry.java:467)
 > at
 org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService
 (BundleContextImpl.java:594)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.getService
 (InstanceProcess.java:686)
 > at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod
 (ComponentReference.java:111)
 > at org.eclipse.equinox.internal.ds.model.ComponentReference.bind
 (ComponentReference.java:322)
 > at
 org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference
 (ServiceComponentProp.java:441)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind
 (InstanceProcess.java:415)
 > at org.eclipse.equinox.internal.ds.Resolver.getEligible
 (Resolver.java:319)
 > at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged
 (SCRManager.java:221)
 > at
 org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged
(FilteredServiceListener.java:104)
 > at
 org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent
 (BundleContextImpl.java:861)
 > at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent
 (EventManager.java:230)
 > at
 org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous
(ListenerQueue.java:148)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged
(ServiceRegistry.java:819)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent
(ServiceRegistry.java:771)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register
(ServiceRegistrationImpl.java:130)
 > at
 org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService
 (ServiceRegistry.java:214)
 > at
 org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService
(BundleContextImpl.java:433)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.registerService
 (InstanceProcess.java:504)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents
 (InstanceProcess.java:259)
 > at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied
 (Resolver.java:441)
 > at org.eclipse.equinox.internal.ds.Resolver.enableComponents
 (Resolver.java:213)
 > at org.eclipse.equinox.internal.ds.SCRManager.performWork
 (SCRManager.java:800)
 > at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch
 (SCRManager.java:767)
 > at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
 > at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run
 (Executor.java:70)
 > Caused by: org.osgi.service.component.ComponentException: Exception
 occurred while creating new instance of component Component[
 > name = osgi.example.service.implementation
 > activate = activate
 > deactivate = deactivate
 > modified =
 > configuration-policy = optional
 > factory = null
 > autoenable = true
 > immediate = false
 > implementation = osgi.example.service.implementation.ServiceImpl
 > state = Unsatisfied
 > properties =
 > serviceFactory = false
 > serviceInterface = [osgi.example.service_interface.Service]
 > references = null
 > located in bundle = osgi.example.service.implementation_1.0.0.qualifier
 [13]
 > ]
 > at
 org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance
 (ServiceComponent.java:482)
 > at
 org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance
 (ServiceComponentProp.java:271)
 > at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build
 (ServiceComponentProp.java:332)
 > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent
 (InstanceProcess.java:588)
 > at org.eclipse.equinox.internal.ds.ServiceReg.getService
 (ServiceReg.java:53)
 > at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run
 (ServiceUse.java:141)
 > at java.security.AccessController.doPrivileged(Native Method)
 > at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService
 (ServiceUse.java:139)
 > ... 27 more
 > Caused by: java.lang.ClassNotFoundException:
 osgi.example.service.implementation.ServiceImpl
 > at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal
 (BundleLoader.java:513)
 > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
 (BundleLoader.java:429)
 > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
 (BundleLoader.java:417)
 > at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass
 (DefaultClassLoader.java:107)
 > at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
 > at org.eclipse.osgi.internal.loader.BundleLoader.loadClass
 (BundleLoader.java:345)
 > at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass
 (BundleHost.java:229)
 > at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass
 (AbstractBundle.java:1208)
 > at
 org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance
 (ServiceComponent.java:480)
 > ... 34 more
 >
 > !ENTRY osgi.example.service.consumer 2 0 2012-02-06 21:03:11.228
 > !MESSAGE [SCR] Could not get the service object relevant to the
 reference. One possible reason is a circularity problem. Another possible
 reason is that BundleContext.getService() returns null.
 > Details:
 > Problematic reference = Reference[name = Service, interface =
 osgi.example.service_interface.Service, policy = dynamic, cardinality =
 0..n, target = null, bind = setService, unbind = unsetService]
 > of service component = osgi.example.service.consumer
 > component implementation class =
 osgi.example.service.consumer.ServiceConsumer
 > located in bundle with symbolic name = osgi.example.service.consumer
 > bundle location = initial <at> reference:
 file:../../../../osgi.example.service.consumer/
 >
 > !ENTRY osgi.example.service.consumer 2 0 2012-02-06 21:03:11.229
 > !MESSAGE [SCR] ComponentReference.bind(): bind method 'setService' is
 not found or it is not accessible!
 > Details:
 > Problematic reference = Reference[name = Service, interface =
 osgi.example.service_interface.Service, policy = dynamic, cardinality =
 0..n, target = null, bind = setService, unbind = unsetService]
 > of service component = osgi.example.service.consumer
 > component implementation class =
 osgi.example.service.consumer.ServiceConsumer
 > located in bundle with symbolic name = osgi.example.service.consumer
 > bundle location = initial <at> reference:
 file:../../../../osgi.example.service.consumer/
 _______________________________________________
 > equinox-dev mailing list
 > equinox-dev-j9T/66MeVpFAfugRpC6u6w@public.gmane.org
 > https://dev.eclipse.org/mailman/listinfo/equinox-dev

 _______________________________________________
 equinox-dev mailing list
 equinox-dev-j9T/66MeVpFAfugRpC6u6w@public.gmane.org
 https://dev.eclipse.org/mailman/listinfo/equinox-dev
_______________________________________________
equinox-dev mailing list
equinox-dev-j9T/66MeVpFAfugRpC6u6w@public.gmane.org
https://dev.eclipse.org/mailman/listinfo/equinox-dev



_______________________________________________
equinox-dev mailing list
equinox-dev-j9T/66MeVpFAfugRpC6u6w@public.gmane.org
https://dev.eclipse.org/mailman/listinfo/equinox-dev

Paul Webster | 9 Feb 13:20
Picon
Picon
Favicon

Re: Service component deployment fails into a running Equinox application

On Thu, Feb 9, 2012 at 4:27 AM, Csaba Szucs <csaba.szucs <at> gmail.com> wrote:

So it does not work like this:
osgi>install file:/home/csaba/eclipse_distros/Indigo/workspace/osgi.example.service.implementation

But it does work like this
osgi>install file:/home/csaba/tmp/plugins/osgi.example.service.implementation_1.0.0_20120209.jar


If you do want to deploy it from your workspace, the hack sometimes used is to add the Bundle-ClassPath: .,bin

Just have to remember to take it out when done :-)

Later,
PW


--
Paul Webster
Hi floor.  Make me a sammich! - GIR
Csaba Szucs | 9 Feb 14:43
Picon

Re: Service component deployment fails into a running Equinox application

Hello Paul,

Thanks a lot for the useful info! Now installing & starting my workspace bundles also works.
Unfortunately I don't have too much experiences with OSGi and Equinox yet...

Btw: isn't there a common method that works for both cases (both with deployed JAR bundles and workspace/exploded bundles)?
So it would be good to have a common way usable in development and productive context, too.

Regards,
 Csaba

2012/2/9 Paul Webster <pwebster-cmaem7PIVQT44Nm34jS7GywD8/FfD2ys@public.gmane.org>
On Thu, Feb 9, 2012 at 4:27 AM, Csaba Szucs <csaba.szucs-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:

So it does not work like this:
osgi>install file:/home/csaba/eclipse_distros/Indigo/workspace/osgi.example.service.implementation

But it does work like this
osgi>install file:/home/csaba/tmp/plugins/osgi.example.service.implementation_1.0.0_20120209.jar


If you do want to deploy it from your workspace, the hack sometimes used is to add the Bundle-ClassPath: .,bin

Just have to remember to take it out when done :-)

Later,
PW


--
Paul Webster
Hi floor.  Make me a sammich! - GIR

_______________________________________________
equinox-dev mailing list
equinox-dev-j9T/66MeVpFAfugRpC6u6w@public.gmane.org
https://dev.eclipse.org/mailman/listinfo/equinox-dev


Thomas Watson | 9 Feb 14:51
Picon
Favicon

Re: Service component deployment fails into a running Equinox application

OK, this is not a bug.

I assume you are launching equinox outside of the IDE and then attempting
to install project folders from one of your workspaces into the framework.
When equinox is launched from the IDE (PDE) then extra options are passed
to equinox to inform it about development class paths of each project in
your workspace.  You could try to use the -dev option or set the osgi.dev
configuration property depending on how you launch equinox (i.e.
osgi.dev=bin would add bin to the class path of every bundle, or you can
use a URL to point to a properties file that contains symbolic name keys
and class path values for each bundle you want to install from your
workspace).

Tom

|------------>
| From:      |
|------------>
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
  |Csaba Szucs <csaba.szucs@...>                                                                                                               |
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| To:        |
|------------>
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
  |Equinox development mailing list <equinox-dev@...>,                                                                                       |
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Date:      |
|------------>
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
  |02/09/2012 03:29 AM                                                                                                                               |
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Subject:   |
|------------>
  >--------------------------------------------------------------------------------------------------------------------------------------------------|
  |Re: [equinox-dev] Service component deployment fails into a running Equinox application                                                           |
  >--------------------------------------------------------------------------------------------------------------------------------------------------|

Hello Guys,

Sorry, it was my mistake.

I realized that I did install the service provider plugin as a workspace
plugin (including the bin folder) and not as a jar file. If I install and
start the service provider as a plugin JAR file, everything is ok.

So it does not work like this:
osgi>install
file:/home/csaba/eclipse_distros/Indigo/workspace/osgi.example.service.implementation

But it does work like this
osgi>install
file:/home/csaba/tmp/plugins/osgi.example.service.implementation_1.0.0_20120209.jar

So I think, this is not a bug...

Thanks, anyway!
Csaba

2012/2/8 Thomas Watson <tjwatson@...>
  I would open a bug against Equinox->Compendium (at
  https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Equinox).  This
  sounds
  like a bug and it would be helpful if you could provide your testcase
  attached to the bug.

  Thanks.

  Tom

  |------------>
  | From:      |
  |------------>

  >--------------------------------------------------------------------------------------------------------------------------------------------------|

   |Csaba Szucs <csaba.szucs@...>
  |

  >--------------------------------------------------------------------------------------------------------------------------------------------------|

  |------------>
  | To:        |
  |------------>

  >--------------------------------------------------------------------------------------------------------------------------------------------------|

   |Equinox development mailing list <equinox-dev@...>,
  |

  >--------------------------------------------------------------------------------------------------------------------------------------------------|

  |------------>
  | Date:      |
  |------------>

  >--------------------------------------------------------------------------------------------------------------------------------------------------|

   |02/08/2012 05:28 AM
  |

  >--------------------------------------------------------------------------------------------------------------------------------------------------|

  |------------>
  | Subject:   |
  |------------>

  >--------------------------------------------------------------------------------------------------------------------------------------------------|

   |Re: [equinox-dev] Service component deployment fails into a running
  Equinox application
  |

  >--------------------------------------------------------------------------------------------------------------------------------------------------|

  Hello,

  No, I do not, but I also tried it with that without any success. Nor do I
  with the 'refresh' Equinox console command. I always get the same
  exception
  stack...

  Actually what I try to do is to provide a proof-of-concept Equinox
  application that is dynamically/at-runtime extendable (through service
  provider components) without the need to stop/restart the base
  application.
  But it's really strange that I don't have any problem with my bundles in
  Apache Felix and SCR.

  Perhaps do you know some other working solution for the requirement?

  Many thanks, Csaba.

  2012/2/8 Alex Blewitt <alex.blewitt@...>
   Do you have an optional import for the package name?

   If you do, and that bundle starts first, then it won't be wired to the
   package. If you start up the bundle containing the package first, then
   start up the provider, it will resolve the list of optional imports.
  Once
   started, even if an optional package is added later it's not added to
  the
   existing running bundle's package list. If you do a 'refresh' on the
   service provider, does the problem go away?

   Alex

   On 8 Feb 2012, at 09:38, Csaba Szucs wrote:

   > Hello Guys,
   >
   > I have an Equinox OSGi application using Declarative Services with 3
   plugins:
   > -a service interface plugin
   > -a service provider component
   > -a service consumer component (cardinality: 0..n, policy: dynamic)
   >
   > Framework is launched.
   > id    State Bundle
   > 0     ACTIVE org.eclipse.osgi_3.8.0.v20110908-1857
   > 3     ACTIVE osgi.example.service.consumer_1.0.0.qualifier
   > 4     ACTIVE org.eclipse.osgi.services_3.3.0.v20110711-1243
   > 5     ACTIVE org.eclipse.equinox.util_1.0.300.v20110502
   > 6     ACTIVE org.eclipse.equinox.ds_1.3.100.v20110705
   > 10    ACTIVE osgi.example.service_interface_1.0.0.qualifier
   > 11    ACTIVE osgi.example.service.implementation_1.0.0.qualifier
   >
   > In case the application is launched, the service consumer is
  triggered.
   >
   > But in case the service provider is installed and started only after
   the application has launched, SCR fails to load service implementation
   class. See exception stack below!
   >
   > What is the problem with this runtime/post-application deployment of
   the service component?
   >
   > Please note:
   > With Apache Felix and SCR, there is no problem with the runtime
   deployment at all.
   >
   > Many thanks, Csaba.
   >
   > Framework is launched.
   > id    State Bundle
   > 0     ACTIVE org.eclipse.osgi_3.8.0.v20110908-1857
   > 3     ACTIVE osgi.example.service.consumer_1.0.0.qualifier
   > 4     ACTIVE org.eclipse.osgi.services_3.3.0.v20110711-1243
   > 5     ACTIVE org.eclipse.equinox.util_1.0.300.v20110502
   > 6     ACTIVE org.eclipse.equinox.ds_1.3.100.v20110705
   > 10    ACTIVE osgi.example.service_interface_1.0.0.qualifier
   >
   > osgi> install

  file:/home/csaba/eclipse_distros/Indigo/workspace/osgi.example.service.implementation

   > Bundle id is 11.
   >
   > id    State Bundle
   > 11    INSTALLED osgi.example.service.implementation_1.0.0.qualifier
   >
   > osgi> start 11
   >
   > Here SCR throws an exception:
   >
   >
   > !SESSION 2012-02-06 21:01:12.378
   -----------------------------------------------
   > eclipse.buildId=unknown
   > java.version=1.6.0_20
   > java.vendor=Sun Microsystems Inc.
   > BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=en_US
   > Command-line arguments: -dev

  file:/home/csaba/eclipse_distros/Indigo/workspace/.metadata/.plugins/org.eclipse.pde.core/New_configuration

   (1)/dev.properties -os linux -ws gtk -arch x86 -consoleLog -console
   -consolelog
   >
   > !ENTRY org.eclipse.equinox.ds 4 0 2012-02-06 21:03:11.214
   > !MESSAGE Exception occurred while creating new instance of component
   Component[
   > name = osgi.example.service.implementation
   > activate = activate
   > deactivate = deactivate
   > modified =
   > configuration-policy = optional
   > factory = null
   > autoenable = true
   > immediate = false
   > implementation = osgi.example.service.implementation.ServiceImpl
   > state = Unsatisfied
   > properties =
   > serviceFactory = false
   > serviceInterface = [osgi.example.service_interface.Service]
   > references = null
   > located in bundle =
  osgi.example.service.implementation_1.0.0.qualifier
   [13]
   > ]
   > !STACK 0
   > java.lang.ClassNotFoundException:
   osgi.example.service.implementation.ServiceImpl
   > at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal
   (BundleLoader.java:513)
   > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
   (BundleLoader.java:429)
   > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
   (BundleLoader.java:417)
   > at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass
   (DefaultClassLoader.java:107)
   > at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
   > at org.eclipse.osgi.internal.loader.BundleLoader.loadClass
   (BundleLoader.java:345)
   > at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass
   (BundleHost.java:229)
   > at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass
   (AbstractBundle.java:1208)
   > at
   org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance
   (ServiceComponent.java:480)
   > at

  org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance
   (ServiceComponentProp.java:271)
   > at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build
   (ServiceComponentProp.java:332)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent
   (InstanceProcess.java:588)
   > at org.eclipse.equinox.internal.ds.ServiceReg.getService
   (ServiceReg.java:53)
   > at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run
   (ServiceUse.java:141)
   > at java.security.AccessController.doPrivileged(Native Method)
   > at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService
   (ServiceUse.java:139)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService

  (ServiceRegistrationImpl.java:468)
   > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService
   (ServiceRegistry.java:467)
   > at
   org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService
   (BundleContextImpl.java:594)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.getService
   (InstanceProcess.java:686)
   > at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod
   (ComponentReference.java:111)
   > at org.eclipse.equinox.internal.ds.model.ComponentReference.bind
   (ComponentReference.java:322)
   > at
   org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference
   (ServiceComponentProp.java:441)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind
   (InstanceProcess.java:415)
   > at org.eclipse.equinox.internal.ds.Resolver.getEligible
   (Resolver.java:319)
   > at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged
   (SCRManager.java:221)
   > at

  org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged

  (FilteredServiceListener.java:104)
   > at
   org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent
   (BundleContextImpl.java:861)
   > at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent
   (EventManager.java:230)
   > at

  org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous

  (ListenerQueue.java:148)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged

  (ServiceRegistry.java:819)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent

  (ServiceRegistry.java:771)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register

  (ServiceRegistrationImpl.java:130)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService
   (ServiceRegistry.java:214)
   > at

  org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService

  (BundleContextImpl.java:433)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.registerService
   (InstanceProcess.java:504)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents
   (InstanceProcess.java:259)
   > at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied
   (Resolver.java:441)
   > at org.eclipse.equinox.internal.ds.Resolver.enableComponents
   (Resolver.java:213)
   > at org.eclipse.equinox.internal.ds.SCRManager.performWork
   (SCRManager.java:800)
   > at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch
   (SCRManager.java:767)
   > at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
   > at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run
   (Executor.java:70)
   >
   > !ENTRY org.eclipse.equinox.ds 4 0 2012-02-06 21:03:11.216
   > !MESSAGE Exception occurred while creating new instance of component
   Component[
   > name = osgi.example.service.implementation
   > activate = activate
   > deactivate = deactivate
   > modified =
   > configuration-policy = optional
   > factory = null
   > autoenable = true
   > immediate = false
   > implementation = osgi.example.service.implementation.ServiceImpl
   > state = Unsatisfied
   > properties =
   > serviceFactory = false
   > serviceInterface = [osgi.example.service_interface.Service]
   > references = null
   > located in bundle =
  osgi.example.service.implementation_1.0.0.qualifier
   [13]
   > ]
   > !STACK 0
   > java.lang.ClassNotFoundException:
   osgi.example.service.implementation.ServiceImpl
   > at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal
   (BundleLoader.java:513)
   > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
   (BundleLoader.java:429)
   > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
   (BundleLoader.java:417)
   > at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass
   (DefaultClassLoader.java:107)
   > at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
   > at org.eclipse.osgi.internal.loader.BundleLoader.loadClass
   (BundleLoader.java:345)
   > at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass
   (BundleHost.java:229)
   > at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass
   (AbstractBundle.java:1208)
   > at
   org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance
   (ServiceComponent.java:480)
   > at

  org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance
   (ServiceComponentProp.java:271)
   > at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build
   (ServiceComponentProp.java:332)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent
   (InstanceProcess.java:588)
   > at org.eclipse.equinox.internal.ds.ServiceReg.getService
   (ServiceReg.java:53)
   > at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run
   (ServiceUse.java:141)
   > at java.security.AccessController.doPrivileged(Native Method)
   > at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService
   (ServiceUse.java:139)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService

  (ServiceRegistrationImpl.java:468)
   > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService
   (ServiceRegistry.java:467)
   > at
   org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService
   (BundleContextImpl.java:594)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.getService
   (InstanceProcess.java:686)
   > at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod
   (ComponentReference.java:111)
   > at org.eclipse.equinox.internal.ds.model.ComponentReference.bind
   (ComponentReference.java:322)
   > at
   org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference
   (ServiceComponentProp.java:441)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind
   (InstanceProcess.java:415)
   > at org.eclipse.equinox.internal.ds.Resolver.getEligible
   (Resolver.java:319)
   > at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged
   (SCRManager.java:221)
   > at

  org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged

  (FilteredServiceListener.java:104)
   > at
   org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent
   (BundleContextImpl.java:861)
   > at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent
   (EventManager.java:230)
   > at

  org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous

  (ListenerQueue.java:148)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged

  (ServiceRegistry.java:819)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent

  (ServiceRegistry.java:771)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register

  (ServiceRegistrationImpl.java:130)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService
   (ServiceRegistry.java:214)
   > at

  org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService

  (BundleContextImpl.java:433)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.registerService
   (InstanceProcess.java:504)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents
   (InstanceProcess.java:259)
   > at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied
   (Resolver.java:441)
   > at org.eclipse.equinox.internal.ds.Resolver.enableComponents
   (Resolver.java:213)
   > at org.eclipse.equinox.internal.ds.SCRManager.performWork
   (SCRManager.java:800)
   > at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch
   (SCRManager.java:767)
   > at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
   > at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run
   (Executor.java:70)
   >
   > !ENTRY org.eclipse.osgi 4 0 2012-02-06 21:03:11.220
   > !MESSAGE An unexpected runtime error has occurred.
   > !STACK 0
   > org.osgi.service.component.ComponentException: Exception occurred
  while
   creating new instance of component Component[
   > name = osgi.example.service.implementation
   > activate = activate
   > deactivate = deactivate
   > modified =
   > configuration-policy = optional
   > factory = null
   > autoenable = true
   > immediate = false
   > implementation = osgi.example.service.implementation.ServiceImpl
   > state = Unsatisfied
   > properties =
   > serviceFactory = false
   > serviceInterface = [osgi.example.service_interface.Service]
   > references = null
   > located in bundle =
  osgi.example.service.implementation_1.0.0.qualifier
   [13]
   > ]
   > at
   org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance
   (ServiceComponent.java:482)
   > at

  org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance
   (ServiceComponentProp.java:271)
   > at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build
   (ServiceComponentProp.java:332)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent
   (InstanceProcess.java:588)
   > at org.eclipse.equinox.internal.ds.ServiceReg.getService
   (ServiceReg.java:53)
   > at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run
   (ServiceUse.java:141)
   > at java.security.AccessController.doPrivileged(Native Method)
   > at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService
   (ServiceUse.java:139)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService

  (ServiceRegistrationImpl.java:468)
   > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService
   (ServiceRegistry.java:467)
   > at
   org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService
   (BundleContextImpl.java:594)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.getService
   (InstanceProcess.java:686)
   > at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod
   (ComponentReference.java:111)
   > at org.eclipse.equinox.internal.ds.model.ComponentReference.bind
   (ComponentReference.java:322)
   > at
   org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference
   (ServiceComponentProp.java:441)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind
   (InstanceProcess.java:415)
   > at org.eclipse.equinox.internal.ds.Resolver.getEligible
   (Resolver.java:319)
   > at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged
   (SCRManager.java:221)
   > at

  org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged

  (FilteredServiceListener.java:104)
   > at
   org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent
   (BundleContextImpl.java:861)
   > at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent
   (EventManager.java:230)
   > at

  org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous

  (ListenerQueue.java:148)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged

  (ServiceRegistry.java:819)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent

  (ServiceRegistry.java:771)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register

  (ServiceRegistrationImpl.java:130)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService
   (ServiceRegistry.java:214)
   > at

  org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService

  (BundleContextImpl.java:433)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.registerService
   (InstanceProcess.java:504)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents
   (InstanceProcess.java:259)
   > at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied
   (Resolver.java:441)
   > at org.eclipse.equinox.internal.ds.Resolver.enableComponents
   (Resolver.java:213)
   > at org.eclipse.equinox.internal.ds.SCRManager.performWork
   (SCRManager.java:800)
   > at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch
   (SCRManager.java:767)
   > at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
   > at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run
   (Executor.java:70)
   > Caused by: java.lang.ClassNotFoundException:
   osgi.example.service.implementation.ServiceImpl
   > at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal
   (BundleLoader.java:513)
   > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
   (BundleLoader.java:429)
   > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
   (BundleLoader.java:417)
   > at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass
   (DefaultClassLoader.java:107)
   > at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
   > at org.eclipse.osgi.internal.loader.BundleLoader.loadClass
   (BundleLoader.java:345)
   > at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass
   (BundleHost.java:229)
   > at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass
   (AbstractBundle.java:1208)
   > at
   org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance
   (ServiceComponent.java:480)
   > ... 34 more
   >
   > !ENTRY osgi.example.service.implementation 4 0 2012-02-06 21:03:11.223
   > !MESSAGE FrameworkEvent ERROR
   > !STACK 0
   > org.osgi.framework.ServiceException: Exception in
   org.eclipse.equinox.internal.ds.ServiceReg.getService()
   > at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService
   (ServiceUse.java:151)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService

  (ServiceRegistrationImpl.java:468)
   > at
  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService
   (ServiceRegistry.java:467)
   > at
   org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService
   (BundleContextImpl.java:594)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.getService
   (InstanceProcess.java:686)
   > at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod
   (ComponentReference.java:111)
   > at org.eclipse.equinox.internal.ds.model.ComponentReference.bind
   (ComponentReference.java:322)
   > at
   org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference
   (ServiceComponentProp.java:441)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind
   (InstanceProcess.java:415)
   > at org.eclipse.equinox.internal.ds.Resolver.getEligible
   (Resolver.java:319)
   > at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged
   (SCRManager.java:221)
   > at

  org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged

  (FilteredServiceListener.java:104)
   > at
   org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent
   (BundleContextImpl.java:861)
   > at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent
   (EventManager.java:230)
   > at

  org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous

  (ListenerQueue.java:148)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged

  (ServiceRegistry.java:819)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent

  (ServiceRegistry.java:771)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register

  (ServiceRegistrationImpl.java:130)
   > at

  org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService
   (ServiceRegistry.java:214)
   > at

  org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService

  (BundleContextImpl.java:433)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.registerService
   (InstanceProcess.java:504)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents
   (InstanceProcess.java:259)
   > at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied
   (Resolver.java:441)
   > at org.eclipse.equinox.internal.ds.Resolver.enableComponents
   (Resolver.java:213)
   > at org.eclipse.equinox.internal.ds.SCRManager.performWork
   (SCRManager.java:800)
   > at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch
   (SCRManager.java:767)
   > at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
   > at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run
   (Executor.java:70)
   > Caused by: org.osgi.service.component.ComponentException: Exception
   occurred while creating new instance of component Component[
   > name = osgi.example.service.implementation
   > activate = activate
   > deactivate = deactivate
   > modified =
   > configuration-policy = optional
   > factory = null
   > autoenable = true
   > immediate = false
   > implementation = osgi.example.service.implementation.ServiceImpl
   > state = Unsatisfied
   > properties =
   > serviceFactory = false
   > serviceInterface = [osgi.example.service_interface.Service]
   > references = null
   > located in bundle =
  osgi.example.service.implementation_1.0.0.qualifier
   [13]
   > ]
   > at
   org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance
   (ServiceComponent.java:482)
   > at

  org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance
   (ServiceComponentProp.java:271)
   > at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build
   (ServiceComponentProp.java:332)
   > at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent
   (InstanceProcess.java:588)
   > at org.eclipse.equinox.internal.ds.ServiceReg.getService
   (ServiceReg.java:53)
   > at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run
   (ServiceUse.java:141)
   > at java.security.AccessController.doPrivileged(Native Method)
   > at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService
   (ServiceUse.java:139)
   > ... 27 more
   > Caused by: java.lang.ClassNotFoundException:
   osgi.example.service.implementation.ServiceImpl
   > at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal
   (BundleLoader.java:513)
   > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
   (BundleLoader.java:429)
   > at org.eclipse.osgi.internal.loader.BundleLoader.findClass
   (BundleLoader.java:417)
   > at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass
   (DefaultClassLoader.java:107)
   > at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
   > at org.eclipse.osgi.internal.loader.BundleLoader.loadClass
   (BundleLoader.java:345)
   > at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass
   (BundleHost.java:229)
   > at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass
   (AbstractBundle.java:1208)
   > at
   org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance
   (ServiceComponent.java:480)
   > ... 34 more
   >
   > !ENTRY osgi.example.service.consumer 2 0 2012-02-06 21:03:11.228
   > !MESSAGE [SCR] Could not get the service object relevant to the
   reference. One possible reason is a circularity problem. Another
  possible
   reason is that BundleContext.getService() returns null.
   > Details:
   > Problematic reference = Reference[name = Service, interface =
   osgi.example.service_interface.Service, policy = dynamic, cardinality =
   0..n, target = null, bind = setService, unbind = unsetService]
   > of service component = osgi.example.service.consumer
   > component implementation class =
   osgi.example.service.consumer.ServiceConsumer
   > located in bundle with symbolic name = osgi.example.service.consumer
   > bundle location = initial <at> reference:
   file:../../../../osgi.example.service.consumer/
   >
   > !ENTRY osgi.example.service.consumer 2 0 2012-02-06 21:03:11.229
   > !MESSAGE [SCR] ComponentReference.bind(): bind method 'setService' is
   not found or it is not accessible!
   > Details:
   > Problematic reference = Reference[name = Service, interface =
   osgi.example.service_interface.Service, policy = dynamic, cardinality =
   0..n, target = null, bind = setService, unbind = unsetService]
   > of service component = osgi.example.service.consumer
   > component implementation class =
   osgi.example.service.consumer.ServiceConsumer
   > located in bundle with symbolic name = osgi.example.service.consumer
   > bundle location = initial <at> reference:
   file:../../../../osgi.example.service.consumer/
   _______________________________________________
   > equinox-dev mailing list
   > equinox-dev@...
   > https://dev.eclipse.org/mailman/listinfo/equinox-dev

   _______________________________________________
   equinox-dev mailing list
   equinox-dev@...
   https://dev.eclipse.org/mailman/listinfo/equinox-dev
  _______________________________________________
  equinox-dev mailing list
  equinox-dev@...
  https://dev.eclipse.org/mailman/listinfo/equinox-dev

  _______________________________________________
  equinox-dev mailing list
  equinox-dev@...
  https://dev.eclipse.org/mailman/listinfo/equinox-dev
_______________________________________________
equinox-dev mailing list
equinox-dev@...
https://dev.eclipse.org/mailman/listinfo/equinox-dev


Gmane