Yeah, I know this project, but I think this is would be too much. All DI
frameworks
already do classpath scanning, in some form or another. I think we should just
play
by CDI rules :), as we do with Spring + Spring Boot integration by following the
conventions.
Best Regards,
Andriy Redko
JDA> Ah ha, I see it now. We just need a better implementation of
ClasspathScanner. Have you looked at https://github.com/ronmamo/reflections by
any chance?
JDA> John
JDA> On Fri, Dec 22, 2017 at 5:40 PM Andriy Redko <[email protected]> wrote:
JDA> Documenting make sense. To project it to Spring-based runtime, fe, without
JDA> Spring-specific annotations + configuration the discovery won't happen ...
JDA> But there is Spring Boot which could do magic here, and CXF does have a
JDA> module for it. Same, in theory, could be possible with CXF+CDI (let say by
JDA> adding `cxf-cdi` module where we could supply the limited, handcrafted
JDA> set of CDI beans available for discovery in the beans.xml). Do you think
it
JDA> is worth exploring the idea?
JDA> Best Regards,
JDA> Andriy Redko
JDA>> I would do nothing but document a strategy that users can implement. The
JDA>> biggest question I have is whether a provider like this should be
JDA>> registered automatically? Does that happen with spring based runtimes?
JDA>> What about when there is no DI framework present? Is it clear enough
that
JDA>> user would need to list it in their Application class as a
singleton/class?
JDA>> John
JDA>> On Fri, Dec 22, 2017 at 5:08 PM Andriy Redko <[email protected]> wrote:
>>> Sure, removed/reverted. So here are the general thoughts. Yes, most (if
>>> not all) of the providers/features/... are not CDI
>>> specific and as such, they are not bean archives (and it make sense). Now,
>>> how could we make the CXF more CDIish? There
>>> are a couple of option we could explore, but what would be the idiomatic
>>> CDI way?
>>> Best Regards,
>>> Andriy Redko
>>> JDA> Personally, I would actually recommend removing the beans.xml from
>>> open tracing (and really any module that isn't
>>> JDA> a cdi specific module). While it does allow for a bit more automatic
>>> binding, my question was more around what is
>>> JDA> missing. I missed the fact that there is no build in automatic
>>> discovery of providers in CDI if they're not CDI
>>> JDA> managed - which is OK and the answer I was working through.
>>> JDA> And realistically, this issue is not specific to the open tracing
>>> integration, I can replicate it with other
>>> JDA> providers. Its just a matter of documenting and knowing what to
>>> setup.
>>> JDA> So if you don't mind, I'd like to revert that commit; and add some
>>> docs around how to create an automatically registered provider.
>>> JDA> John
>>> JDA> On 2017-12-22 15:24, Romain Manni-Bucau <[email protected]>
>>> wrote:
>>> >> How can i disable it now? Tink that cxf feature - even if in separate
>>> >> modules - shouldnt be auto registered until it has a deactivable flag -
>>> >> classpath properties + overridable through system prop.
>>> >> Wdyt?
>>> >> Le 22 déc. 2017 18:38, "Andriy Redko" <[email protected]> a écrit :
>>> >> > Hi Sergey,
>>> >> >
>>> >> > It wasn't (for CDI only), but it could have been always included
>>> manually.
>>> >> > Thanks.
>>> >> >
>>> >> > Best Regards,
>>> >> > Andriy Redko
>>> >> >
>>> >> > SB> Hi Andriy
>>> >> >
>>> >> > SB> So how was a JAX-RS (OpenTracing) Feature discovered without
>>> beans.xml
>>> >> > ?
>>> >> >
>>> >> > SB> Cheers, Sergey
>>> >> > SB> On 22/12/17 17:24, Andriy Redko wrote:
>>> >> > >> The beans.xml was missed indeed, I added it and OpenTracingFeature
>>> has
>>> >> > been discovered right away.
>>> >> > >> The commit is on its way. Thanks!
>>> >> >
>>> >> > >> Best Regards,
>>> >> > >> Andriy Redko
>>> >> >
>>> >> > >> JDA> I'm holding off on doing anything to fix it. For one, a user
>>> may
>>> >> > not want to use the global tracer so making it
>>> >> > >> JDA> so that they register it makes more sense. Ultimately to
>>> solve
>>> >> > it, I think we should be moving server
>>> >> > >> JDA> customizations outside of CDI to ensure that it can be auto
>>> >> > registered.
>>> >> >
>>> >> >
>>> >> > >> JDA> John
>>> >> >
>>> >> >
>>> >> > >> JDA> On Fri, Dec 22, 2017 at 11:12 AM Andriy Redko <
>>> [email protected]>
>>> >> > wrote:
>>> >> >
>>> >> > >> JDA> Hey John,
>>> >> >
>>> >> > >> JDA> The OpenTracingFeature
>>> (org.apache.cxf.tracing.opentracing.jaxrs
>>> >> > package) is JAX-RS feature,
>>> >> > >> JDA> which JAXRS CDI extension should recognize out of the box.
>>> There
>>> >> > is also CXF feature (
>>> >> > >> JDA> in org.apache.cxf.tracing.opentracing package) to be used for
>>> >> > JAX-WS services. The only explanation
>>> >> > >> JDA> I have why it is not being picked up it the absense of
>>> bean.xml
>>> >> > so we could fix that. I will
>>> >> > >> JDA> take a look shorly (if you haven't figured this one out
>>> already).
>>> >> > Thanks.
>>> >> >
>>> >> > >> JDA> Best Regards,
>>> >> > >> JDA> Andriy Redko
>>> >> >
>>> >> >
>>> >> > >> JDA>> I'm not sure either, this is the behavior I see in the
>>> code:
>>> >> >
>>> >> > >> JDA>> - Register JAX-RS resources (with @ApplicationPath)
>>> >> > >> JDA>> - Register JAX-RS resources (with @Path)
>>> >> > >> JDA>> - Register JAX-RS providers (with JAX-RS @Provider)
>>> >> > >> JDA>> - Register JAX-RS features (with JAX-RS @Feature)
>>> >> > >> JDA>> - Register CXF features (doesn't care if it has a CXF
>>> @Provider
>>> >> > annotation but I see the OpenTracing one does have it)
>>> >> > >> JDA>> - Otherwise we assume its the CXF Bus object
>>> >> >
>>> >> > >> JDA>> There's not much happening with a CXF @Provider
>>> declaration in
>>> >> > the extension. But at the end of the day, I'm only
>>> >> > >> JDA>> dealing with a JAX-RS @Provider and that doesn't get
>>> registered
>>> >> > since it's not a CDI bean. I don't see any issue
>>> >> > >> JDA>> registering CXF @Provider this way as well, but its
>>> possible
>>> >> > it's not a CDI bean still, but that's ultimately what the customizer
>>> was
>>> >> > put in for.
>>> >> >
>>> >> > >> JDA>> John
>>> >> >
>>> >> > >> JDA>> On 2017-12-22 09:56, Sergey Beryozkin <
>>> [email protected]>
>>> >> > wrote:
>>> >> > >> >>> Sure, I just don't understand what is the difference between
>>> a
>>> >> > JAX-RS
>>> >> > >> >>> feature and CXF feature, as far as the CXF CDI code is
>>> concerned.
>>> >> > If it
>>> >> > >> >>> can load the JAX-RS features which have not been written
>>> with CDI
>>> >> > in
>>> >> > >> >>> mind, why can't it load CXF features without some extra work
>>> >> > going into
>>> >> > >> >>> these features...
>>> >> >
>>> >> > >> >>> Thanks, Sergey
>>> >> > >> >>> On 22/12/17 14:50, John D. Ament wrote:
>>> >> > >> >>> > That's not really the issue though. The extension will
>>> only
>>> >> > receive CDI managed beans. Take a look at my pull to see what I had
>>> to do
>>> >> > to get it to register automatically. If nothing else, this is an
>>> argument
>>> >> > for moving JAXRSServer Customization into core and using service
>>> loader
>>> >> > :-) Perhaps after the new year.
>>> >> > >> >>> >
>>> >> > >> >>> > On 2017-12-22 09:23, Sergey Beryozkin <
>>> [email protected]>
>>> >> > wrote:
>>> >> > >> >>> >> I was not referring the OpenTracing module offering a CDI
>>> >> > extension, but
>>> >> > >> >>> >> to the work Andriy did in the CXF CDI integration where
>>> the
>>> >> > providers
>>> >> > >> >>> >> and feature are picked up. Thought, when we were
>>> discussing
>>> >> > the SSE
>>> >> > >> >>> >> feature I thought Andriy said it was looking at the CXF
>>> >> > @Provider as
>>> >> > >> >>> >> well, may be I misunderstood.
>>> >> > >> >>> >> Updating the CDI code to check CXF @Provider, if it is not
>>> >> > already
>>> >> > >> >>> >> checked, makes sense IMHO
>>> >> > >> >>> >>
>>> >> > >> >>> >> Sergey
>>> >> > >> >>> >> On 22/12/17 14:08, John D. Ament wrote:
>>> >> > >> >>> >>> Actually one more thing. The CDI extension only looks
>>> for
>>> >> > JAX-RS @Provider not CXF @Provider.
>>> >> > >> >>> >>>
>>> >> > >> >>> >>> On 2017-12-22 09:06, "John D. Ament"<
>>> [email protected]>
>>> >> > wrote:
>>> >> > >> >>> >>>> I'm not sure what the CDI extension has to do with
>>> this. It
>>> >> > has no bean defining annotations, and there is no beans.xml in the
>>> JAR that
>>> >> > it ships with so I'm not sure it would be picked up by the extension.
>>> >> > >> >>> >>>>
>>> >> > >> >>> >>>> There's nothing special done for TomcatwarTest to make
>>> more
>>> >> > JARs available, right?
>>> >> > >> >>> >>>>
>>> >> > >> >>> >>>> On 2017-12-22 08:15, Sergey Beryozkin <
>>> [email protected]>
>>> >> > wrote:
>>> >> > >> >>> >>>>> It is annotated with CXF @Provider annotation - should
>>> be
>>> >> > picked up by
>>> >> > >> >>> >>>>> the CXF CDI extension
>>> >> > >> >>> >>>>>
>>> >> > >> >>> >>>>> Sergey
>>> >> > >> >>> >>>>> On 22/12/17 13:07, John D. Ament wrote:
>>> >> > >> >>> >>>>>> I'm trying to finish up testing CDI injection of
>>> Context
>>> >> > objects. The one
>>> >> > >> >>> >>>>>> area I'm struggling with is the automatic
>>> registration of
>>> >> > this feature. I
>>> >> > >> >>> >>>>>> added a dependency on OpenTracing, just to confirm
>>> that
>>> >> > injection via CDI
>>> >> > >> >>> >>>>>> works (and to be honest, this is one of my use cases,
>>> >> > working with
>>> >> > >> >>> >>>>>> tracing). However, it seems that this feature isn't
>>> >> > automatically
>>> >> > >> >>> >>>>>> registered via CDI. Is there something I have to do
>>> to
>>> >> > make it work?
>>> >> > >> >>> >>>>>>
>>> >> > >> >>> >>>>>> John
>>> >> > >> >>> >>>>>>
>>> >> > >> >>> >>>>>
>>> >> > >> >>> >>>>
>>> >> > >> >>> >>
>>> >> >
>>> >> >
>>> >> >
>>> >> >
>>> >> >
>>> >> >