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