Hi,

Could you use the ‘instances’ command to retrieve the list of instances and 
their state ?
(http://felix.apache.org/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-arch-command.html)

> ipojo:instances
// dump all instances and declaration
> ipojo:instance my-factory-0
// introspect the first instance 
> ipojo:instance my-consumer-factory-0
// introspect the second instance

Regards,

Clement


On 22 janv. 2014, at 20:38, Zaid Jamal Saeed Al Mahmoud 
<[email protected]> wrote:

> I have 2 iPOJO Components.
> 1- A Provider bundle that provides "Hello" service. Below is the 
> implementation of the component:
> package helloipojo;
> 
> 
> import helloipojo.service.HelloService;
> 
> import org.apache.felix.ipojo.annotations.Component;
> import org.apache.felix.ipojo.annotations.Invalidate;
> import org.apache.felix.ipojo.annotations.Provides;
> import org.apache.felix.ipojo.annotations.Validate;
> 
> 
> @Component(name="my-factory")
> @Provides
> public class HelloServiceImpl implements HelloService{
> 
>    @Override
>    public void sayHello() {
> 
>        System.out.println("Hello iPojo!");
> 
>    }
> 
> 
>    @Validate
>    public void start() throws Exception {
> 
>        System.out.println("Hello, I am ipojo bundle start method");
> 
>    }
> 
>    @Invalidate
>    public void stop() throws Exception {
> 
>        System.out.println("Bye Bye, I am ipojo bundle stop method");
> 
>    }
> 
> 
> 
> }
> 2- Consumer bundle that uses HelloService object as the follwing:
> package helloserviceconsumer;
> 
> import helloipojo.service.HelloService;
> 
> import org.apache.felix.ipojo.annotations.Component;
> import org.apache.felix.ipojo.annotations.Invalidate;
> import org.apache.felix.ipojo.annotations.Requires;
> import org.apache.felix.ipojo.annotations.Validate;
> 
> @Component(name="my-consumer-factory")
> public class HelloConsumer {
>              @Requires
>              HelloService helloObject;
> 
>              @Validate
>              private void start() {
>                       // Starting method
>                       //...
>                       helloObject.sayHello();
>                       //...
>                }
> 
>                @Invalidate
>                protected void stop() {
>                        // Stopping method
>                        if(helloObject!=null) { helloObject.sayHello(); }
> 
>                        else System.out.println("hello service GONE!");
>                }
> }
> In a seperate Java application, I load these two bundles and start them on 
> Apache Felix as the following:
> Bundle b = 
> bundleContext1.installBundle("file:C:\\Users\\zaid.almahmoud\\Desktop\\plugins\\HelloService_1.0.0.201401222235.jar");
> b.start();
> 
> Bundle c = 
> bundleContext1.installBundle("file:C:\\Users\\zaid.almahmoud\\Desktop\\plugins\\HelloServiceConsumer_1.0.0.201401222257.jar");
> c.start();
> All the above works fine.
> Now, I would like to instantiate these two components dynamically and observe 
> the consumption of the bundle provider service by the bundle consumer. I used 
> Instance Declaration, as the following:
> DefaultInstanceDeclaration providerDeclaration = new 
> DefaultInstanceDeclaration(b.getBundleContext(), "my-factory");
>                            providerDeclaration.start();
> 
> DefaultInstanceDeclaration consumerDeclaration = new 
> DefaultInstanceDeclaration(c.getBundleContext(), "my-consumer-factory");
>                            consumerDeclaration.start();
> No errors when running the application. However, I could not see the "Hello" 
> Messages that exists in the start() methods of both the service provider and 
> consumer. I see absolutely NOTHING. That means the components are not 
> instantiated correctly. Where did I go wrong? Thanks.
> 
> 
> 
> Zaid.
> 

Reply via email to