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> 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> 
> <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> 
> <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 
> Baptistahttps://twitter.com/brunobat_http://tomitribe.comhttps://tribestream.io
> Bruno Baptistahttp://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> 
> <bruno...@gmail.com> <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