Eine OLTP Message-Driven Bean muss genau eines der folgenden Interfaces implementieren:
AsyncOltpMessageListener
OltpMessageListener
Ein
OltpMessage
-Objekt kann aus einem oder mehrerenOltpMessagePart
-Objekten und/oder einem oder mehrerenOltpMessageRecord
-Objekten bestehen. Während ein OltpMessageRecord beliebig lang sein kann, darf einOltpMessagePart
32767 Bytes nicht übersteigen.Aus
OltpMessagePart-
undOltpMessageRecord-
Objekten können Sie den Nachrichteninhalt als Objekt eines der folgenden Typen abrufen:byte[]
String
ByteContainer
ByteContainer
implementieren, wenn sie mit einer EIS-Anwendung strukturierte Objekte austauschen möchte, die Text und Binärdaten enthalten. In diesem Fall muss eine Code-Konvertierung für die Textinformationen des strukturieren Objekts durchgeführt werden. Bei Objekten des TypsString
wird die Code-Konvertierung von BeanConnect durchgeführt. Weitere Einzelheiten hierzu finden Sie in der JavaDoc zu BeanConnect.Die Reihenfolge, in der OltpMessagePart- und/oder OltpMessageRecord-Objekte zu einem OltpMessage-Objekt hinzugefügt oder von einem OltpMessage-Objekt zurückgegeben werden, entspricht der Reihenfolge, in der die Nachricht gesendet wird bzw. empfangen wurde.
Das Interface
OltpMessageContext
dient zwei Zwecken:Es stellt eine Methode zum Generieren einer Reply Message bereit.
Es ermöglicht den Abruf von Statusinformationen.
OltpMessageContext
nur von der MethodeonMessage()
aus aufrufen.Wenn Sie die Methoden
addMessagePart()
oderaddMessageRecord()
innerhalb der MethodeonMessage()
aufrufen, müssen Sie dieselbeOltpMessage
verwenden, mit der auch die MethodencreateMessagePart()
odercreateMessageRecord()
aufgerufen wurden.Asynchrone OLTP Message-Driven Beans empfangen asynchrone Nachrichten, die unabhängig von der Verfügbarkeit des Auftraggebers eintreffen. Aus diesem Grund kann weder eine Reply Message noch eine durch eine asynchrones OLTP Message-Driven Bean ausgelöste Exception an den Auftraggeber der asynchronen Nachricht zurückgesendet werden.
Wenn zwischen der EIS-Anwendung und BeanConnect transaktional über das OSI TP Protokoll kommuniziert wird, läuft die Methode
onMessage(OltpMessage)
einer dialogbasierten OLTP Message-Driven Bean innerhalb der verteilten Transaktion ab, falls dieser Methode das TransaktionsattributRequired
zugewiesen wurde.Asynchrone OLTP Message-Driven Beans können niemals Teil einer zwischen dem EIS und dem Application Server verteilten Transaktion sein.
Die Methode
onMessage()
einer asynchronen OLTP Message-Driven Bean, die mit dem TransaktionsattributRequired
deployt wurde, wird innerhalb einer Transaktion aufgerufen, die vom Proxy gestartet wurde (niemals vom EIS). Wird die Transaktion zurückgesetzt, so wird die asynchrone Nachricht ggf. erneut an die OLTP MessageDriven Bean ausgeliefert.Die OLTP Message-Driven Bean kann eine solche Situation ermitteln, indem sie den Wert des Redelivery-Zählers eines asynchronen
OltpMessage
-Objekts auswertet. Die Konfigurations-PropertyredeliveryThreshold
, die beim Deployment der OLTP Message-Driven Bean festgelegt wird, definiert die Anzahl der zusätzlichen Auslieferungsversuche für eine Nachricht im Falle einer Störung oder eines Fehlers (siehe „redeliveryThreshold“ im Konfigurations-Properties für Inbound-Kommunikation in ejb-jar.xml definieren).Für den Austausch von Nachrichten, die nicht in ASCII codiert sind, stehen über das Interface
OltpMessageContext
die Methoden des InterfacesEncodingDef
zur Verfügung.
Weitere Einzelheiten hierzu finden Sie in der JavaDoc zu BeanConnect.