You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltaspike.apache.org by "Mark Struberg (JIRA)" <ji...@apache.org> on 2013/08/10 13:22:48 UTC

[jira] [Commented] (DELTASPIKE-385) Spurious BeanManagerProvider warnings when used in EAR

    [ https://issues.apache.org/jira/browse/DELTASPIKE-385?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13735852#comment-13735852 ] 

Mark Struberg commented on DELTASPIKE-385:
------------------------------------------

What we might try to do is that we also 'flag' parent ClassLoaders. Means checking the parentClassloader and reset the flag for them as well. 

My assumption is that once we get this event to some child classloader CDI Extension, then the CDI handling for the parent classpath must be finished already. 
                
> Spurious BeanManagerProvider warnings when used in EAR
> ------------------------------------------------------
>
>                 Key: DELTASPIKE-385
>                 URL: https://issues.apache.org/jira/browse/DELTASPIKE-385
>             Project: DeltaSpike
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.4
>         Environment: JBoss AS 7.2.0.Final (EAP 6.1.0.Alpha1)
>            Reporter: Richard DiCroce
>            Assignee: Mark Struberg
>
> BeanManagerProvider spams the log with this warning, long after the container has been started:
> "When using the BeanManager to retrieve Beans before the Container is started, non-portable behaviour results!"
> The problem appears to be caused by having deltaspike-core-api in the EAR /lib directory and using BeanManagerProvider from inside a WAR module. The warning gets printed when the booted flag for the appropriate BeanManagerInfo is false, and BeanManagerInfo instances initialize it to false when they are created. The only place the booted flag gets changed to true is in cleanupFinalBeanManagers(), which iterates over all the BeanManagerInfo instances that exist at the time it is called.
> In my case, the only BeanManagerInfo that exists when cleanupFinalBeanManagers() is called is the one that was created when the setBeanManager() observer method was called by the container. But the classloader in use when setBeanManager() was called was the classloader for the entire EAR. Because I don't attempt to use BeanManagerProvider until after cleanupFinalBeanManagers() is called, this means that the BeanManagerInfo for the WAR classloader is created with the booted flag set to false (which is incorrect) and the flag is never changed to true.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira