Pessoal, alguém conhece bem o PrimePush do primefaces ?
Estou dando uma estudada nele e implementei um exemplo do próprio prime, so que está dando um erro que não estou identificando o motivo.
Eu fiz esta classe :
[code]package org.primefaces.examples.view;
import java.io.Serializable;
import org.primefaces.push.PushContext;
import org.primefaces.push.PushContextFactory;
public class GlobalCounterBean implements Serializable {
private static final long serialVersionUID = -5427586947481134443L;
private int count;
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public synchronized void increment() {
System.out.println("INICIANDO increment()");
count++;
PushContext pushContext = PushContextFactory.getDefault().getPushContext();
pushContext.push("/counter", String.valueOf(count));
System.out.println("finalizado increment()");
}
}[/code]
Com este Xhtml :
[code]
<?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:ui=“http://java.sun.com/jsf/facelets”
xmlns:h=“http://java.sun.com/jsf/html”
xmlns:f=“http://java.sun.com/jsf/core”
xmlns:p=“http://primefaces.org/ui”>
<p:growl id=“growl” showDetail=“true” />
<f:view>
<h:head>
<style type=“text/css”>
.display {
font-size: 36px !important;
}
</style>
<script type=“text/javascript”>
function handleMessage(data) {
alert(data);
$('.display').html(data);
}
</script>
</h:head>
<h:body>
<h:form id="form">
<h:outputText id="out" value="#{globalCounter.count}"
styleClass="ui-widget display" />
<br />
<p:commandButton value="Click"
actionListener="#{globalCounter.increment}" />
</h:form>
<p:socket onMessage="handleMessage" channel="/counter" />
</h:body>
</f:view>
</html>[/code]
Este exemplo na verdade é o exemplo counter que tem no manual do Primefaces.
A diferença aqui é que eu estou implementando no GlassFish 3.12
No glasfish eu ativei o Comet na opção da console SERVER-CONFIG/NETWORK-CONFIG/NETWORK-LISTENERS. Nesta opção peguei o listener que esta apontando para a porta 8080 e marquei as opções :Websockets Support e Comet Support
A aplicação sobre, porém que quando clico no botão que deveria atualizar o contador na tela, recebo essa mensagem na console do glassfish
[#|2013-01-20T15:10:53.981-0200|SEVERE|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=93;_ThreadName=Thread-2;|[Atmosphere-AsyncWrite-3] WARN org.atmosphere.cpr.DefaultBroadcaster - This message {"data":"5"} will be lost, adding it to the BroadcasterCache|#]
Não ocorre nenhuma exception, so esta mensagem. Percebo que o contador esta mudando a cada clique no botão, porem ele não atualiza na tela: (This message {“data”:“5”} ).
Alguém tem uma dica, ou consegue ver algo neste código que estou deixando passar ?
Obrigado