That sounds like the case the Blueprint is creating a proxy to the interface but when it is invoked there isn't a concreted object exposed for it to execute against. If you actually look at the class type of the MyService injected into your class it will likely be a Proxy class and a true instance of the object.
On Thursday, September 1, 2016 at 4:12:13 AM UTC-5, [email protected] wrote: > > Hi, > > Thanks for the response. > My Observations: In the setter function (setServiceBn(MyService > serviceBn)) , if i check, the "MyService" is not null. That means it is > injecting during activating the feature. But after that in function > execute(), it is getting null. Any suggestion to this? > > On Sunday, 28 August 2016 12:03:56 UTC+5:30, Achim Nierbeck wrote: >> >> hi, >> >> even though this is the wrong list to ask, you should ask at the karaf >> mailinglist for karaf specific question. >> It might be because you have your blueprint contextes initialized lazy. >> on both sides. Producing and consuming. >> Might be that. Maybe remove that and give it another try. >> >> cheers, Achim >> >> >> 2016-08-27 22:21 GMT+02:00 <[email protected]>: >> >>> Hi All, >>> >>> Please see my setup and code. >>> >>> Version: apache-karaf-3.0.5 >>> >>> *Part 1*: Service class >>> >>> Service: >>> ------------ >>> package org.jrb.test; >>> >>> public interface MyService { >>> >>> public String echo(String message); >>> >>> } >>> >>> package org.jrb.test; >>> >>> public class MyServiceImpl implements MyService { >>> >>> public String echo(String message) { >>> return "Echo processed: " + message; >>> } >>> >>> } >>> >>> Blueprit: >>> ------------ >>> <?xml version="1.0" encoding="UTF-8"?> >>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" >>> default-activation="lazy"> >>> >>> <bean id="serviceBean" class="org.jrb.test.MyServiceImpl"/> >>> >>> <service id="MyService" ref="serviceBean" >>> interface="org.jrb.test.MyService"/> >>> >>> </blueprint> >>> >>> i can see my service in list: >>> ------------------------------------------ >>> onos> service:list | grep serviceBean >>> *osgi.service.blueprint.compname = serviceBean* >>> >>> >>> *Part 2*: consumer class for testing >>> >>> Blueprint >>> ------------- >>> <?xml version="1.0" encoding="UTF-8"?> >>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" >>> default-activation="lazy"> >>> >>> <reference id="MyService" interface="org.jrb.test.MyService"/> >>> <bean id="b" class="org.ct.command.AddCommand" activation="eager" > >>> <property name="serviceBn" ref="MyService" /> >>> </bean> >>> <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0"> >>> <command> >>> <action class="org.ct.command.AddCommand"/> >>> </command> >>> </command-bundle> >>> >>> </blueprint> >>> >>> In Java: >>> ------------ >>> package org.ct.command; >>> >>> import org.apache.felix.gogo.commands.Action; >>> import org.apache.felix.gogo.commands.Argument; >>> import org.apache.felix.gogo.commands.Command; >>> import org.apache.felix.service.command.CommandSession; >>> >>> import org.jrb.test.MyService; >>> >>> @Command(scope = "onos", name = "service-add", description = "Adds a >>> Client") >>> public class AddCommand implements Action { >>> >>> public AddCommand() >>> { >>> } >>> >>> private MyService serviceBn; >>> >>> public void setServiceBn(MyService serviceBn) >>> { >>> this.serviceBn = serviceBn; >>> } >>> >>> public MyService getServiceBn() { >>> return service; >>> } >>> >>> @Override >>> public Object execute(CommandSession session) throws Exception { >>> System.out.println("Executing command add"); >>> >>> if(serviceBn != null) >>> System.out.println("serviceBn is not null"); >>> else >>> System.out.println("serviceBn is null !!"); >>> if(serviceBn != null) >>> System.out.println(serviceBn.echo("testing.....")); >>> >>> } >>> } >>> >>> In the above code, if i run the command "service-add", my serviceBn is >>> always NULL. The reference is not injecting the bean. >>> >>> Is there anything missing in my code? please help. >>> >>> >>> Regards, >>> Jayanth >>> >>> >>> -- >>> -- >>> ------------------ >>> OPS4J - http://www.ops4j.org - [email protected] >>> >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "OPS4J" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> >> -- >> >> Apache Member >> Apache Karaf <http://karaf.apache.org/> Committer & PMC >> OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer >> & Project Lead >> blog <http://notizblog.nierbeck.de/> >> Co-Author of Apache Karaf Cookbook <http://bit.ly/1ps9rkS> >> >> Software Architect / Project Manager / Scrum Master >> >> -- -- ------------------ OPS4J - http://www.ops4j.org - [email protected] --- You received this message because you are subscribed to the Google Groups "OPS4J" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
