Ich benutze javaevent , um eine gerade gesteuerte Shell für den Zugriff auf eine Datenbank zu schreiben. Also, mein Anwendungsfall ist:
Nun, wie kann ich while(!exit){ //do stuff }
Art von Schleife hier vermeiden? Wie verwende ich Java Eventing richtig?
Der direkte Weg kann sein:
%Vor%Aber ich schaue, ob Java Eventing eine bessere Lösung geben kann.
Update1:
Hier ist was ich versuche zu implementieren:
init(); //Initialize the connection with database
while(!exit)
{
//exit = myClass.execute("put(5)"); //This returns false
exit = myClass.execute("exit"); //returns true, i.e. the user wants to exit the shell
}
Nun, hier sehe ich nicht die Verwendung von Java Eventing und ich löste mein Problem, können Sie mir bitte sagen, WIE Java Eventing wird hier im Bild kommen? Ich möchte der Benutzer die auslösen Ereignis.
Ich finde es schwierig zu verstehen, was Sie genau machen wollen, aber ich habe Erfahrung mit javaEventing, und ich werde versuchen, Ihnen so gut wie möglich zu helfen. Will Hartung ist richtig, Sie müssen Ihre Veranstaltungen irgendwo erstellen. Wenn ich Sie also richtig verstehe, möchten Sie Ihre Java-App über die Befehlszeile starten. Dann möchten Sie eine Verbindung zu einer Datenbank herstellen und nach einem einzufügenden Befehl suchen. Wenn Sie sie eingefügt haben, möchten Sie ein Ereignis erstellen. Ist das richtig?
In diesem Fall müssen Sie wahrscheinlich einige Abfragen für die Datenbank durchführen, da normale Datenbanken keine Möglichkeit haben, Ihre Anwendung zu benachrichtigen, wenn eine Bedingung erfüllt ist. Das bedeutet, dass Sie wahrscheinlich eine while-Klausel {} benötigen, in der Sie Abfragen für die Datenbank ausführen und auf eine Ergebnismenge warten, die den gesuchten Befehl enthält. Wenn Sie gefunden werden, können Sie ein Ereignis wie folgt erstellen:
%Vor%Nun erhalten alle anderen Threads, die auf Ihr Ereignis warten (das ReceivedCommandEvent), das Ereignis und können den Befehl aus der Ereignisnutzlast abrufen.
Nun, die Frage ist, warum wollen Sie die Datenbank verwenden, um Befehle trotzdem zu kommunizieren? Verwenden Sie es einfach, um zwischen Anwendungen zu kommunizieren? Wenn Ihre andere Anwendung auch in Java geschrieben ist, können Sie verteilte Ereignisse in Betracht ziehen, sodass eine Java-App Ereignisse an Java-Anwendungen senden kann, die in anderen JVMs auf anderen Computern im Netzwerk ausgeführt werden. Vielleicht möchten Sie sich JED ( Ссылка ) ansehen, was genau das tut.
Ich hoffe, das hilft, Bob
All diese Ereignisbibliothek sendet Ereignisse an Listener. Darüber hinaus benötigen Sie etwas, um die Ereignisse tatsächlich zu erstellen.
In diesem Fall würden Sie Code benötigen, um die Konsole zu lesen und Ereignisse zu generieren, Sie würden möglicherweise etwas anderes brauchen, um auf die Datenbank "zu hören" und Ereignisse daraus zu generieren (vorausgesetzt, Sie haben asynchrone DB-Ereignisse, die Sie suchen, B. Änderungen an Tabellen oder Zeilen).
Dieser Code muss noch geschrieben werden.
Und wenn Ihnen dieses Framework nicht solche Utility-Klassen zur Verfügung stellt, müssen Sie das selbst schreiben, und diese Klassen werden wahrscheinlich genau so sein, wie Sie es beschreiben.
Aber diese Klassen sind alle am Rande des Systems und treiben die Daten an. Der Rest Ihres Codes kann vollständig ereignisbasiert sein.
Tags und Links java event-driven-design