Verteilte Verarbeitung mit globaler Transaktionssicherung kann über die Protokolle LU6.1 oder OSI TP betrieben werden. Bei LU6.1 arbeitet openUTM grundsätzlich mit globaler Transaktionssicherung, während bei OSI TP die globale Transaktionssicherung nur gilt, wenn die Funktionseinheit „Commit“ gewählt ist.
Rücksetzen von verteilten Transaktionen
openUTM kann eine verteilte Transaktion aus verschiedenen Gründen zurücksetzen. Dazu zählen z.B. Verstöße gegen Programmierregeln, Verbindungsverlust, Zeitüberschreitung (Timeout) bei der Überwachung der Antwortzeit, Beendigung einer Anwendung oder auch bestimmte Situationen nach einem Failover einer Datenbank bei offenen Transaktionen, siehe "Zusammenarbeit mit Datenbanken und Resource Managern".
Je nach Rücksetzgrund werden entweder Auftraggeber- und/oder Auftragnehmer-Service beendet, weil eine Fortsetzung nicht möglich oder nicht sinnvoll ist, oder Auftraggeber- und Auftragnehmer-Service werden auf den letzten Sicherungspunkt zurückgesetzt und die Kommunikation wird wieder aufgenommen (Service-Wiederanlauf).
Detaillierte Informationen hierzu finden Sie im openUTM-Handbuch „Anwendungen programmieren mit KDCS“. |
Verbindungsverlust
Ein Verbindungsverlust zwischen zwei Anwendungen kann auftreten bei Störung der Übertragungsstrecke oder durch Beenden einer der beteiligten Anwendungen. Der Verlust der Verbindung zwischen den Partnern führt zum Rücksetzen der Transaktion.
Bei Kommunikation über das OSI TP Protokoll wird bei Verbindungsverlust der Auftrag-nehmer-Service in jedem Fall beendet. Bei Nutzung des LU6.1-Protokolls wird der Auftrag-nehmer-Service nur dann beendet, wenn er noch keinen Sicherungspunkt erreicht hat.
Wird der Auftragnehmer-Service beendet, erhält der Auftraggeber-Service eine Fehlernachricht.
Hat der Auftraggeber-Service noch keinen Sicherungspunkt erreicht, so wird er auch beendet. Er kann dann natürlich auch keine Fehlernachricht mehr erhalten. openUTM schickt jedoch eine Meldung an das Terminal oder das Client-Programm, das den Auftrag-geber-Service gestartet hat.
Wiederanlauf unterbrochener Services
Wird die globale Transaktion zurückgesetzt, z.B. wegen Verbindungsverlust, Timeout oder Beendigung einer Anwendung, ohne dass der Auftraggeber-Service beendet wird, so findet ein Service-Wiederanlauf statt. Dabei wird die Kommunikation zwischen dem Client und dem Auftraggeber-Service sowie (bei LU6.1) zwischen Auftraggeber- und Auftragnehmer-Service am letzten Sicherungspunkt wieder aufgenommen.
Der Wiederanlauf findet sofort statt, wenn der Client an der Auftraggeber-Anwendung angeschlossen bleibt. Ist der Client nach dem Rücksetzen nicht mehr an der Auftraggeber-Anwendung angeschlossen, etwa weil die Verbindung zum Client abgebaut wurde, so findet der Wiederanlauf statt, sobald sich der Client erneut anmeldet.
Sessionwiederanlauf (nur bei Kommunikation über LU6.1)
„Session“ ist die Bezeichnung für eine Kommunikationsbeziehung zwischen Anwendungen über das LU6.1-Protokoll. Jede Transportverbindung zwischen den Anwendungen ist genau einer Session zugeordnet. Das Session-Konzept ermöglicht es, bei unterbrochener Kommunikation Informationen über die zuletzt gesichert gesendeten Nachrichten zu speichern. Dadurch kann eine unterbrochene Kommunikation wieder aufgenommen werden.
Nach einem Verbindungsverlust versucht openUTM, die Kommunikation an einem Sicherungspunkt wieder aufzunehmen. Dazu muss zunächst wieder eine Transportverbindung verfügbar sein.
Anlässe für einen Sessionwiederanlauf können sein:
automatische Wiederaufnahme der Kommunikation beim Wiederanlauf von Auftraggeber- und Auftragnehmer-Service
Neustart einer Anwendung, wenn für die ferne Anwendung automatischer Verbindungsaufbau generiert ist
Administrationskommando
erneutes Senden einer Nachricht über die Session
Der Sessionwiederanlauf kann vom fernen Partner abgelehnt werden, weil er zum betreffenden Zeitpunkt den Sessionwiederanlauf noch nicht bearbeiten kann. Dieser Partner kann dann den Sessionwiederanlauf zu einem späteren Zeitpunkt erneut anstoßen.