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:[email protected]]
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
<[email protected]> 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:[email protected]]
> Sent: Thursday, January 23, 2014 2:15 PM
> To: [email protected]
> 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:[email protected]]
> 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
> <[email protected]> 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:[email protected]]
>> 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
>> <[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.
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]