One way this could happen is if the activate methods on the testThread components threw exceptions. You might try making the activate/deactivate methods empty to check. If you’ve set up logging for DS (including the framework or config property ds.loglevel=debug) the logs will show in excruciating detail what is happening.
hope this helps, if it’s not exceptions please supply debug logs and i will take a look. david jencks > On Feb 17, 2017, at 12:36 PM, Thomas Driessen <thomas.driessen...@gmail.com> > wrote: > > After asking in the osgi-dev list in was adviced to try ist at the Felix > Mailinglist. > > Dies anyone know why Services that are marked as immediate are not started > although marked as satisfied by felix-scr? ( See E-Mails below dir the Code) > > Kind regards, > Thomas > ---------- Weitergeleitete Nachricht ---------- > Von: "BJ Hargrave" <hargr...@us.ibm.com> > Datum: 17.02.2017 21:09 > Betreff: Re: [osgi-dev] Components are not started,although marked with > immediate=true > An: <thomas.driessen...@gmail.com>, <osgi-...@mail.osgi.org> > Cc: > > Seems like they should all be active. You may need to check with the >> felix-dev list about Felix SCR's handling of this. >> -- >> >> BJ Hargrave >> Senior Technical Staff Member, IBM // office: +1 386 848 1781 >> <(386)%20848-1781> >> OSGi Fellow and CTO of the OSGi Alliance // mobile: +1 386 848 3788 >> <(386)%20848-3788> >> hargr...@us.ibm.com >> >> >> >> ----- Original message ----- >> From: "Thomas Driessen" <thomas.driessen...@gmail.com> >> Sent by: osgi-dev-boun...@mail.osgi.org >> To: osgi-...@mail.osgi.org >> Cc: >> Subject: [osgi-dev] Components are not started, although marked with >> immediate=true >> Date: Fri, Feb 17, 2017 2:46 PM >> >> Hi, >> >> I have a problem with immediate services and hoped that you guys maybe can >> help. >> >> I'm currently trying to implement several services within one bundle (see >> below for code). >> I have set all of them to be immediate (by immediate=true), but still, >> when I start the OSGi container with my bundle in it, only Con1, >> InDataPort1 and OutDataPort1 are active. The rest is satisfied but not >> active according to felix.scr console output: >> >> g! list >> BundleId Component Name Default State >> Component Id State PIDs (Factory PID) >> [ 10] test.Con1 enabled >> [ 0] [active ] >> [ 10] test.InDataPort1 enabled >> [ 1] [active ] >> [ 10] test.OutDataPort1 enabled >> [ 2] [active ] >> [ 10] test.Process1 enabled >> [ 3] [satisfied ] >> [ 10] test.Thread1_1 enabled >> [ 4] [satisfied ] >> [ 10] test.Thread1_2 enabled >> [ 5] [satisfied ] >> >> Am I doing something wrong? >> I assumed that all services should be started as soon as they are >> satisfied. >> >> Any advice is highly appreciated. >> >> Kind regards, >> Thomas >> >> >> @Component(immediate = true, service = IProcess.class, property = >> "de.uniaugsburg.smds.aadl2osgi.component.uid=test.Process1") >> public class Process1 implements IProcess { >> >> @Reference(target = "(uid=test.Thread1_1)") >> private volatile IPeriodicThread thread1; >> >> @Reference(target = "(uid=test.Thread1_2)") >> private volatile IPeriodicThread thread2; >> } >> >> >> @Component(service = IPeriodicThread.class, property = >> "de.uniaugsburg.smds.aadl2osgi.component.uid=test.Thread1_1", immediate = >> true) >> public class Thread1_1 implements IPeriodicThread { >> >> @Reference(target = "(uid=test.OutDataPort1)") >> private volatile IOutDataPort outport; >> >> @Activate >> public void initialize_FW() { >> init(); >> } >> >> @Deactivate >> public void finalize_FW() { >> deinit(); >> } >> } >> >> >> @Component(service = IPeriodicThread.class, property = >> "de.uniaugsburg.smds.aadl2osgi.component.uid=test.Thread1_2", immediate = >> true) >> public class Thread1_2 implements IPeriodicThread { >> >> @Reference(target = "(uid=test.InDataPort1)") >> private volatile IOutDataPort outport; >> >> @Activate >> public void initialize_FW() { >> init(); >> } >> >> @Deactivate >> public void finalize_FW() { >> deinit(); >> } >> } >> >> >> @Component(service = IOutDataPort.class, property = >> "uid=test.OutDataPort1", immediate = true) >> public class OutDataPort1 implements IOutDataPort { >> >> @Reference(target = "(target=test.OutDataPort1)", cardinality = >> ReferenceCardinality.OPTIONAL, policyOption = ReferencePolicyOption.GREEDY) >> private volatile IPortConnection incomingPortConnections; >> >> private volatile Set outgoingPortConnections = new >> ConcurrentSkipListSet(); >> >> @Reference(target = "(source=test.OutDataPort1)", cardinality = >> ReferenceCardinality.OPTIONAL, policyOption = ReferencePolicyOption.GREEDY) >> public void addOutgoingPortConnection(final IPortConnection con) { >> outgoingPortConnections.add(con); >> } >> >> public void removeOutgoingPortConnection(final IPortConnection con) { >> outgoingPortConnections.remove(con); >> } >> } >> >> >> @Component(service = IInDataPort.class, property = "uid=test.InDataPort1", >> immediate = true) >> @SuppressWarnings("all") >> public class InDataPort1 implements IInDataPort { >> >> @Reference(target = "(target=test.InDataPort1)", cardinality = >> ReferenceCardinality.OPTIONAL, policyOption = ReferencePolicyOption.GREEDY) >> private volatile IPortConnection incomingPortConnections; >> >> private volatile Set outgoingPortConnections = new >> ConcurrentSkipListSet(); >> >> @Reference(target = "(source=test.InDataPort1)", cardinality = >> ReferenceCardinality.OPTIONAL, policyOption = ReferencePolicyOption.GREEDY) >> public void addOutgoingPortConnection(final IPortConnection con) { >> outgoingPortConnections.add(con); >> } >> >> public void removeOutgoingPortConnection(final IPortConnection con) { >> outgoingPortConnections.remove(con); >> } >> } >> >> >> @Component(service = IPortConnection.class, property = { >> "source=test.OutDataPort1", "target=test.InDataPort1" }, immediate = true) >> public class Con1 implements IPortConnection { >> @Reference(cardinality = ReferenceCardinality.OPTIONAL, policyOption = >> ReferencePolicyOption.GREEDY, target = "(uid=test.OutDataPort1)") >> private volatile IOutDataPort source; >> >> @Reference(cardinality = ReferenceCardinality.OPTIONAL, policyOption = >> ReferencePolicyOption.GREEDY, target = "(uid=test.InDataPort1)") >> private volatile IInDataPort target; >> } >> _______________________________________________ >> OSGi Developer Mail List >> osgi-...@mail.osgi.org >> https://mail.osgi.org/mailman/listinfo/osgi-dev >> >> >> >> --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@felix.apache.org For additional commands, e-mail: users-h...@felix.apache.org