Return-Path: X-Original-To: apmail-cxf-dev-archive@www.apache.org Delivered-To: apmail-cxf-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 263BDF65B for ; Tue, 1 Oct 2013 14:41:27 +0000 (UTC) Received: (qmail 22304 invoked by uid 500); 1 Oct 2013 14:41:26 -0000 Delivered-To: apmail-cxf-dev-archive@cxf.apache.org Received: (qmail 22003 invoked by uid 500); 1 Oct 2013 14:41:20 -0000 Mailing-List: contact dev-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list dev@cxf.apache.org Received: (qmail 21990 invoked by uid 99); 1 Oct 2013 14:41:19 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 01 Oct 2013 14:41:19 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=RCVD_IN_DNSWL_NONE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of ashakirin@talend.com designates 64.95.72.241 as permitted sender) Received: from [64.95.72.241] (HELO mxout.myoutlookonline.com) (64.95.72.241) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 01 Oct 2013 14:41:14 +0000 Received: from mxout.myoutlookonline.com (localhost [127.0.0.1]) by mxout.myoutlookonline.com (Postfix) with ESMTP id 1EDCC7ACE86; Tue, 1 Oct 2013 10:40:54 -0400 (EDT) X-Virus-Scanned: by SpamTitan at mail.lan Received: from S10HUB001.SH10.lan (unknown [10.110.2.1]) by mxout.myoutlookonline.com (Postfix) with ESMTP id 877017ACD08; Tue, 1 Oct 2013 10:40:53 -0400 (EDT) Received: from S10BE002.SH10.lan ([::1]) by S10HUB001.SH10.lan ([::1]) with mapi id 14.01.0438.000; Tue, 1 Oct 2013 10:40:53 -0400 From: Andrei Shakirin To: "dev@cxf.apache.org" , Daniel Kulp Subject: RE: extensions dynamically added/removed from exited bus Thread-Topic: extensions dynamically added/removed from exited bus Thread-Index: AQHOffjZQvhW9JdU8EWPW+ZRWuNJ65l7v+CAgAQIq4CAIzpzMIAATXmAgAS9n4CAAEYKgP//v6FggABKkwCABDV9QIAz2AoQ Date: Tue, 1 Oct 2013 14:40:52 +0000 Message-ID: References: <1373521040979-5730582.post@n5.nabble.com> <1375089421550-5731571.post@n5.nabble.com> <289AE183-82FB-49BE-9B4F-90D8E33E2CFF@apache.org> <7A2A2F88-B33F-4D86-9F28-46AFC16F9193@apache.org> <64974508-D397-4718-B70A-92F1B454D181@apache.org> In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [178.2.141.80] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Virus-Checked: Checked by ClamAV on apache.org Hi Dan, One more related question: what happens if required bus was created before = my BusLifecycleListener is activated? Is there any way to get a list of all existing Buses? Regards, Andrei. > -----Original Message----- > From: Andrei Shakirin [mailto:ashakirin@talend.com] > Sent: Donnerstag, 12. September 2013 10:20 > To: Daniel Kulp; dev@cxf.apache.org > Subject: RE: extensions dynamically added/removed from exited bus >=20 > Hi Dan, >=20 > Just confirm that proposed solution works! >=20 > Thanks, > Andrei. >=20 > > -----Original Message----- > > From: Daniel Kulp [mailto:dkulp@apache.org] > > Sent: Montag, 26. August 2013 20:40 > > To: dev@cxf.apache.org; Andrei Shakirin > > Subject: Re: extensions dynamically added/removed from exited bus > > > > > > On Aug 26, 2013, at 2:19 PM, Andrei Shakirin > wrote: > > > > > Hi Dan, > > > > > >> I don't think InterceptorProvider is one of the things that is > > >> looked up this way. You likely need a BusLifecycleListener, > > >> Feature, ClientLifecycleListener, or ServerLifecycleListener > > >> depending on what you need to add the interceptors to. > > > > > > Hmm ... but in my use case adding of interceptors is triggered by > > > the policy > > assertion. Seems that InterceptorProvider is right choice for this case= . > > > I would like to instantiate InterceptorProvider as OSGi service > > > instead bus- > > extensions mechanism, because it makes easy injection of other OSGi > > services, working with OSGi config props, etc. > > > Any chance to do achieve that? > > > > Not right now, no. We don't ever query the PolicyInterceptorProvider > things > > from the ConfiguredBeanLocator, although we probably could. Right now= , > > we just query the PolicyInterceptorProviderLoader objects, but those > > are expected to kind of have a Bus constructor or similar that when > > created, would register all the PolicyInterceptorProvider things they k= now > about. > > > > Your best bet right now is to have an OSGi service registered as a > > BusCreationListener that when the Bus is created, would simply do: > > > > void busCreated(Bus b) { > > > > b.getExtension(PolicyInterceptorProviderRegistry.class).register(..... > > .); > > } > > > > to register your PolicyInterceptorProvider (which can be created in > > the OSGi context or whatever). > > > > > > Dan > > > > > > > > > > > > Regards, > > > Andrei. > > > > > >> -----Original Message----- > > >> From: Daniel Kulp [mailto:dkulp@apache.org] > > >> Sent: Montag, 26. August 2013 20:03 > > >> To: Andrei Shakirin > > >> Cc: dev@cxf.apache.org > > >> Subject: Re: extensions dynamically added/removed from exited bus > > >> > > >> > > >> On Aug 26, 2013, at 2:00 PM, Andrei Shakirin > > wrote: > > >> > > >>> Hi Dan, > > >>> > > >>>> Just register your OSGi service as normal, but use the > > >>>> appropriate CXF interface as the interface for your exposed OSGi > > >>>> service. That really > > >> should > > >>>> be all you need to do. When the runtime calls into the Bus to ge= t the > > >>>> extension of that interface (either > > >>>> bus.getExtension(Interface.class) or via the > > >>>> ConfiguredBeanLocator), it > > should find it in the OSGi services. > > >>> > > >>> I have tried that in CXF 2.7.7 for InterceptorProviders. Bundle > > >>> exposes my > > >> interceptor provider as OSGi service (implemented CXF > > >> InterceptorProvider > > >> interface): > > >>> > > >> > > >> I don't think InterceptorProvider is one of the things that is > > >> looked up this way. You likely need a BusLifecycleListener, > > >> Feature, ClientLifecycleListener, or ServerLifecycleListener > > >> depending on what you need to add the interceptors to. > > >> > > >> Dan > > >> > > >> > > >>> tesbext-security-interceptor-provider (334) provides: > > >>> ----------------------------------------------------- > > >>> osgi.service.blueprint.compname =3D > > >>> securityContextInterceptorProvider > > >>> objectClass =3D org.apache.cxf.interceptor.InterceptorProvider > > >>> service.id =3D 716 > > >>> > > >>> Unfortunately my interceptor provider is not picked up by the runti= me. > > >>> > > >>> As soon as I add bus-extensions.txt containing: > > >>> > > >>> org.sopera.csg.tesbext.security.interceptor.provider.SecurityConte > > >>> xt In terceptorProvider::true into the project, interceptor > > >>> provider works. > > >>> > > >>> Seems that both mechanisms are not really equal. > > >>> Any suggestions where I can dig? > > >>> > > >>> Regards, > > >>> Andrei. > > >>> > > >>>> -----Original Message----- > > >>>> From: Daniel Kulp [mailto:dkulp@apache.org] > > >>>> Sent: Freitag, 23. August 2013 15:29 > > >>>> To: dev@cxf.apache.org; Andrei Shakirin > > >>>> Subject: Re: extensions dynamically added/removed from exited bus > > >>>> > > >>>> > > >>>> On Aug 23, 2013, at 8:53 AM, Andrei Shakirin > > >>>> > > >> wrote: > > >>>> > > >>>>>> If the extensions are not really loaded via a > > >>>>>> META-INF/bus-extension.txt > > >>>> and > > >>>>>> instead are OSGi services, you may be able to accomplish a bit > more. > > >>>> When > > >>>>>> the bundle stops and the service is stopped, it should be able > > >>>>>> to get a blueprint lifecycle event and then go ahead an > > >>>>>> unregister anything that is may have registered, but I'm not > > >>>>>> 100% sure that would work completely correctly. > > >>>>> > > >>>>> I know from Christian that you have added new functionality to > > >>>>> register > > >>>> extensions as OSGi services (not via META-INF/bus-extension.txt). > > >>>>> Could you point on test or sample how to do that? > > >>>> > > >>>> Just register your OSGi service as normal, but use the > > >>>> appropriate CXF interface as the interface for your exposed OSGi > > >>>> service. That really > > >> should > > >>>> be all you need to do. When the runtime calls into the Bus to ge= t the > > >>>> extension of that interface (either > > >>>> bus.getExtension(Interface.class) or via the > > >>>> ConfiguredBeanLocator), it > > should find it in the OSGi services. > > >>>> > > >>>> Dan > > >>>> > > >>>> > > >>>> > > >>>> > > >>>> > > >>>>> > > >>>>> Regards, > > >>>>> Andrei. > > >>>>> > > >>>>>> -----Original Message----- > > >>>>>> From: Daniel Kulp [mailto:dkulp@apache.org] > > >>>>>> Sent: Donnerstag, 1. August 2013 00:53 > > >>>>>> To: dev@cxf.apache.org; iris ding > > >>>>>> Subject: Re: extensions dynamically added/removed from exited > > bus > > >>>>>> > > >>>>>> > > >>>>>> On Jul 29, 2013, at 5:17 AM, iris ding wr= ote: > > >>>>>> > > >>>>>>> Hi , > > >>>>>>> > > >>>>>>> Can we think CXF will not support such usage or in other > > >>>>>>> words, CXF has not taken such function into consideration from > > >>>>>>> it's initial design and such use cases should not be > > >>>>>>> encouraged in CXF > > >>>>>>> -- If user want to make new/removed extensions take effect in > > >>>>>>> existed bus, they need to re-create the bus, Is this > > >>>>>>> understanding > > >> right? > > >>>>>> > > >>>>>> Pretty much yes. Since extensions can do all kinds of things > > >>>>>> (set properties, add interceptors, etc...) which would be > > >>>>>> difficult to "undo", it's not something we've tackled. > > >>>>>> > > >>>>>> If the extensions are not really loaded via a > > >>>>>> META-INF/bus-extension.txt > > >>>> and > > >>>>>> instead are OSGi services, you may be able to accomplish a bit > more. > > >>>> When > > >>>>>> the bundle stops and the service is stopped, it should be able > > >>>>>> to get a blueprint lifecycle event and then go ahead an > > >>>>>> unregister anything that is may have registered, but I'm not > > >>>>>> 100% sure that would work completely correctly. > > >>>>>> > > >>>>>> > > >>>>>> -- > > >>>>>> Daniel Kulp > > >>>>>> dkulp@apache.org - http://dankulp.com/blog Talend Community > > >> Coder - > > >>>>>> http://coders.talend.com > > >>>>> > > >>>> > > >>>> -- > > >>>> Daniel Kulp > > >>>> dkulp@apache.org - http://dankulp.com/blog Talend Community > > Coder - > > >>>> http://coders.talend.com > > >>> > > >> > > >> -- > > >> Daniel Kulp > > >> dkulp@apache.org - http://dankulp.com/blog Talend Community Coder > - > > >> http://coders.talend.com > > > > > > > -- > > Daniel Kulp > > dkulp@apache.org - http://dankulp.com/blog Talend Community Coder - > > http://coders.talend.com