2012-01-16 8 views
2

誰かが私のようなsimular環境で機能するa4j:pushタグを持っていますか?リッチェス4.1とa4j:プッシュ:それを働かせるには?

  • RichFacesの4.1-FINAL
  • のMyFaces 2.1.5
  • 雰囲気0.83
  • のTomcat 7.0.23

任意の提案は非常に歓迎されています。

おかげで、 ミロファンデジー

これは私がテストのために持っているものです。

のweb.xml(EDIT:固定):

... 
<!-- Richfaces push servlet --> 
<context-param> 
    <param-name>org.richfaces.push.jms.disable</param-name> 
    <param-value>true</param-value> 
</context-param> 
<context-param> 
    <param-name>org.atmosphere.useBlocking</param-name> 
    <param-value>true</param-value> 
</context-param> 
<filter> 
    <filter-name>PushFilter</filter-name> 
    <filter-class>org.richfaces.webapp.PushFilter</filter-class> 
    <async-supported>true</async-supported> 
</filter> 
<filter-mapping> 
    <filter-name>PushFilter</filter-name> 
    <servlet-name>Faces Servlet</servlet-name> 
</filter-mapping> 
<context-param> 
    <param-name>org.richfaces.push.handlerMapping</param-name> 
    <param-value>/__richfaces_push</param-value> 
</context-param> 
<servlet> 
    <servlet-name>Push Servlet</servlet-name> 
    <servlet-class>org.richfaces.webapp.PushServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Push Servlet</servlet-name> 
    <url-pattern>/__richfaces_push</url-pattern> 
</servlet-mapping> 
... 

TestPushBean.java:

package com.vetmanager.base.test; 

import java.text.SimpleDateFormat; 
import java.util.Calendar; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 

import org.apache.log4j.Logger; 
import org.richfaces.application.push.MessageException; 
import org.richfaces.application.push.TopicKey; 
import org.richfaces.application.push.TopicsContext; 

/** 
* 
*/ 
@ManagedBean 
@SessionScoped 
public class TestPushBean { 
    private static final Logger LOGGER = Logger.getLogger(TestPushBean.class.getName()); 

    private static final TopicKey TOPIC_KEY = new TopicKey("push"); 

    /** 
    * Constructor init's the topic. 
    */ 
    public TestPushBean() { 
     LOGGER.debug("TestPushBean"); 

     TopicsContext topicsContext = TopicsContext.lookup(); 
     topicsContext.getOrCreateTopic(TOPIC_KEY); 
    } 

    /** 
    * @return String 
    */ 
    public String getNow() { 
     LOGGER.debug("getNow"); 

     Calendar now = Calendar.getInstance(); 
     SimpleDateFormat dateFormatter = new SimpleDateFormat("dd-MMM-yyyy/HH:mm:ss"); 
     return dateFormatter.format(now.getTime()); 
    } 

    /** 
    * 
    */ 
    public void push() { 
     LOGGER.debug("push"); 

     TopicsContext topicsContext = TopicsContext.lookup(); 
     try { 
      topicsContext.publish(TOPIC_KEY, "Test String"); 
     } catch (MessageException e) { 
      LOGGER.error("push: " + e, e); 
     } 
    } 
} 

と: test.xhtml:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html 
    xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:a4j="http://richfaces.org/a4j" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:rich="http://richfaces.org/rich" 
    xmlns:fn="http://java.sun.com/jsp/jstl/functions" 
    xmlns:c="http://java.sun.com/jsp/jstl/core" 
> 

<h:head> 
</h:head> 

<h:body> 
    <h:form> 
     <a4j:push id="push" address="push" onerror="alert(event.rf.data)"> 
      <a4j:ajax event="dataavailable" render="now" execute="@none"/> 
     </a4j:push> 

     Tijd: <h:outputText id="now" value="#{testPushBean.now}"/><br/> 

     <a4j:commandButton value="event" actionListener="#{testPushBean.push()}"/> 
    </h:form> 
</h:body> 

</html> 

答えて

2

このフォーラムの投稿は、サーブレットAPI 2.5 (また、バージョン= 2.5でのweb.xmlを使用している問題)を使用している人からも有用である:

https://community.jboss.org/message/647015#647015

ところで、あなたの特定の

大気を使用する0.8.0-RC1 with RichFaces 4.1.0.Final、大気0.8.3にはRC1との互換性のないAPIがあります!

それ以外の場合は、いくつかの症状を示す必要があります。

+0

ありがとうございます。これは結果的にプッシュ環境になりました:)私は修正で私の質問を更新します。 –

関連する問題