我正試圖在我的項目中實現主推計數器。我正在使用PrimeFaces3.5,Jboss7.0和Eclipse Indigo版本。PrimePush計數器實現
- 氣氛的註解-1.0.1.jar
- 大氣COMPAT-jbossweb-1.0.1.jar
- 大氣COMPAT-tomcat的:
與黃金推我已經加入罐-1.0.1.jar
- 氣氛-COMPAT-tomcat7-1.0.1.jar
- 氣氛-運行時1.0.1.jar
- primefaces-3.5.jar和JSF和SLF4J罐子
我的XHTML代碼:
<?xml version="1.0" encoding="UTF-8"?>
<!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:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui">
<h:head></h:head>
<h:body>
<h:form id="form">
<h:outputText id="out" value="#{pushBean.count}" />
<p:commandButton value="Click" actionListener="#{pushBean.increment}" />
</h:form>
<p:socket onMessage="handleMessage" channel="/counter" />
<script type="text/javascript">
function handleMessage(data) {
$('.display').html(data);
}
</script>
</h:body>
</html>
我管理的bean:
@ManagedBean(name = "pushBean")
@ApplicationScoped
public class PushBean {
public PushBean() {
}
private int count;
public int getCount() {
return this.count;
}
public void setCount(final int count) {
this.count = count;
}
public synchronized void increment() {
this.count++;
PushContext pushContext = PushContextFactory.getDefault().getPushContext();
pushContext.push("/counter", String.valueOf(this.count));
}
}
當我點擊界面中的按鈕,計數器加在服務器上,但它並沒有反映在UI自動,因爲它沒有更新。但是當我刷新頁面時,計數會按預期遞增。
例外,我得到的是:
13:00:02,298 ERROR [stderr] (http--0.0.0.0-8080-5) [http--0.0.0.0-8080-5] ERROR org.atmosphere.cpr.AtmosphereFramework - AtmosphereFramework exception
13:00:02,298 ERROR [stderr] (http--0.0.0.0-8080-5) java.lang.IllegalStateException: The servlet or filters that are being used by this request do not support async operation
你沒有提到你設置推送的Servlet就像[primefaces用戶指南中介紹](http://primefaces.googlecode.com/files/indexed_primefaces_users_guide_3_5.pdf) - 第5章。你配置了它嗎? – Jens 2013-04-22 07:13:52
是延,我在web.xml 推的Servlet servlet的名稱> org.primefaces.push.PushServlet servlet的類> 的 推的Servlet servlet的名稱> /primepush/* url-pattern的> servlet的映射> –
2013-04-22 07:30:44
您嘗試在web.xml中配置: 的 Push Servlet servlet-name> org.primefaces.push.PushServlet servlet-class> true async-supported> –
2013-04-22 07:56:50