Gente criei um monstro. rs
Pessoal, eu precisava no managed bean ficar monitorando um serviço socket, até ai beleza.
Crie essa estrutura
[code]@javax.faces.bean.ManagedBean
@ViewScoped
public class ManagedBean implements Serializable {
private static final long serialVersionUID = -5427586947481134443L;
boolean cont = true;
public void start(ActionEvent e) {
int i = 0; // So para testar como esta o loop
while (cont) {
System.out.println(i);
escuterServicoSocket();
i++;
}
}
public void parar(ActionEvent e) {
System.out.println("Cancelando loop do método start");
cont = false;
}
}[/code]
O No jsp iniciei o método start com o primefaes
[code]<p:commandButton actionListener="#{managedBean.parar}" ajax=“true” value=“comando”></p:commandButton>
<p:remoteCommand async="true" autoRun="true" name="init" actionListener="#{managedBean.start}"
global="false" />[/code]
Ao iniciar a página o método Start fica em loop monitorando que eu quero, porem tem um efeito colateral. Quando eu executo o comando parar e mudo a variavel cont para false, esse valor não se reflete no método start. Se eu coloco um break point no metodo start, mesmo depois de mudar o valor da variavel cont para false no método parar, ela continua como true no método start
O pior vem agora. Se eu colocar um break point no método parar depois do primeiro clique, o valor de cont esta mudado para false.