felix-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Zaid Jamal Saeed Al Mahmoud <zaid.almahm...@kustar.ac.ae>
Subject RE: iPOJO Components instantiated but no visible output
Date Sat, 25 Jan 2014 11:46:45 GMT
I even checked iPOJO API for the DefaultInstanceDeclaration.

I cannot find anything related to instantiating the component All I can see is the following:

45    public  DefaultInstanceDeclaration(BundleContext bundleContext, String componentName,
Dictionary<String, Object> configuration) {
46        super(bundleContext, InstanceDeclaration.class);
47        m_componentName = componentName;
48        m_configuration = configuration;
49        m_componentVersion = initComponentVersion();
50        m_instanceName = initInstanceName();
51    }

Where does the API talk to the factory of the component to call the start and stop methods
of the component implementation class? 

Even the start method of DefaultInstanceDeclaration only registers a service like:

66    public void start() {
67        m_registration = m_bundleContext.registerService(m_type.getName(), this, getServiceProperties());
68    }

I really need to know the answer urgently because It's been a long time trying to just create
a component instance. The instance is just not created.



-----Original Message-----
From: Clement Escoffier [mailto:clement.escoffier@gmail.com] 
Sent: Saturday, January 25, 2014 12:01 AM 
To: Apache Felix - Users Mailing List
Subject: Re: iPOJO Components instantiated but no visible output

Hi,

Could you try :

> ipojo:instances

Regards,

Clement

On 24 janv. 2014, at 20:49, Zaid Jamal Saeed Al Mahmoud <zaid.almahmoud@kustar.ac.ae>
wrote:

> Hey, I manipulated my bundle using Ipojo Ant Task, as the following:
> 
> <project>
> <target name="main">
>    <!-- Change the path to point on the iPOJO Ant task jar-->
>    <taskdef name="ipojo"
>        classname="org.apache.felix.ipojo.task.IPojoTask"
>        classpath="C:/Users/zaid.almahmoud/Dropbox/EBTIC/ADERE/feasibility-codes/ipojo/ipojo-distribution-1.11.0/bundle/org.apache.felix.ipojo.ant-1.11.0.jar"/>
> 	<ipojo
>        input="C:/Users/zaid.almahmoud/Desktop/plugins/HelloService_1.0.0.201401222235.jar"
> 		output="C:/Users/zaid.almahmoud/Desktop/plugins/Manipulated_HelloService.jar"  	
>    />
> </target>
> </project>
> 
> 
> Now, I can see in my app that the factory is valid. This is the output in the command:
> g! ipojo:factories
> Factory my-factory (VALID)
> Factory org.apache.felix.ipojo.arch.gogo.Arch (UNKNOWN) - Private
> 
> Therefore the factory "my-factory" is available unlike before.
> 
> 
> However, my instance is not available, which was created as the following:
> DefaultInstanceDeclaration providerDeclaration = new DefaultInstanceDeclaration(b.getBundleContext(),
"my-factory");
>                    	providerDeclaration.start();
> 
> Again, this does not show an error, but it doesn't display the expected output in the
start() method of the bundle, and on the command, I can see:
> 
> g! ipojo:instance my-factory-0
> Instance named 'my-factory-0' not found
> 
> 
> Can you help please? Thanks.
> 
> 
> 
> 
> 
> 
> -----Original Message-----
> From: Zaid Jamal Saeed Al Mahmoud [mailto:zaid.almahmoud@kustar.ac.ae] 
> Sent: Thursday, January 23, 2014 2:15 PM
> To: users@felix.apache.org
> Subject: RE: iPOJO Components instantiated but no visible output
> 
> It displays this:
> 
> ipojo:factories 
> Factory org.apache.felix.ipojo.arch.gogo.Arch (UNKNOWN) - Private
> 
> 
> I am not sure what you mean by iPOJO manipulation on my bundles, 
> But again, I am not using ANT or MAVEN. I export the bundles normally in eclipse (Using
export->deployable plugins and fragments).
> Could it be the issue?
> 
> 
> -----Original Message-----
> From: Clement Escoffier [mailto:clement.escoffier@gmail.com] 
> Sent: Thursday, January 23, 2014 11:52 AM
> To: Apache Felix - Users Mailing List
> Subject: Re: iPOJO Components instantiated but no visible output
> 
> Hi,
> 
> The output are interesting, it looks like your instances are not declared correctly.
Can you try:
> 
>> ipojo:factories 
> 
> 
> By the way, how are you applying the iPOJO manipulation on your bundles ? 
> 
> Regards,
> 
> Clement
> 
> On 23 janv. 2014, at 08:30, Zaid Jamal Saeed Al Mahmoud <zaid.almahmoud@kustar.ac.ae>
wrote:
> 
>> Okay, I did that. Here's the output:
>> 
>> g! ipojo:instances
>> Instance org.apache.felix.ipojo.arch.gogo.Arch-0 -> valid
>> 
>> g! ipojo:instance my-factory-0
>> g! Instance named 'my-factory-0' not found
>> 
>> g! ipojo:instance my-consumer-factory-0
>> Instance named 'my-consumer-factory-0' not found
>> 
>> 
>> 
>> 
>> -----Original Message-----
>> From: Clement Escoffier [mailto:clement.escoffier@gmail.com] 
>> Sent: Thursday, January 23, 2014 10:58 AM
>> To: Apache Felix - Users Mailing List
>> Subject: Re: iPOJO Components instantiated but no visible output
>> 
>> 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 <zaid.almahmoud@kustar.ac.ae>
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.
>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
>> For additional commands, e-mail: users-help@felix.apache.org
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Mime
View raw message