Hi, We had that project before, and we ended up dropping with the justification that the libs should handle all of that.
Not saying not to do it and I just don’t want to see code being blocked again for the same reason :) Cheers, Roberto > On 19 Nov 2018, at 15:31, Bruno Baptista <bruno...@gmail.com> wrote: > > Hi Romain, > > In relation to the name of the lib to be /geronimo-safeguard-tomee/ instead > of /tomee-microprofile-common/ I would advise against it because we can put > other overrides and utility classes on it instead of creating a single lib > for every particular spec/need. > > Feedback is appreciated on the intended scope and name of that library. Let's > see what's the opinion of the community over it. > > In relation to the /DefaultManagedScheduledExecutorService/ configuration, > you are right. Will add it as soon as the injection mystery is solved. Any > feedback on the injection of the alternative bean will be appreciated because > I'm kind of stuck now. > > Cheers > > Bruno Baptista > http://twitter.com/brunobat_ > > > On 19/11/18 15:13, Romain Manni-Bucau wrote: >> rename the lib geronimo-safeguard-tomee or include the common MP jar in the >> scanned modules? >> >> side note: i mentionned it @geronimo: you likely don't want to hardcode a >> default name which will either be replaced by another one, not be the >> default one or not be controllable by the user ( >> DefaultManagedScheduledExecutorService) so probably use tomee to inject a >> configuration (@Resource MicroprofileConfiguration config; in your common >> module) and then lookup the instance using tomee internal (containersystem >> -> jndicontext? for instance). Not a big thing but if not done users will >> have to code this bean themselves to control it I think. >> >> 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 lun. 19 nov. 2018 à 15:24, Bruno Baptista <bruno...@gmail.com> a écrit : >> >>> Hi All, >>> >>> I created a PR to make the discussion easier. It's here: >>> https://github.com/apache/tomee/pull/201 >>> >>> There's another problem with the alternative bean implementation. After >>> including the SafeguardInterceptor in the test, the bean, >>> FailsafeContainerExecutionManagerProvider, is never picked up. >>> >>> I've played a bit with the priorities of both the interceptor and the >>> alternative without success. >>> >>> We still need to figure out a CDI extension to activate the code on >>> TomEE, but first, the existing test has to work on it's own. >>> >>> Cheers. >>> >>> Bruno Baptista >>> http://twitter.com/brunobat_ >>> >>> >>> On 19/11/18 10:56, Bruno Baptista wrote: >>>> Hi Jon, >>>> >>>> I'm not sure what would be the right way to load that code. >>>> >>>> But now that you mention it, a CDI extension sounds the proper way to >>>> do it. The code now loads properly. Thanks! >>>> >>>> Will create a PR soon. >>>> >>>> Bruno Baptista >>>> http://twitter.com/brunobat_ >>>> >>>> >>>> On 19/11/18 10:41, Jonathan Gallimore wrote: >>>>> I haven't seen the code, so its difficult to suggest anything - where >>>>> would you expect it to be loaded - in a CDI extension? >>>>> >>>>> On Mon, Nov 19, 2018 at 10:31 AM Bruno Baptista <bruno...@gmail.com >>>>> <mailto:bruno...@gmail.com>> wrote: >>>>> >>>>> Hi all, >>>>> >>>>> I've created a jira for this task to properly track the commits: >>>>> https://issues.apache.org/jira/browse/TOMEE-2278 >>>>> >>>>> Right now I have a problem activating the code... The code is in >>>>> the lib folder but it's not being loaded into the classpath. >>>>> >>>>> Do I need to create some kind of a service like this? >>>>> >>>>> Or am I missing to declare it in some xml file? >>>>> >>>>> Cheers >>>>> >>>>> Bruno Baptista >>>>> http://twitter.com/brunobat_ >>>>> >>>>> >>>>> On 18/11/18 12:55, Bruno Baptista 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> < >>> 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 à 14:54, Romain Manni-Bucau< >>> rmannibu...@gmail.com> <mailto: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> < >>> 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 à 12:44, Bruno Baptista<bruno...@gmail.com> >>> <mailto: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> <https://twitter.com/rmannibucau> < >>> https://twitter.com/rmannibucau> | Blog< >>> https://rmannibucau.metawerx.net/> <https://rmannibucau.metawerx.net/> < >>> https://rmannibucau.metawerx.net/> <https://rmannibucau.metawerx.net/> >>> | Old Blog<http://rmannibucau.wordpress.com> < >>> http://rmannibucau.wordpress.com> <http://rmannibucau.wordpress.com> < >>> http://rmannibucau.wordpress.com> | Github<https://github.com/rmannibucau> >>> <https://github.com/rmannibucau> <https://github.com/rmannibucau> < >>> https://github.com/rmannibucau> | >>>>>>>>>> LinkedIn<https://www.linkedin.com/in/rmannibucau> < >>> https://www.linkedin.com/in/rmannibucau> < >>> 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> >>> < >>> 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> <mailto:bruno...@gmail.com> <bruno...@gmail.com> >>> <mailto: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_ < >>> http://twitter.com/brunobat_> >>>>>>>>>> >>>>>>>>>>