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. >>> >>>>> >>> >>> >>> >>> >>> >> >>> >>> >> >