# GUI-Nachrichten mit Message Driven Beans?



## tobiaft (10. Feb 2006)

Hallo!

Ich arbeite an einem bestehenden Real-Time-System, das auf EJB basiert, wobei es mehrere Clients (User) geben soll, die per Internet auf das Programm zugreifen sollen. Es geht um eine Art Börsen-/Auktionssystem.

*Jetzt soll implementiert werden, dass der Administrator während der Laufzeit an die GUI von ein oder mehreren Usern Textnachrichten schicken kann.* Die Auswahl der User soll flexibel auf der GUI des Admins vorgenommen werden können.

Was ich bislang über Message Driven Beans gelesen habe, reicht mir nicht aus, um beurteilen zu können, ob MDBs die geeignete Implementierung sind.

_Wie setze ich das am besten & einfachsten um :?:_

Danke...Tobias


----------



## Bleiglanz (10. Feb 2006)

gar nicht, MDBs reagieren auf eingehende Nachrichten - nichts weiter, ausserdem leben die als Komponenten im EJBContainer

die Clients sind erstmal aussen vor, je nachdem wie diese realisiert sind könnte man "ihnen schon was schicken"

am einfachsten: Polling - wenn ihr eh einen J2EE Stack habt, dann richte ein JMSTopic ein und lass die Clients all X Minuten nachschauen, ob eine Message da ist

wenn das Webclients sind, könnte man auch bei jedem Seitenwechsel nachschauen?

am schwierigsten: die Clients sind Fat-Clients und "immer online" und ihr baut einen Callback-Mechanismus ein, so dass "der Server" eine Aktion "beim Client" aufrufen kann

wie gross darf den die Latenz sein (Admin gibt Nachricht ein, wann soll Client was merken)?


----------



## tobiaft (10. Feb 2006)

Da es bei Auktionen/Börsen auf Geschwindigkeit ankommt, wenn sich Preise ändern, darf die Latenz nicht sehr hoch sein.

Es sind keine Webclients. Das ganze ist ein Standalone auf Java WebStart-Basis.


----------



## Bleiglanz (10. Feb 2006)

is schwierig

=> die Clients müssten dann "always on" sein, d.h. die ganze Zeit eine Verbindung zum Server offenhalten, das erzeugt schon eine gewisse Last 

Und das "Polling" ist auch nicht wirklich gut

Wenn ich genug Kohle hätte würde ich das aus der J2EE App rausnehmen und einfach was ICQ ähnliches machen (Jabber-Server aufsetzen und so weiter)


----------



## tobiaft (10. Feb 2006)

Ich habe jetzt herausgefunden, dass onMessage() in dem Projekt in einer GUI-Klasse und nicht in einer Bean steht. Der Adressat der Message wird folgendermaßen abgefragt ('receiver' ist ein String, der den Loginnamen des angemailten Users enthält):

```
public void onMessage(Message message){
   try{
        ...

        if (receiver.equals(loginname){
        ...
        }
}
```

JETZT: *Wer die registrierten Clients sind, soll ja erst zur Laufzeit festgelegt werden, da der Administrator bestimmt, wer die Message erhalten soll. Kann ich als Admin zur Laufzeit noch User bei einem Topic registrieren?
Ich kann ja keinen String aus den ganzen Loginnamen basteln, der in onMessage() abgefragt wird.

Oder funktioniert das mit dem angesprochenen Nachrichtenfilter? Wo finde ich etwas zu diesem Filter?*

Sorry, bin ziemlich frisch in EJB und JMS. Trotzdem muss ich es irgendwie hinbekommen...


----------



## Bleiglanz (10. Feb 2006)

sorry, die Filter für einen Topic werden beim Deployment festgelegt, mir ist nicht bekannt dass man die zur Laufzeit noch ändern könnte

wenn da schon code fertig ist, dann frag doch den der ihn geschrieben hat...


----------



## tobiaft (11. Feb 2006)

Ich kann denjenigen leider nicht fragen, weil er nicht mehr an der Uni ist...


----------

