I say go for it and create your module. Looking forward to reviewing the PR.

Jon

On Mon, Nov 19, 2018 at 10:08 AM Bruno Baptista <bruno...@gmail.com> wrote:

> Hi Jon,
>
> Well, 2 classes for the module. One doing the work and a test.
>
> We have other modules with just 2 classes, like /tomee-overlay-runner/,
> /tomee-util/ and other.
>
> There's probably margin for consolidating some of them, but that's
> probably a discussion for another thread.
>
> Cheers
>
> Bruno Baptista
> http://twitter.com/brunobat_
>
>
> On 19/11/18 09:49, Jonathan Gallimore wrote:
> > I'd be ok with creating a module to include your class file. We'd
> probably
> > just want to keep an eye on it so it doesn't become a bucket of random
> > stuff - so I could see it becoming tomee-microprofile-fault-tolerance, or
> > something like that. Is it just one class file for the module?
> >
> > Jon
> >
> > On Sun, Nov 18, 2018 at 12:55 PM Bruno Baptista <bruno...@gmail.com>
> wrote:
> >
> >> Hi All,
> >>
> >> I came up with a test that successfully overrides the original
> >> /FailsafeExecutionManagerProvider/ Safeguard class.
> >>
> >> It was a bit of a surprise but, in this case, beans.xml is useless
> >> because "The alternatives that you specify in the |beans.xml| file apply
> >> only to classes in the same archive." see:
> >> https://docs.oracle.com/javaee/7/tutorial/cdi-adv002.htm
> >>
> >> Because the beans are in different jar files, priority has to be used
> >> instead:
> >>
> >> @Priority(Interceptor.Priority.APPLICATION+10)
> >>
> >> The precise priority might need to be fine tuned because of the fault
> >> tolerance interceptor... Will have to test the final behavior.
> >>
> >> Also, we probably need to reorganize the tomee-microprofile-webapp
> >> project...
> >> This is needed because the code overriding the bean needs to be in a
> >> library and this project only creates a war file, which is in fact a
> >> container for the bundled libraries. The classes we place in there will
> >> not be in the final server.
> >>
> >> I'm thinking on something like:
> >>
> >> tomee
> >> |
> >> --- tomee-microprofile
> >>                                      |
> >>                                       --- tomee-microprofile-common (The
> >> JAR to be included in .../lib)
> >>                                      |
> >>                                       --- tomee-microprofile-webapp (The
> >> same as now with an additional dependency)
> >>
> >> Cheers.
> >>
> >> Bruno Baptista
> >> http://twitter.com/brunobat_
> >>
> >>
> >> On 16/11/18 16:26, Bruno Baptista wrote:
> >>> Hi Romain,
> >>>
> >>> Yeah... @Resource would be the right thing to use in order to inject
> >>> the managed resource. Something like this:
> >>>
> >>> @Resource(name = "DefaultManagedScheduledExecutorService")
> >>> private ManagedScheduledExecutorService executor;
> >>>
> >>> Creating the test now.
> >>> Thanks for the help Romain.
> >>>
> >>> Bruno Baptista
> >>> http://twitter.com/brunobat_
> >>>
> >>>
> >>> On 16/11/18 16:07, Romain Manni-Bucau wrote:
> >>>> FYI this works:
> >>>>
> >>>>
> >>>> @ApplicationScoped
> >>>> public class CustomProvider extends FailsafeExecutionManagerProvider {
> >>>>       @Override
> >>>>       @Produces
> >>>>       @Specializes
> >>>>       @ApplicationScoped
> >>>>       public ExecutionManager createExecutionManager() {
> >>>>           return new FailsafeExecutionManager() {
> >>>>               @Override // hardcoded impl for testing purposes
> >>>>               public Object execute(final InvocationContext
> >> invocationContext) {
> >>>>                   return "replaced";
> >>>>               }
> >>>>           };
> >>>>       }
> >>>> }
> >>>>
> >>>>
> >>>> Side note: did you want to use @Resource for the executor injection?
> >>>>
> >>>> 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 ven. 16 nov. 2018 à 14:54, Romain Manni-Bucau<
> rmannibu...@gmail.com>
> >> a
> >>>> écrit :
> >>>>
> >>>>> Hi Bruno,
> >>>>>
> >>>>> I assume the alternative is activated in the beans.xml? (if not try
> >> adding
> >>>>> a @Priority maybe or just drop the annotation which should be
> useless)
> >>>>>
> >>>>> If it is i'd start by writing a small test (with application
> composer)
> >> to
> >>>>> check if it is a bug in tomee cause this is how it must work
> >>>>>
> >>>>> 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 ven. 16 nov. 2018 à 12:44, Bruno Baptista<bruno...@gmail.com>  a
> >>>>> écrit :
> >>>>>
> >>>>>> Hi Roman,
> >>>>>>
> >>>>>> This is what I did and it doesn't work. The original bean is always
> >>>>>> picked up:
> >>>>>>
> >>>>>> @Specializes@Alternative@ApplicationScopedpublic class
> >> FailsafeContainerExecutionManagerProvider extends
> >> FailsafeExecutionManagerProvider {
> >>>>>>       @Inject    private ManagedScheduledExecutorService executor;
> >>>>>>
> >>>>>>       @Produces    @ApplicationScoped    @Override    public
> >> ExecutionManager createExecutionManager() throws Exception {
> >>>>>>
> >>>>>>           final MicroprofileAnnotationMapper mapper =
> >> MicroprofileAnnotationMapper.getInstance();
> >>>>>>           final DefaultExecutorServiceProvider
> executorServiceProvider
> >> = new DefaultExecutorServiceProvider(executor);
> >>>>>>           final BulkheadManagerImpl bulkheadManager = new
> >> BulkheadManagerImpl();
> >>>>>>           final FailsafeCircuitBreakerManager circuitBreakerManager
> =
> >> new FailsafeCircuitBreakerManager();
> >>>>>>           final FailsafeRetryManager retryManager = new
> >> FailsafeRetryManager();
> >>>>>>           return new FailsafeExecutionManager(
> >>>>>>                   mapper,
> >>>>>>                   bulkheadManager,
> >>>>>>                   circuitBreakerManager,
> >>>>>>                   retryManager,
> >>>>>>                   new ExecutionPlanFactory(circuitBreakerManager,
> >> retryManager, bulkheadManager, mapper,
> >>>>>>                           executorServiceProvider),
> >>>>>>                   executorServiceProvider);
> >>>>>>       }
> >>>>>> }
> >>>>>>
> >>>>>>
> >>>>>> I feel that this needs to be done in a different way... Would you be
> >> able
> >>>>>> to point me to a similar override currently being done?
> >>>>>>
> >>>>>> Cheers
> >>>>>> Bruno Baptista
> >>>>>> https://twitter.com/brunobat_
> >>>>>> http://tomitribe.com
> >>>>>> https://tribestream.io
> >>>>>> Bruno Baptista
> >>>>>> http://twitter.com/brunobat_
> >>>>>>
> >>>>>>
> >>>>>> On 16/11/18 10:28, Romain Manni-Bucau wrote:
> >>>>>>
> >>>>>> Hi Bruno,
> >>>>>>
> >>>>>> it is a palin bean so @Specializes works, did you put it on the
> >> method?
> >>>>>> Romain Manni-Bucau
> >>>>>> @rmannibucau<https://twitter.com/rmannibucau>  <
> >> https://twitter.com/rmannibucau>  |  Blog<
> >> https://rmannibucau.metawerx.net/>  <https://rmannibucau.metawerx.net/>
> >> | Old Blog<http://rmannibucau.wordpress.com>  <
> >> http://rmannibucau.wordpress.com>  | Github<
> https://github.com/rmannibucau>
> >> <https://github.com/rmannibucau>  |
> >>>>>> LinkedIn<https://www.linkedin.com/in/rmannibucau>  <
> >> https://www.linkedin.com/in/rmannibucau>  | Book<
> >>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >
> >> <
> >>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>>>>
> >>>>>> Le ven. 16 nov. 2018 à 11:00, Bruno Baptista<bruno...@gmail.com>  <
> >> bruno...@gmail.com>  a écrit :
> >>>>>>
> >>>>>> Hi all,
> >>>>>>
> >>>>>> We have a problem with the integration of the Safeguard Fault
> >> Tolerance
> >>>>>> library on TomEE 8 and I need help to solve it. This is a follow up
> to
> >>>>>> the original email thread, from Oct 3, in the Geronimo mailing list,
> >>>>>> where we decided to do perform the override in the container side.
> >>>>>>
> >>>>>> I need to override the starting point for the library, originally
> >> here:
> >>>>>>
> >>
> https://github.com/apache/geronimo-safeguard/blob/master/safeguard-impl/src/main/java/org/apache/safeguard/impl/cdi/FailsafeExecutionManagerProvider.java
> >>>>>> Because it's not using a managed executor service from TomEE... Like
> >>>>>> this one: "java:comp/DefaultManagedScheduledExecutorService"
> >>>>>>
> >>>>>> I Expect to do the wiring in here
> >>>>>> .../apache-tomee/tomee/tomee-microprofile-webapp/src
> >>>>>>
> >>>>>> Like using a @Specializes bean or something, but I think we cannot
> do
> >>>>>> that there. Could someone help me wire up this new bean?
> >>>>>>
> >>>>>> I had a PR to fix this the lib itself but it was decided not to move
> >>>>>> with it. For the curious, it's here:
> >> https://github.com/apache/geronimo-safeguard/pull/2
> >>>>>> Cheers
> >>>>>> --
> >>>>>> Bruno Baptistahttp://twitter.com/brunobat_
> >>>>>>
> >>>>>>
> >>>>>>
>

Reply via email to