Show TOC Anfang des Inhaltsbereichs

Hintergrunddokumentation Erzeugung von Acknowledgment-Messages  Dokument im Navigationsbaum lokalisieren

Verwenden Sie für Ihren Adapter die Klasse Connection, wenn für asynchrone Messages das Zurücksenden von Acknowledgment-Messages veranlasst werden soll. Die Klasse stellt Methoden für die Erzeugung von Acknowledgment-Messages zur Verfügung

Methoden der Klasse Connection

Name

Verwendung

ackNotSupported

Der Adapter muss hier pro Message angeben, welche Acknowledgment-Typen er nicht unterstützt. Im Beispieladapter sind dies die Application-Acknowledgment-Typen.

Diese Methode sollte erst am Ende der Message-Bearbeitung aufgerufen werden, nachdem sichergestellt ist, dass keine Exceptions mehr auftreten können, da dann automatisch Error-Delivery-Acknowledgments vom Adapter-Framework gesendet werden.

Hinweis

Öffnen Sie hierzu CCIInteraction.java und suchen Sie nach der Zeichenkette CS_ACKNS.

 

deliveryAck

Das Delivery-Acknowledgment zeigt an, ob eine Message erfolgreich an den letzten Knoten (den Endpunkt) in der Kommunikationskette an die dortige Message-Schicht ausgeliefert wurde. Im Beispieladapter wird angenommen, dass dies der Fall ist, sobald die Datei mit der Message erfolgreich im Dateisystem geschrieben worden ist.

Hinweis

Öffnen Sie hierzu CCIInteraction.java und suchen Sie nach der Zeichenkette CS_ACKDEL.

 

deliveryErrorAck

Wenn eine Message nicht an den Endpunkt ausgeliefert werden kann und der Adapter kann diesen Zustand mit Hilfe des angebunden externen Protokolls erkennen, dann kann er asynchron ein Error-Delivery-Acknowledgment zurücksenden.

Wird noch innerhalb der Message-Bearbeitung eine Java-Exception ausgelöst, so sendet das Adapter-Framework automatisch (sofern dies von XI angefordert wurde) ein Error-Delivery-Acknowledgment mit einem aus der Exception gewonnenen Fehlertext zurück. Der Adapter darf in diesem Fall nicht explizit deliveryErrorAck() aufrufen. Daher ist im Beispieladapter kein explizites Setzen des Error-Delivery- Acknowledgments enthalten.

applicationAck

Das Application-Acknowledgment zeigt an, ob eine Message erfolgreich von der Anwendung im Endpunkt bearbeitet wird. Da der Beispieladapter dies nicht erkennen kann, unterstützt er diesen Typ nicht und deklariert dies mit der Methode ackNotSupported.

applicationErrorAck

Analog zu Application-Acknowledgment, jedoch für den Fehlerfall

Um ein Objekt der Klasse Connection zu instanziieren, gehen Sie analog zur MessageFactory vor. Dies wird im Beispieladapter in der XIMessageFactoryImpl-Klasse gezeigt.

Hinweis

Öffnen Sie hierzu XIMessageFactoryImpl.java und suchen Sie nach der Zeichenkette CS_MSGFCT.

Hinweis

Die Connection-Klasse bietet neben den Acknowledgment-Methoden noch weitere Methoden an. Diese dürfen jedoch von einer Adapter-Framework-konformen Adapterimplementierung nicht genutzt werden.

API-Methoden

Es gibt folgende API-Methoden, über die ein Adapter ein Acknowledgment erkennen kann:

      Message.isAck()

      Message.isAck(Ack Type ack Type)

      Message.isAckRequested()

      Message.is AckRequested(AckType ack Type)

Weitere Informationen finden Sie in der JavaDoc.

Thread-Ressourcen für Acknowledgments

Die Adapter-Implementierung öffnet zur Verarbeitung von Acknowledgments eine Verbindung der Form:

msConnectionFactory = (ConnectionFactory) initctx.lookup(ConnectionFactory.JNDI_NAME);

conn = msConnectionFactory.createConnection("AFW");

...

conn.ackNotSupported(messageKey, acksNotSupported);

Sie können diese Verbindung folgendermaßen ändern:

conn = msConnectionFactory.createConnection(adapterType + "_" + adapterNamespace);

Ändern Sie die Verbindung nicht, wird die Verarbeitung von Acknowledgments über den Thread-Pool des Adapter-Framework durchgeführt.

Hinweis

adapterType und adapterNamespace können sich ändern, wenn sie beispielsweise als MCF-Properties definiert sind.

 

Ende des Inhaltsbereichs