Swing bei Realtime-Aktualisierung zu langsam?

tobiaft

Mitglied
Hallo!

Das Programm ist soweit fertig, läuft lokal auch ganz gut. Mit folgender Konfiguration treten jedoch große Probleme beim Aufruf aus dem Internet auf:

Server: jBoss 4.0.1 SP1
Umgebung: Java Web Start 1.5
Datenbank: mySQL
GUI: Swing

Die Applikation läuft in Echtzeit, wobei mehrere User auf die Datenbank zugreifen. Ein Update der Tabellen auf der GUI soll sekündlich erfolgen (eigener Thread mittels TimerTask-Klasse).

Die GUI reagiert so schon recht langsam, aber wenn zusätzlich zum sekündlichen Update noch eine Order per Klick auf den Order-Button (siehe Screenshot) gemacht wird, wirft die Web Start-Konsole einen OutOfMemoryError.

Wo liegt der Fehler?
Ist Swing eh ungeeignet für mehrere Threads wie meinen häufigen Update (Kap.15.32 in Java ist auch eine Insel)?
Kann ich Tabellen auch mit dem normalen AWT umsetzen, ist Swing quasi dahingehend ersetzbar?
Kann es an Web Start liegen? Wie kann ich sonst von einer Homepage ein Java-Programm in einem eigenständigen Fenster aufrufen?
Wie kann man in Swing generell eine automatische Aktualisierung (GUI inkl. JTables) nahe Realtime sinnvoll implementieren?

Danke...Tobias
 

Anhänge

  • screenshot.jpg
    screenshot.jpg
    94,7 KB · Aufrufe: 116
Hallo!

Wenn man Swing "richtig" verwendet sollte man damit GUI-Technisch "alles" performant hinbekommen. Scheinbar hast du beim Desing deiner Swing Anwendung ein paar Fehler gemacht.
Was verstehst du genau unter Realtime Update?
Sollen Änderungen in der Zugrundeliegenden Datenbasis sofort an die einzelnen Komponenten Propagiert werden?
Dazu gibt es prinzipiell mal zwei Mechanismen:
Pollen -> Dauerte Nachfrage nach Änderungen
Listener Konzept -> Änderungen werden wenn sie erfolgen durch einene Art Transport Mechanismus zu den "Empfängern" propagiert.

Listener Konzepte sind oftmals die performantere Alternative.

Gruß Tom
 
Realtime Update heisst, dass ein TimerTask sekündlich die JTables updaten soll (u.a. Anzeige der Systemzeit des Servers).
Sollen Änderungen in der Zugrundeliegenden Datenbasis sofort an die einzelnen Komponenten Propagiert werden?
=> Ja, Datenänderungen sollten sofort auf dem GUI angezeigt werden, da es um einen Echtzeithandel geht.

Zunächst habe ich das Windows LookandFeel ausgestellt, was schon einiges gebracht hat. Auf der anderen Seite ist eben noch das Problem mit den DB-Abfragen, wobei Pollen bzw. Listener nächste Woche ausprobiert wird!

Ach ja: die Datenbank wird mit Hilfe des EnterpriseJavaBeans-Konzept angesprochen.

Danke erstmal...Tobias
 
Zurück