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_>
> >>>>>>>
> >>>>>>>
> >>>>>>>
>

Reply via email to