Le lun. 19 nov. 2018 17:58, Bruno Baptista <bruno...@gmail.com> a écrit :
> Thanks Romain, > > It's good to know. Where is that configuration? > https://github.com/apache/tomee/blob/master/container/openejb-core/src/main/resources/default.exclusions and https://github.com/apache/tomee/commit/23f44b17e6ab504561f32aa4ae92f2521e07261e > However, the problem is before that... The test with the interceptor, > somehow fails to load the alternative, which has me very puzzled. > > Cheers. > > Bruno Baptista > http://twitter.com/brunobat_ > > > On 19/11/18 16:45, Romain Manni-Bucau wrote: > > Le lun. 19 nov. 2018 à 16:59, Roberto Cortez <radcor...@yahoo.com.invalid > > > > a écrit : > > > >> 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. > >> > > Point was more that geronimo-* are scanned and not tomee-*, so was more > > technical than semantic ;) - i'm almost happy if you call it > > "makeitwork.jar" :D. > > > > > >>> 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_> > >>>>>>>>>>>> > >> >