Hi Christian, Regarding Karaf4 and OSGi: as Guillaume says the Spring DM isn't supported anymore. I am not sure how many users still use CXF + Spring in OSGi. Do you think it will be an option just to remove optional spring imports from the Manifest (for example using maven bundle plugin)?
Regards, Andrei. > -----Original Message----- > From: Christian Schneider [mailto:cschneider...@gmail.com] On Behalf Of > Christian Schneider > Sent: Freitag, 23. September 2016 17:29 > To: dev@cxf.apache.org > Subject: Re: [Discuss] Move spring and blueprint support out of cxf-core > > Hmm .. the dynamic imports would be worth a try. The namespaces might work > this way. > The focus is indeed mainly on spring though as blueprint is pre installed most > times and is only present in one version. > > Christian > > On 23.09.2016 16:38, Guillaume Nodet wrote: > > I think we can solve the refresh problem from blueprint : > > * remove the bundle activators that registers the blueprint handlers > > * create an extender which will scan for the blueprint.handlers > > files in bundles and register the namespaces > > * replace the cxf bundles Import-Package > > org.apache.aries.blueprint.* and > > org.osgi.service.blueprint.* packages with DynamicImport-Package(s) I > > think this way, we should be able to deploy cxf-jaxws, then deploy > > blueprint, and have blueprint namespaces available without having any > > cxf bundle refreshed. > > > > For spring, I'm not sure we can do the same. Though spring-dm is not > > supported anymore, so I think at some point, we can safely not support > > it anymore. It could be replaced by the spring-dm compatible support > > from aries blueprint, in which case, we have a bit more room to hack there. > > But even with plain spring-dm, the same idea as above should work, as > > both spring-dm and the spring support in aries-blueprint do use an > > extender and scan for META-INF/spring.handlers. > > > > > > > > 2016-09-23 16:11 GMT+02:00 Christian Schneider <ch...@die-schneider.net>: > > > >> I agree. I would not make sense to have that many additional jars. > >> On the other hand we could only create the extra modules for the most > >> important bundles like jaxrs, jaxws, http and http jetty. These are > >> the ones that people use a lot and that would cause most of the refreshs. > >> > >> Honestly I think we have too many special namespaces anyway. So at > >> the start I would concentrate on the pain points above. > >> > >> Another approach might be to have some generic support for namespaces. > >> After all the namespaces represent configuration. We could define the > >> configuration in a neutral form (like pojos) and create the xsds as > >> well as the spring or blueprint namespace handler registration > >> centrally. Then there could be one module that collects and registers > >> the spring namespaces and another for the blueprint ones. These > >> modules would then also parse the user xml and return the common > >> pojos. The approach might be a bit difficult to code but would save a > >> lot of code in the individual modules. So this is not something I would > >> start > with but it could be a mid term goal. > >> > >> Christian > >> > >> > >> On 23.09.2016 15:38, Daniel Kulp wrote: > >> > >>> My biggest concern would be the “jar explosion” that would occur if > >>> you add a -blueprint and -spring jar for each of the jars that contains > >>> those. > >>> We already have a ton of jars, not sure adding another 30-40 is > >>> the best idea. > >>> > >>> Several years ago, I also started experimenting a bit: > >>> https://github.com/apache/cxf/tree/split-spring < > >>> https://github.com/apache/cxf/tree/split-spring> > >>> > >>> But didn’t really pursue it much further. > >>> > >>> > >>> > >>> > >>> On Sep 23, 2016, at 8:31 AM, Christian Schneider > >>> <ch...@die-schneider.net> > >>>> wrote: > >>>> > >>>> On 23.09.2016 14:03, Sergey Beryozkin wrote: > >>>> > >>>>> IMHO the most important thing is to preserve the CXF stability. > >>>>> > >>>>> FYI, CommomUtil helpers which can use Spring are heavily used - > >>>>> some of them in JAX-WS and a lot in JAX-RS. > >>>>> > >>>>> For example, JAX-RS SpringBoot starter does depend a lot on the > >>>>> ClassScanner Spring, and JAX-RS runtime depends in various places > >>>>> on ClassHelper to help with dealing with Spring proxified beans. > >>>>> The code which refers to these helpers can not afford to start > >>>>> referring to Spring variants because of course not all CXF users are > Spring users. > >>>>> > >>>>> One needs to be aware that Spring (and now SpringBoot) is very > >>>>> much a major platform for many CXF users. > >>>>> > >>>> We should definitely keep the good support for spring that we > >>>> currently have. What I am not sure of is if we still need the > >>>> pretty extensive xml namespaces in the future. The modern spring > >>>> platform is now almost completely annotation based. So I can > >>>> imagine that cxf 4 might drop xml namespaces in favor of comprehensive > annotation based spring support. > >>>> > >>>>> Personally I'd like see a very clear and concrete plan first: > >>>>> - How to preserve the runtime code portability which depends on > >>>>> CommonUtil helpers such that it works as before in/out of Spring > >>>>> > >>>> I am not yet at the stage where I have a concrete plan. My first > >>>> attempt was just to find out how deeply spring is wired into CXF. > >>>> As it seems the unwrapping of proxies seems to be the most > >>>> problematic part. So one first task is to find a good way to make > >>>> this still work while having a separate module for the spring support. > >>>> > >>>>> - How to keep CXF Spring user code which depends on Spring > >>>>> Namespace support (starting from cxf:bus and then for all other > modules) operating. > >>>>> > >>>> As a first step I would simply add the new cxf-core-spring jar to > >>>> all modules that define namespaces. That might then not provide the > >>>> full advantage of the separation but it should guarantee that all > >>>> modules work as before. This change should make sure that refreshs > >>>> only happen to modules that provide namespaces. > >>>> As a second step we should then check if we can improve on that. > >>>> This all of course depends if we find a feasible solution and if > >>>> the changes have the desired effect. > >>>> In any case I will make sure that we keep all problematic changes > >>>> in a branch so we can decide about them before they reach the master. > >>>> > >>>> Christian > >>>> > >>>> -- > >>>> Christian Schneider > >>>> http://www.liquid-reality.de > >>>> > >>>> Open Source Architect > >>>> http://www.talend.com > >>>> > >>>> > >> -- > >> Christian Schneider > >> http://www.liquid-reality.de > >> > >> Open Source Architect > >> http://www.talend.com > >> > >> > > > > > -- > Christian Schneider > http://www.liquid-reality.de > > Open Source Architect > http://www.talend.com