Lukáš Fryč created RF-11933:
-------------------------------
Summary: Push: user-friendly topics initialization on startup
Key: RF-11933
URL: https://issues.jboss.org/browse/RF-11933
Project: RichFaces
Issue Type: Enhancement
Security Level: Public (Everyone can see)
Components: core
Affects Versions: 4.2.0.CR1
Reporter: Lukáš Fryč
Currently, when custom threads (like JMS) out of {{FacesContext}} context tries
to initialize {{PushContext}} e.g. by {{TopicsContext.lookup()}},
initializations fails with:
{code}
11:12:39,189 ERROR [stderr] (MessageProducerThread) Exception in thread
"MessageProducerThread" java.lang.ExceptionInInitializerError
11:12:39,191 ERROR [stderr] (MessageProducerThread) at
org.richfaces.application.push.impl.PushContextFactoryImpl.getPushContext(PushContextFactoryImpl.java:89)
11:12:39,191 ERROR [stderr] (MessageProducerThread) at
org.richfaces.application.push.TopicsContext.lookup(TopicsContext.java:79)
11:12:39,192 ERROR [stderr] (MessageProducerThread) at
org.richfaces.demo.push.TopicsContextMessageProducer.sendMessage(TopicsContextMessageProducer.java:45)
11:12:39,192 ERROR [stderr] (MessageProducerThread) at
org.richfaces.demo.push.MessageProducerRunnable.run(MessageProducerRunnable.java:57)
11:12:39,192 ERROR [stderr] (MessageProducerThread) at
java.lang.Thread.run(Thread.java:662)
11:12:39,192 ERROR [stderr] (MessageProducerThread) Caused by:
java.lang.NullPointerException
11:12:39,192 ERROR [stderr] (MessageProducerThread) at
org.richfaces.application.push.impl.PushContextFactoryImpl.createInstance(PushContextFactoryImpl.java:74)
11:12:39,193 ERROR [stderr] (MessageProducerThread) at
org.richfaces.application.push.impl.PushContextFactoryImpl.access$0(PushContextFactoryImpl.java:71)
11:12:39,193 ERROR [stderr] (MessageProducerThread) at
org.richfaces.application.push.impl.PushContextFactoryImpl$PushContextHolder.<clinit>(PushContextFactoryImpl.java:43)
11:12:39,193 ERROR [stderr] (MessageProducerThread) ... 5 more
{code}
and then any other try for accessing context fails with:
{code}
11:19:45,829 INFO [javax.enterprise.resource.webcontainer.jsf.context]
(http--0.0.0.0-8080-4) Exception when handling error trying to reset the
response.: java.lang.NoClassDefFoundError: Could not initialize class
org.richfaces.application.push.impl.PushContextFactoryImpl$PushContextHolder
at
org.richfaces.application.push.impl.PushContextFactoryImpl.getPushContext(PushContextFactoryImpl.java:89)
[richfaces-core-impl-4.2.0-SNAPSHOT.jar:]
at
org.richfaces.renderkit.PushRendererBase.getPushHandlerUrl(PushRendererBase.java:55)
[richfaces-components-ui-4.2.0-SNAPSHOT.jar:]
at
org.richfaces.renderkit.html.PushRenderer.encodeEnd(PushRenderer.java:89)
[richfaces-components-ui-4.2.0-SNAPSHOT.jar:]
{code}
----
Users can initialize {{PushContext}} with {{web.xml}} param:
* {{org.richfaces.push.initializeOnStartup}}
** we don't initialize on startup automatically, since not every app needs Push
but current impl is quite a bit unfriendly, since it throws the exceptions
above and do not get any solution.
----
I would recommend following improvements:
* sensible default = automatically initialize on startup when
{{org.richfaces.push.jms.enabled = true}}
** when user configures app to use Push JMS integration, it's clear he wants to
use Push
* log error with message describing how to use context-param
{{org.richfaces.push.initializeOnStartup}}
** to allow user configure this option without need for studying documentation
* throw application-specific unchecked exception (e.g.
{{PushContextInitializationException}})
** it will allow to handle these exceptions by application (waiting for
initialization)
* hold {{PushContext}} singleton reference in {{AtomicReference}} instead of in
[static inner
class|https://github.com/richfaces/core/blob/develop/impl/src/main/java/org/richfaces/application/push/impl/PushContextFactoryImpl.java#L43]
** allows app to initialize context once {{FacesContext}} available and do not
fail with {{NoClassDefFoundError: Could not initialize class
PushContextFactoryImpl$PushContextHolder}}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
richfaces-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/richfaces-issues