Hi Arne,

Both (meecrowave-core and owb-se) implement SeContainer API - this part is
intended.

Nominal case is to have only one of both in the classpath.

The main trick happens
in org.apache.openwebbeans.se.SeInitializerFacade#SeInitializerFacade (and
when you have both meecrowave wins since it supports SE + other features).

If you handle the bootstrap manually you can do
new org.apache.openwebbeans.se.OWBInitializer() to workaround it - sadly
SeContainerInitializer does not have a provider(fqn) method not supports a
system property to override it.
If in a maven project and for tests I suspect you can just implement your
own org.apache.openwebbeans.se.SeInitializerFacade and since maven will put
src/test/resources before deps in the classpath it will use that so you can
control the selection logic.

If not sufficient we can still
extend org.apache.openwebbeans.se.SeInitializerFacade#SeInitializerFacade
logic to read a system property to select the container to use and if not
fallback on current impl, we can even enrich our junit5 integration (@Cdi)
to set this system property around
org/apache/openwebbeans/junit5/internal/CdiExtension.java:70 to ensure we
can set it in the annotation if relevant.

Hope it helps a bit.

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
<https://www.packtpub.com/application-development/java-ee-8-high-performance>


Le jeu. 18 févr. 2021 à 16:46, Arne Limburg <arne.limb...@openknowledge.de>
a écrit :

> Hi,
>
>
> I am observing some issues with
>
> SeContainerInitializer.newInstance().initialize();
>
> When I use it in my tests meecrowave (which is on the classpath) kicks in
> and does some weird stuff with the classpath.
>
> Basically I try to enable an alternative stereotype for my tests and it
> does not work in that scenario neither via beans.xml (in
> src/test/resources/META-INF) nor via
> SeContainerInitializer#selectAlternativeStereotypes.
>
> With either owb-se or meecrowave in the classpath it works as expected
> (with new Meecrowave().bake()).
>
>
> Did a short digging into the code and it seams that two contexts are
> started in that case.
>
>
> Does anyone have an idea what's going on or where I should look at to find
> the problem?
>
> Next question: How is it supposed to work?
>
> In my scenario I want to start a CDI container without a webcontainer, but
> even doing it with owb-internal classes does not work, because it detects
> some meecrowave classes that have servlet injection points that cannot be
> satisfied in that scenario.
>
>
> Imho when using SeContainerInitializer.newInstance().initialize()
> meecrowave should not be started, but I have no idea how to achieve that.
> Should we explicitly exclude every meecrowave class in SE scenarios?
>
>
> I would work on that, but I need an idea in which direction to go.
>
>
> Cheers,
>
> Arne
>
>
> --
>
> Arne Limburg - Enterprise Architekt
>
>
> OPEN KNOWLEDGE GmbH
> Poststraße 1, 26122 Oldenburg
> Mobil: +49 151 - 108 22 942
> Tel: +49 441 - 4082-154
> Fax: +49 441 - 4082-111
> arne.limb...@openknowledge.de
> www.openknowledge.de <https://www.openknowledge.de/>
>
> Registergericht: Amtsgericht Oldenburg, HRB 4670
> Geschäftsführer: Lars Röwekamp, Jens Schumann
>
> Treffen Sie uns auf kommenden Konferenzen und Workshops:
>
> Zu unseren Events<https://www.openknowledge.de/event/>
>
>
>
>
>

Reply via email to