regelmässige SerialPort-Abfrage

astro22

Grünschnabel
Hallo

Folgendes Szenario:
Auf einem GSM-Modem werden SMS-Nachrichten empfangen, welche eine Alarmmeldung enthalten. Je nach Meldung werden vordefinierte Aktionen durchgeführt.
Diese Aktionen und weiteres befinden sich in einer Datenbank und sollen mittels Webinterface veränderbar sein.

Bis dahin alles noch kein Problem und J2EE war für mich gleich eine optimale Lösung.

Doch da ich noch ziemlich neu bei J2EE bin, sehe ich noch nicht ganz wie ich am besten regelmässig das GSM-Modem (SerialPort) abfrage um neue Alarmmeldungen zu lesen.
Soweit ich verstanden habe, kann/darf ich in einem EJB keinen Thread starten.
Ich möchte also mittels Button auf einer Website den Service für die automatische und regelmässige Abfrage des GSM-Modems starten. Dieser Service sollte natürlich am laufen bleiben, auch wenn der Browser geschlossen wird.

Ich habe irgendwo etwas vom TimerService gelesen, jedoch nicht ganz verstanden ob dies für mein Problem die Lösung wäre.
 
Hallo,

eine Variante wäre den EJB Timer-Service zu benutzen. Dieser kann so konfiguriert werden dass
er in regelmäßigen Abständen eine Aktion durchführt. Eine weitere Variante wäre es auch
auf dem System mit der Schnittstelle ein kleine standalone Anwendung laufen zu lassen die den SerialPort
auf Daten überwacht. Kommt dann eine Nachricht rein, kann diese Anwendung den Server benachrichtigen.
Das könnte dann beispielsweise Synchron über den Aufruf einer Methode eines SessionBeans erfolgen oder
asynchron über das versenden einer JMS Nachricht in eine Queue welches dann von einer MessageDrivenBean
aus der Queue genommen und weiterverarbeitet wird.

Gruß Tom
 
Ein EJB Timer-Service ist keine gute Variante, da man keine Hardware-Zugriffe über irgendeine Java EE Komponenten machen darf. (Man denke nur an Clustering.) Thomas Lösung, über ein externes Programm JMX-Nachrichten zu schicken finde ich ausgezeichnet, eine andere Java EE-Lösung wäre ein Java-Connector über JCA. Das ist aber nun wirklich nicht trivial.

Grüße

Christian
 
Vielen Dank schon mal für eure Antworten.

Dann werde ich es wohl mit einem externen Programm machen.
Die EJBs sollten jedoch auch jederzeit mit diesem externen Programm kommunizieren können, um SMS-Nachrichten zu verschicken.

Ich möchte also beim Start des Programms einen Kommunikationskanal öffnen, der bestehen bleibt solange die Anwendung läuft. Bevor ich mich in JMS einlesen möchte ich noch einmal fragen ob dies wirklich dazu geeignet ist.
 

Neue Beiträge

Zurück