You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Thomas Andraschko (Jira)" <de...@myfaces.apache.org> on 2022/10/19 10:32:00 UTC

[jira] [Resolved] (MYFACES-4445) "No CDI container started" when using PushContext async

     [ https://issues.apache.org/jira/browse/MYFACES-4445?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Thomas Andraschko resolved MYFACES-4445.
----------------------------------------
    Resolution: Fixed

> "No CDI container started" when using PushContext async
> -------------------------------------------------------
>
>                 Key: MYFACES-4445
>                 URL: https://issues.apache.org/jira/browse/MYFACES-4445
>             Project: MyFaces Core
>          Issue Type: Task
>          Components: General
>    Affects Versions: 2.3-next-M7
>            Reporter: Milan Siebenbürger
>            Assignee: Thomas Andraschko
>            Priority: Minor
>             Fix For: 2.3.11, 3.0.3, 2.3-next-M8, 4.0.0-RC2
>
>
> Hello, we are trying to replace Omnifaces websockets (o:socket) with Myfaces implementation in our application and we are encountering some problems that prevent us from completing this task. 
>  
> 1. The most serious problem is that the MyFaces implementation does not work when using asynchronous computation (Future interface). Sending a push message ends with a "No CDI container started" exception, while the Omnifaces implementation works flawlessly.
> {code:java}
> java.lang.IllegalStateException: No CDI container started
>         at org.apache.webbeans.container.OwbCDI.getWebBeansContext(OwbCDI.java:44)
>         at org.apache.webbeans.container.OwbCDI.getBeanManager(OwbCDI.java:61)
>         at org.apache.myfaces.push.cdi.PushContextImpl.send(PushContextImpl.java:64){code}
> Do you see any way to make this work, or do we have to stick with OmniFaces in this situation?
>  
> 2. When using another type of push message, in response to a scheduler or jms message, sending the message works, but each time it is sent, this warning message is logged. 
> {code:java}
> org.apache.webbeans.web.context.WebContextsService.lazyStartSessionContext Could NOT lazily initialize session context because NO active request context{code}
> The reason is this part of the code in PushContextImpl:
>  
> {code:java}
> if (CDIUtils.isSessionScopeActive(beanManager)) {
>     sessionTokenBean = (WebsocketSessionBean)CDIUtils.get(beanManager, WebsocketSessionBean.class, false, new Annotation[0]);
>     if (CDIUtils.isViewScopeActive(beanManager)) {
>         viewTokenBean = (WebsocketViewBean)CDIUtils.get(beanManager, WebsocketViewBean.class, false, new Annotation[0]);
>     }
> }{code}
> Method isSessionScopeActive returns false (of course, because there is no session scope active in this case) - it fallbacks correctly to application scoped WebsocketApplicationBean, but this warning message is logged. Is there any way to get rid of this log - other than reconfiguring the logging framework?
> I have created a simple demonstration where you can see these problems. Just download it and run it on Apache Tomcat. -> https://github.com/milansie/websocket-demo
> I'd be grateful for any help or advice or, ideally, for a change in the MyFaces implementation.
>  
> Thank you!
> Milan Siebenbürger
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)