JSF - eine Liste aller Sessions, Instanzen bzwFacesContexte bekommen?

xumbu

Mitglied
geht das irgendwie?

wäre zb praktisch wenn ich, aus welchem Grund auch immer ein, redirect an alle Clienten senden möchte.

FacesContext.getCurrentInstance().getExternalContext.redirect("");

FacesContext.getCurrentInstance() lässt mich, wie der name schon sagt, ja leider nur auf die Session zugreifen, aus der der Befehl aufgerufen wurde.

Allerdings müssen die Sessions ja alle irgendwo auf dem Server gespeichert sein.
aber wie greife ich darauf zu?
_____

Der Gedanke kam mir wegen einer simplen Chat Anwendung.
So bräuchte der Empfänger nicht regelmäßig nach neuen Nachrichten prüfen sondern bekommt von Absender selbst den Befehl die neue Nachricht zu lesen.



Oder gibts hier schon fertige Listener für jsf die ich nur noch implementieren muss?
 
Zuletzt bearbeitet:
Du solltest dir mal "Push" anschauen wie z.b. PrimeFaces PUSH.

Mit normalen JSF mitteln kannst du sowas nicht direkt machen. Du kommst zwar an alle Sessions über paar Umwege ran aber du kannst nicht sagen: AlleSessions.redirect();
Dazu müsstest du dann z.b. Attribute in jeder Session speichern und via AJAX polling immer abfragen ob neue Infos in der Session liegt.
 
ok hatte was fundamental falsch verstanden. gut - also dass das ohne ajax nicht machbar ist, ist jetzt klar.

und ja primefaces push hab ich mir schon angeschaut... kann mich allerdings absolut nicht damit anfreunden. meiner meinung nach zu viel configuration und rumgemache für etwas eigentlich total simples.


Im Prinzip müsste ich nur wissen wie ich per JavaScript dynamisch eine JSF backing bean methode aufrufen kann.



ungefähr so:

Code:
@ViewScoped
@ManagedBean
public class Bean
{
    public void test()
    {
          System.out.println(System.currentTimeMillis());
    }
}


Code:
<script>
 
window.setInterval(function()
{
     //hier soll bean.test()  aufgerufen werden.

}, 1000);

</script>



ich hab zwar schon lösungsansätze gefunden wo man über umwege einen button click simmuliert ...
klappt aber auch nicht so richtig.

entweder passiert gar nichts oder bean.test() wird nur einmal aufgerufen...


wäre cool wenn jemand nen funktionierendes Beispiel hat =)
 

Zurück
Oben