Using RichFaces 4.2 push CDI for non-maven based projects

hi there,

I've posted lately this article about configuring RichFaces 4.1 CDI/Topic context push with non-maven based projects, this article is for applying the new changes for RF 4.2 push which is :


1-Topic context is no longer needed to initialize a CDI push topic.

2-org.richfaces.push.jms.disable context parameter is no longer needed to disable JMS push since it is disabled by default.

3-atmoshpere library updated (PFA).


kindly add this to your project :

1-in your web.xml





2-find the attached file for atmosphere libraries, extract it and copy these files to your WEB-INF/lib directory :


3-PushBean java code :


public class PushBean implements Serializable {
          private static final long serialVersionUID = 1L; 
          private static final String CDI_PUSH_TOPIC = "pushCdi";
          private String userIdentifier;
          private String message; 
          @Push(topic=CDI_PUSH_TOPIC, subtopic="#{pushBean.userIdentifier}")//now Topic getting initialized with this.
          private Event<String> pushEvent;
          public void init() {
                         if(userIdentifier == null) {
                                        userIdentifier = UUID.randomUUID().toString().replace("-", ""); 
          public void sendMessage() throws MessageException {
          public String getUserIdentifier() {
                    return userIdentifier;
          public String getMessage() {
                    return message;
          public void setMessage(String message) {
                    this.message = message;



xthml files has no changes they are same as before.


4-producer.xhtml source code:

<h:form id="prodForm">                              


      <h:outputText id="uid" value="uid: #{pushBean.userIdentifier}" />                                        

      <h:inputText id="msg" value="#{pushBean.message}" />                                        

      <a4j:commandButton id="sendMsg"                                                                                   










important:use uid as a parameter to invoke consumer.xhtml page, ex :http://localhost:8080/rf4/faces/consumer.xhtml?uid=c59d249427544df286782765379c4647

this will ensure that each user has his own topic.


5-consumer.xhtml code:


<h:form id="conForm">                    

     <rich:panel style="width:150px" header="messages">                               

     <a4j:push id="consumer"                                                    



               ondataavailable="jQuery('<li />').prependTo('#messages').text("/>                              

     <ul id="messages"/>                    




try it out .