i had to use this ServiceTracker thing. it works but i did not really like it.
i'm guessing my bundle should've been a spring-integration module of some kind (only really used spring for webapps). i'm wondering if it's worth giving a try or just leaving it as it is (servicetracker). ________________________________________ From: Andreas Pieber [[email protected]] Sent: 15 February 2011 19:13 To: [email protected]; Marco Firrincieli Subject: Re: spring injected bean cannot be found Either you create a spring-bundle or you simply user e.g. ServiceTracker to retrieve the service in the activator kind regards, andreas On Tue, Feb 15, 2011 at 07:17:22PM +0100, Marco Firrincieli wrote: > Alright. > > Just one more thing. My activator (inside bundleA) is not a spring project. > > so where do I put this <osgi:reference thingie? > > > > -----Original Message----- > From: Andreas Pieber [mailto:[email protected]] > Sent: martedì 15 febbraio 2011 18:42 > To: [email protected]; Marco Firrincieli > Subject: Re: spring injected bean cannot be found > > On Tue, Feb 15, 2011 at 06:39:19PM +0100, Marco Firrincieli wrote: > > Alright thanks so much, andreas. > > > > I'm trying to add this spring-dm "stuff" on my spring.xml file for bundleB. > > > > I'll probably need some spring-dm stuff on karaf too (trying to understand > > if I have it as "features" already or not). > > there is already a feature for this available with karaf: spring-dm > > > > > That <osgi:service you put in comes from spring-osgi namespace (which I'll > > to add) right? > > ai, but best consult the spring-dm docs for the details. It's quite simple to > export/import services using spring > > kind regards, > andreas > > > > > > > -----Original Message----- > > From: Andreas Pieber [mailto:[email protected]] > > Sent: martedì 15 febbraio 2011 18:10 > > To: [email protected]; Marco Firrincieli > > Subject: Re: spring injected bean cannot be found > > > > Yeah, as said: don't use new, but rather use spring-dm to export > > BundleBClass as a service (you have to add an interface therefore) and > > import it into bundleAClass > > > > this looks then something like: > > > > bundleBspring > > > > <bean id="a" class="XXX" /> > > <osgi:service interface="..." ref="a" /> > > > > bundleAspring > > > > <bean id="b" class="YYY" > > > <!-- via props or autowiring; as u like--> </> <osgi:reference > > interace="..." id="xyz" /> > > > > kind regards, > > andreas > > > > On Tue, Feb 15, 2011 at 06:08:59PM +0100, Marco Firrincieli wrote: > > > I figured there must be a way to get a service from bundleB and IF that > > > service needs something (something he owns!) then I thought it could be > > > perfectly able to get it from its own spring context (that is 'wiring" it > > > to itself). > > > > > > I don't need to actually get the autowired bean from bundleB. I need > > > bundleB to do something for me (bundleA). (in the example I need > > > BundleBClass.sayHello()) > > > > > > Gotta find a (quick) workaround to do this. > > > > > > -----Original Message----- > > > From: Andreas Pieber [mailto:[email protected]] > > > Sent: martedì 15 febbraio 2011 17:42 > > > To: [email protected]; Marco Firrincieli > > > Subject: Re: spring injected bean cannot be found > > > > > > ah ok, this can't work this way... in bundlaA only the spring files > > > in bundleA count; if you define the autowiring things in > > > bundleA-spring-file it will work; BUT bundleA-spring-files have no > > > idea of bundleb-spring-files... I hope it is clear what I'm pointing > > > at... Typically you don't want to do a new XXX in bundleA but rather > > > import a service from bundleB > > > > > > @thread: no it isn't you also have to remove the In-Reply-To: field > > > in the header; simply hitting reply and changing the subject does > > > not really create a new thread :) > > > > > > kind regards, > > > andreas > > > > > > On Tue, Feb 15, 2011 at 05:41:33PM +0100, Marco Firrincieli wrote: > > > > Here it comes: > > > > > > > > (I’ve tried to simplify here... hope it works) > > > > > > > > Here’s my karaf list command output (notice all I need is in an Active > > > > state). > > > > > > > > [51] [Active] [] [] [75] my.legacy.something.just-a-jar > > > > (1.0.0.SNAPSHOT) [105] [Active] [] [] [70] some.domain.beans > > > > (1.0.0.SNAPSHOT) [142] [Active] [] [] [70] bundleB > > > > (1.0.0.SNAPSHOT) [142] [Active] [] [] [70] bundleA > > > > (1.0.0.SNAPSHOT) > > > > > > > > at some point in bundleA i have: > > > > > > > > package my.package.bundleA > > > > > > > > import some.class.in.bundleB.BundleBClass; > > > > > > > > public class MyClass { > > > > void doStuff() { > > > > new BundleBClass().sayHello(); > > > > } > > > > } > > > > > > > > > > > > Whereas in bundleB > > > > > > > > package some.class.in.bundleB; > > > > > > > > public class BundleBClass { > > > > > > > > @Autowired > > > > private Sayer sayer; > > > > > > > > void sayHello() { > > > > this.sayer.say("hello"); > > > > } > > > > } > > > > > > > > And of course bundleB exports its BundleBClass > > > > > > > > > > > > I’ve got a wonderful nullpointer in sayHello method because "sayer" is > > > > null. The autowired doesn’t seem to work. > > > > > > > > > > > > > > > > > > > > Ps: @Andreas, is this not a new thread? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > From: [email protected] [mailto:[email protected]] > > > > Sent: martedì 15 febbraio 2011 17:21 > > > > To: [email protected]; Marco Firrincieli > > > > Subject: Re: spring injected bean cannot be found > > > > > > > > Do you use blueprint for that or pure OSGi services ? > > > > Could we have the spring file and the complete stack trace ? > > > > > > > > Regards > > > > JB > > > > ________________________________________ > > > > From: Marco Firrincieli <[email protected]> > > > > Date: Tue, 15 Feb 2011 17:20:41 +0100 > > > > To: [email protected]<[email protected]> > > > > ReplyTo: [email protected] > > > > Subject: spring injected bean cannot be found > > > > > > > > One of my bundles (call it bundleA) instantiate a new Stuff() and this > > > > Stuff is another bundle (bundleB) (already up and running) and has a > > > > Spring autowired bean. > > > > > > > > Result: nullpointerexception the (supposedly) injected bean. > > > > > > > > Any idea? Should add something in bundleB’s manifest? > > > > > > > > > > > > Can’t find much googling about this. > > > > > > > > Thanks > > > > > > > > -m
