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

Reply via email to