Hello, I noticed problem/bug with stopping bundle org.drools.api (knowledge-api). Problem occurs when OSGi framework stops this bundle. Method org.drools.osgi.api.Activator.stop() firstly invokes this.serviceRegistry.unregister() and then this.registryTracker.close(). Unfortunately DroolsServiceTracker uses reference to service which has been unregistered. I think this problem can be fixed by moving this.serviceRegistry.unregister(); to end of org.drools.osgi.api.Activator.stop() method, after code which stops service trackers. Then service will be still registered during service trackers closing. Maybe would be worth to create JIRA issue and fix it in next version. Drools version: 5.4.0.Final Equinox version: 3.7.0 stacktrace from OSGi console: unregistering : org.drools.io.impl.ResourceFactoryServiceImpl@1d686c1 : interface org.drools.io.ResourceFactoryService org.osgi.framework.BundleException: Exception in org.drools.osgi.api.Activator.stop() of bundle org.drools.api. at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:791) at org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:510) at org.eclipse.osgi.framework.internal.core.AbstractBundle.stop(AbstractBundle.java:464) at org.eclipse.osgi.framework.internal.core.AbstractBundle.stop(AbstractBundle.java:456) at org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._stop(FrameworkCommandProvider.java:361) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter.execute(FrameworkCommandInterpreter.java:209) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(FrameworkConsole.java:155) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.runConsole(FrameworkConsole.java:140) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:104) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.IllegalStateException: The service has been unregistered at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getReferenceImpl(ServiceRegistrationImpl.java:277) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getReference(ServiceRegistrationImpl.java:266) at org.drools.osgi.api.Activator$DroolsServiceTracker.removedService(Activator.java:115) at org.osgi.util.tracker.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1006) at org.osgi.util.tracker.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1) at org.osgi.util.tracker.AbstractTracked.untrack(AbstractTracked.java:352) at org.osgi.util.tracker.ServiceTracker.close(ServiceTracker.java:412) at org.drools.osgi.api.Activator.stop(Activator.java:67) at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:771) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:764) ... 13 more Nested Exception: java.lang.IllegalStateException: The service has been unregistered at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getReferenceImpl(ServiceRegistrationImpl.java:277) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getReference(ServiceRegistrationImpl.java:266) at org.drools.osgi.api.Activator$DroolsServiceTracker.removedService(Activator.java:115) at org.osgi.util.tracker.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1006) at org.osgi.util.tracker.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1) at org.osgi.util.tracker.AbstractTracked.untrack(AbstractTracked.java:352) at org.osgi.util.tracker.ServiceTracker.close(ServiceTracker.java:412) at org.drools.osgi.api.Activator.stop(Activator.java:67) at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:771) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:764) at org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:510) at org.eclipse.osgi.framework.internal.core.AbstractBundle.stop(AbstractBundle.java:464) at org.eclipse.osgi.framework.internal.core.AbstractBundle.stop(AbstractBundle.java:456) at org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._stop(FrameworkCommandProvider.java:361) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter.execute(FrameworkCommandInterpreter.java:209) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(FrameworkConsole.java:155) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.runConsole(FrameworkConsole.java:140) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:104) at java.lang.Thread.run(Thread.java:662) Nested Exception: java.lang.IllegalStateException: The service has been unregistered at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getReferenceImpl(ServiceRegistrationImpl.java:277) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getReference(ServiceRegistrationImpl.java:266) at org.drools.osgi.api.Activator$DroolsServiceTracker.removedService(Activator.java:115) at org.osgi.util.tracker.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1006) at org.osgi.util.tracker.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1) at org.osgi.util.tracker.AbstractTracked.untrack(AbstractTracked.java:352) at org.osgi.util.tracker.ServiceTracker.close(ServiceTracker.java:412) at org.drools.osgi.api.Activator.stop(Activator.java:67) at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:771) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:764) at org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:510) at org.eclipse.osgi.framework.internal.core.AbstractBundle.stop(AbstractBundle.java:464) at org.eclipse.osgi.framework.internal.core.AbstractBundle.stop(AbstractBundle.java:456) at org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._stop(FrameworkCommandProvider.java:361) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter.execute(FrameworkCommandInterpreter.java:209) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(FrameworkConsole.java:155) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.runConsole(FrameworkConsole.java:140) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:104) at java.lang.Thread.run(Thread.java:662)

View this message in context: org.drools.osgi.api.Activator.stop() - java.lang.IllegalStateException: The service has been unregistered
Sent from the Drools: User forum mailing list archive at Nabble.com.