Hi Benjamin,
CDI spec allows you to inject BM as a method parameter in an extension.
There are only limitations on what methods you can/cannot invoke on BM object in certain
point during bootstrap (e.g. in certain observer methods).
Those should be covered here -
http://docs.jboss.org/cdi/spec/2.0/cdi-spec.html#beanmanager
In short, their extension seems to be legit.
What appears to be the case is that AfterDeploymentValidation observer in MyFaces
extension is invoked before one in ProbeExtension (which declares probe as ready).
There is no standard way in which we could enforce extension ordering, at least none that
I can think of now. But it would make sense to ensure Probe goes first for it to work
properly.
We should try to reproduce this with WFLY and myfaces (I think we only test mojarra now),
it is possible we will be seeing the error as well.
We'll look into what could be done here and will keep you posted.
Matej
----- Original Message -----
From: "Benjamin Confino" <BENJAMIC(a)uk.ibm.com>
To: weld-dev(a)lists.jboss.org
Cc: "Tom Evans" <TEVANS(a)uk.ibm.com>, "Emily Jiang"
<EMIJIANG(a)uk.ibm.com>
Sent: Tuesday, August 7, 2018 11:31:39 AM
Subject: [weld-dev] Weld Probe not initalized during AfterDeploymentValidation
Hello
I've been seeing probe not initalized exceptions that occur on CDI 2.0 but
not CDI 1.2, from what I can see when I debug into the issue the problem
occurs in
TransactionalObserverNotifier(ObserverNotifier).notifySyncObservers
In CDI 1.2 I see that the the ArrayList observers has two entries, the first
being ProbeExtension.afterDeploymentValidation
In CDI 2.0 I see four entries, with the first being
org.apache.myfaces.cdi.config.FacesConfigExtension
And when the afterDeploymentValidation method of FacesConfigExtension is
called the result is org.jboss.weld.exceptions.IllegalStateException:
PROBE-000005: Probe is not properly initialized. I've attached a stack from
that error:
And the source is on github:
https://github.com/apache/myfaces/blob/master/impl/src/main/java/org/apac...
So what are the options here? I don't see anything under
http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#after_deployment_validation
saying that you shouldn't invoke beans during after deployment validation
observers. A bit earlier in 11.5 it says "If other beans are injected into
an extension’s observer methods, non-portable behavior results" but it's not
clear if that refers to using the injected bean manager to lookup a bean.
Presumably if weld-probe needs to run first there's some code to ensure it
does? Do we need to do something to integrate with that code, or avoid
integrating myfaces?
Regards
Benjamin
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number
741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
_______________________________________________
weld-dev mailing list
weld-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/weld-dev