None-GUI-Event Handling

Hallo "Kollegen",

wie sieht es eigentlich in Java mit Event-Handling, ggf. Callbacks aus?
Ich gebe zu, dass ich die letzten Jahre Java völlig vernachlässigt habe und ich mit der .NET (C#)-Schiene "fremdgegangen" bin 😉

Ich suche nach einer Möglichkeit wie in C# via Events und Delegates Nachrichten an den Client weiterzuleiten.
Also in einer Businessklasse meldet man sich z.B. bei ner Bank an, dann möchte ich Statusmeldungen verschicken, wie ...

02:00:11 Anmedldung bei Bank XYZ
02:00:12 Login erfolgreich
02:00:13 Warte auf Captcha-User-Input
02:00:14 Konto XYZ ausgewählt
02:00:15 Einzahlung auf ... usw .. bla

Jetzt läuft das Dingens nicht in irgend einem Server-Container (Message Bean), sondern als ganz normale, leichtgewichtige Anwendung.

Was ist best Practice für dieses Vorhaben?

OK, ich könnte Datei-Nachrichten austauschen oder ein bißchen besser, ich könnte einen eigenen Thread laufen lassen, der einen Message-Stack im Backend (Businessschicht) zyklisch durchgeht, aber das scheint mir alles sehr spartanisch.

Für etwaige Hilfe schon einmal Danke im Voraus!

Edit:
Könnte man für dieses Vorhaben nicht auch ggf. log4j "mißbrauchen" und eigenen Appender schreiben mit customized Loglevel?
 
Zu erst mal die traurige Nachricht: delegates, events und auch Eigenschaften im C# sinn gibt es in Java noch nicht und sind frühesten für Java 8 geplant.

Dann zu deinem eigentlichen Problem: du könntestest dir dein eigenes kleines Framwork dafür schreiben, mit dem Vorbild der AWTEvent Struktur:

Eine Eventquelle (die Bank) und ein Listener Interface, diese hat z.B. ein Methode receiveMessage(...).
Die Listener müssen sich bei einem oder mehreren Bankobjekten anmelden, z.B. über eine Methode addBankListener(BankListener l). Die Bank ruft, wenn sie eine Meldung hat, auf allen angemeldeten Listener die Methode receiveMessage(...) auf.
 
@Kevin94,
genau so werde ich es machen, scheint mir hier am effektivsten zu sein.

@TheDarkRose,
ich glaube in meinem Fall ist das wie mit Kanonen auf Spatzen schießen und außerdem ist der "Hauptserver", derjenige, der letztendlich als Push-Server die Befehler an die (Fat) Clients sendet (diese benutzen dann das jeweilige Backend) ist komplett in .NET-C# implementiert.

Die Kommunikation läuft dann über Sockets. Also finde ich die Lösung hier mit den Interfaces am leichtgewichtigsten und effektivesten für meine Lösung.

Danke an euch beiden :toll:
 

Zurück
Oben