Yeah, thanks. That worked spankin'. I'm still curious about why an update reload didn't fire any OSGi bundle events though.
Brad On Sat, Feb 27, 2016 at 3:02 PM, Brad Johnson <brad.john...@mediadriver.com> wrote: > Here's one little interesting tid bit. But my BundleListner is notified > when the bundle is actually restarted or uninstalled. But the > update-strategy=reload is not causing a bundle starting/stopping event to > be sent. > > Maybe as designed but I'll have to dig a bit more. Or it may be a bug. > > On Sat, Feb 27, 2016 at 2:48 PM, Brad Johnson < > brad.john...@mediadriver.com> wrote: > >> Quinn, >> >> So thanks for the heads up on that. I probably will use the >> ServiceFactory mechanism to make this work right. >> >> On Sat, Feb 27, 2016 at 2:32 PM, Brad Johnson < >> brad.john...@mediadriver.com> wrote: >> >>> Yeah, I'm obviously going to have to try another mechanic. This current >>> mechanism using the OSGi framework to register services works fine but it >>> will not update. >>> >>> The first two lines are from a bundle getting the class name and >>> registering it via OSGi. >>> Registering: >>> JBossFuse:karaf@root> Setting clazz: >>> foo.internal.impl.InvoiceDocumentServiceImpl >>> Instantiating the InvoiceDocumentServiceImpl >>> >>> This is in the receiving bundle getting the registered service fine. >>> Interface type: foo.api.InvoiceDocumentService >>> Interface type: org.apache.aries.proxy.weaving.WovenProxy >>> >>> Changing the name triggering reload. >>> Setting clazz: foo.internal.test.InvoiceDocumentServiceTestStub >>> >>> But the old proxied class is still being used by the client and I'm not >>> receiving BundleEvents in my BundleListener on the side that registered >>> it. It may be because I'm using the OSGi framework to do that and not >>> blueprint or camel's registries specifically. >>> >>> On Sat, Feb 27, 2016 at 2:02 PM, Quinn Stevenson < >>> qu...@pronoia-solutions.com> wrote: >>> >>>> I’m pretty sure that’s how the Blueprint proxy works. >>>> >>>> You can use Blueprint to reference services exposed via pure OSGi, >>>> Declarative Services and Blueprint - all of them are proxied. So the proxy >>>> would have to be on the caller, not the server. >>>> >>>> You may be able to do what you’re after by registering a factory as a >>>> service, and then calling a method on your factory to return the object you >>>> want - just a thought. >>>> >>>> >>>> > On Feb 27, 2016, at 12:56 PM, Brad Johnson < >>>> brad.john...@mediadriver.com> wrote: >>>> > >>>> > Your observation about the caller being the proxied side is >>>> interesting. I >>>> > hadn't really thought about it before. Conceptually I'd always >>>> assumed >>>> > that it would be the registration that would proxy the >>>> > interface/implementation and that whomever grabbed got that. When the >>>> > service would change then the proxy could stay the same but the >>>> internally >>>> > delegated class would be different. Interesting. >>>> > >>>> > On Sat, Feb 27, 2016 at 1:30 PM, Brad Johnson < >>>> brad.john...@mediadriver.com> >>>> > wrote: >>>> > >>>> >> I think you're right from what I'm seeing. I'll probably have to >>>> resort >>>> >> to an Activator and register the service. I'm just making this so >>>> that I >>>> >> can change the cfg file and switch the internal implementation >>>> between >>>> >> three different types: test, impl, or remote. Test just serves up >>>> dummy >>>> >> data, impl is what it sound like and remote is an implementation >>>> with a >>>> >> ProducerTemplate that in turn delegates calls to URIs for easy >>>> >> distribution. >>>> >> >>>> >> I can make that easy enough if I just use a Class.forName on a >>>> passed in >>>> >> String and delegate to it but I'm trying to color within the lines. >>>> >> >>>> >> On Sat, Feb 27, 2016 at 1:18 PM, Quinn Stevenson < >>>> >> qu...@pronoia-solutions.com> wrote: >>>> >> >>>> >>> I don’t believe the way the service is exposed has any bearing on >>>> when a >>>> >>> proxy is created - the proxy is created by the <reference ….>, not >>>> the >>>> >>> <service> >>>> >>> >>>> >>> Also, if you’re trying to achieve a service with the properties of >>>> an >>>> >>> OSGi Service Factory (i.e. one service instance per calling >>>> bundle), I >>>> >>> don’t think what you have will work - you’ll wind up with a single >>>> instance >>>> >>> of the service in the container. See this JIRA for a little more >>>> info as >>>> >>> to why. https://issues.apache.org/jira/browse/KARAF-4284 >>>> >>> <https://issues.apache.org/jira/browse/KARAF-4284> >>>> >>> >>>> >>> <https://issues.apache.org/jira/browse/KARAF-4284?filter=-2> >>>> >>>> On Feb 26, 2016, at 2:35 PM, Brad Johnson < >>>> brad.john...@mediadriver.com> >>>> >>> wrote: >>>> >>>> >>>> >>>> Just a quick follow up to that question, the class is not proxied >>>> in >>>> >>> CBTS >>>> >>>> but that may be an impedance mismatch between the test harness and >>>> an >>>> >>>> actual OSGi container and not indicative of how it will be handled >>>> by >>>> >>>> blueprint in Karaf. >>>> >>>> >>>> >>>> On Fri, Feb 26, 2016 at 3:23 PM, Ranx < >>>> brad.john...@mediadriver.com> >>>> >>> wrote: >>>> >>>> >>>> >>>>> If I create a service factory instantiated in blueprint like this: >>>> >>>>> >>>> >>>>> <bean id="service" class="fo.bar.ServiceFactory" >>>> >>>>> factory-method="createService" > >>>> >>>>> <argument value="${serviceClassImpl}"/> >>>> >>>>> >>>> >>>>> </bean> >>>> >>>>> <service ref="service" interface="foo.api.MyOSGiService" /> >>>> >>>>> >>>> >>>>> And inside the factory just do a Class.forName to instantiate and >>>> >>> return >>>> >>>>> it, >>>> >>>>> will the service reference itself be proxied? >>>> >>>>> >>>> >>>>> >>>> >>>>> >>>> >>>>> >>>> >>>>> >>>> >>>>> -- >>>> >>>>> View this message in context: >>>> >>>>> http://camel.465427.n5.nabble.com/ServiceFactory-tp5778336.html >>>> >>>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>> >>>>> >>>> >>> >>>> >>> >>>> >> >>>> >>>> >>> >> >