Are any of the activate or deactivate methods blocking? DS lifecycle methods must not be blocking.
Tim Sent from my iPhone > On 17 Feb 2017, at 20:09, BJ Hargrave <hargr...@us.ibm.com> wrote: > > 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 > OSGi Fellow and CTO of the OSGi Alliance // mobile: +1 386 848 3788 > hargr...@us.ibm.com > > > ----- Original message ----- > From: "Thomas Driessen" <thomas.driessen...@gmail.com> > Sent by: osgi-dev-boun...@mail.osgi.org > To: osgi-dev@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-dev@mail.osgi.org > https://mail.osgi.org/mailman/listinfo/osgi-dev > > > _______________________________________________ > OSGi Developer Mail List > osgi-dev@mail.osgi.org > https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________ OSGi Developer Mail List osgi-dev@mail.osgi.org https://mail.osgi.org/mailman/listinfo/osgi-dev