# jBoss und externes Nachrichtensystem



## fastjack (21. Jun 2010)

Hallo,

ich möchte ein bestehendes System erweitern, das vom jBoss aus ein externes Nachrichtensystem anspricht. Das externe System ist nicht immer stabil und muß des öfteren neu gestartet werden (was außerhalb meines Einflußbereichs liegt). Diese Instabilität äußert sich darin, das es nach längerer Zeit zum Timeout kommt. Momentan wird aber die ganze jBoss-App blockiert. Die Nachrichten werden in einem jBoss-Service erzeugt und dann durch einen speziellen Java-Aufsatz auf das externe Nachrichtensystem versendet. Die Verbindung erfolgt via Socket-Verbindung, login, logout und spezielle einfache Kommandos, alles Hex-kodiert.
Ich habe jetzt vor eine MessageDrivenBean zu schreiben, die das Senden der Nachrichten übernimmt, also Verbindung aufbauen, Nachricht senden, etc. Dadurch wäre das eigentliche Senden schon mal asynchon. Allerdings bereitet mir das Warten auf den Timeout noch Kopfschmerzen, das dann ja in der MessageDrivenBean stattfinden würde und diese somit blockieren würde. Meine erste Überlegung ist, dieses Verbinden zusätzlich in eine andere asynchrone Bean auszulagern, die dann von der eigentlichen MessageDrivenBean abgefragt wird. Aber irgendwie denke ich, das ist nicht der richtige Weg. 

Meine Idee: 

jBoss-Service --> SendingMDB <--> ConnectionMDB <--> externes Nachrichtensystem

jBoss-Service ruft SendingMDB an, diese holt Verbindung durch ConnectionMDB, diese wiederum kommuniziert mit dem externen Nachrichtensystem.

Was denkt ihr ?

Danke.


----------



## fastjack (21. Jun 2010)

Nachtrag: Wahrscheinlich wird die MessageDrivenBean nicht einzusetzen sein, da nicht feststeht, ob der Aufsatz zum externen System JMS-Messages absenden kann. Nun ist mein Ansatz an dieser Stelle ein TimedObject, also eine Art jBoss-Thread, zu nutzen.


----------



## homer65 (21. Jun 2010)

Wie wäre es die Messages in einer Datenbank zwischenzuspeichern und einen Dienst zu implementieren der nichts anderes macht als die zwischengespeicherten Messages weiterzuleiten.
Vorteil: 
(1) Es wäre asynchron.
(2) Die Datenbank ist hoffentlich stabiler
Nachteil:
(1) Es wird komplexer


----------



## fastjack (21. Jun 2010)

Nach einigem Rumprobieren habe ich eine Möglichkeit gefunden, die jBoss-Jobs parallel zu betreiben. Somit blockiert der Nachrichtenversand nicht mehr die jBoss-App und andere Jobs. Wie das in etwa funktioniert habe ich hier beschrieben:

http://www.java-forum.org/blogs/fastjack/126-jboss-scheduleable-jobs-blockieren-gegenseitig.html


----------

