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.
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.