DE60013658T2 - Fehlertolerante virtuelle Javamaschine - Google Patents

Fehlertolerante virtuelle Javamaschine Download PDF

Info

Publication number
DE60013658T2
DE60013658T2 DE60013658T DE60013658T DE60013658T2 DE 60013658 T2 DE60013658 T2 DE 60013658T2 DE 60013658 T DE60013658 T DE 60013658T DE 60013658 T DE60013658 T DE 60013658T DE 60013658 T2 DE60013658 T2 DE 60013658T2
Authority
DE
Germany
Prior art keywords
jvm
checkpoint
event
transaction
objects
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60013658T
Other languages
English (en)
Other versions
DE60013658D1 (de
Inventor
Matthew R. Allen Holiday
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nortel Networks Ltd
Original Assignee
Nortel Networks Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nortel Networks Ltd filed Critical Nortel Networks Ltd
Publication of DE60013658D1 publication Critical patent/DE60013658D1/de
Application granted granted Critical
Publication of DE60013658T2 publication Critical patent/DE60013658T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing

Description

  • Technisches Gebiet
  • Die Erfindung bezieht sich allgemein auf virtuelle Java-Maschinen und insbesondere auf eine virtuelle Java-Maschine mit einer eingebauten Unterstützung für einen fehlertoleranten Betrieb.
  • Hintergrund der Erfindung
  • Große komplexe Computersysteme werden durch die Integration von Softwareprogrammen mit einer Hardware-Plattform in Gang gesetzt. Es ist wichtig, dass derartige Systeme zuverlässig sind, und weil viele derartige Systeme „Server" sind, wird von ihnen erwartet, dass sie dauernd über lange Zeitperioden ohne Ausfall oder Unterbrechung laufen. Als Ergebnis werden verschiedene Techniken, wie z. B. die Verwendung von redundanter Spezialzweck-Hardware, verwendet, um einen kontinuierlichen Betrieb sicherzustellen. Derartige Techniken stellen etwas bereit, was allgemein als „Fehlertoleranz" bezeichnet wird, weil sie es ermöglichen, dass derartige Systeme einen Fehler, wie z. B. den Ausfall einer Hardware-Komponente verdecken, das heißt sich hiervon erholen.
  • Eine Fehlertoleranz kann weiterhin durch eine Software-Technologie erreicht werden, die handelsübliche Hardware verwendet, die weniger aufwändig ist. In vielen Fällen verwenden derartige Techniken „Prüfpunkte", bei denen der Systemstatus von einer Instanz einer Anwendung zu einer Reserveinstanz kopiert wird, derart, dass die Reserveinstanz die Verarbeitung unter Verwendung des kopierten Systemstatus als Ausgangspunkt übernehmen kann.
  • Ein Telekommunikationsnetzwerk ist ein Beispiel eines komplizierten Systems, das zuverlässig sein muss. Telekommunikationsnetzwerke erleichtern die Kommunikationen zwischen einer großen Anzahl von öffentlichen und privaten Kommunikationssystemen, indem sie vielfältige Funktionen, wie z. B. die Vermittlung, die Abrechnung, die Zeitverwaltung und dergleichen, bereitstellen. Ein Telekommunikationsnetzwerk stellt derartige Funktionen über Netzwerk-Schaltvermittlungen oder Knoten bereit, die über Verbindungsstrecken oder Kanäle eines Übertragungsmediums miteinander verbunden sind, wie z. B. Draht, Lichtleitfaserkabel oder Funkwellen. Einige der Knoten sind mit einem oder mehreren Benutzern verbunden.
  • Moderne Telekommunikationsnetzwerke erfordern eine komplexe automatisierte Vermittlung und zu diesem Zweck sind Softwareprogramme so geschrieben, dass sie eine zuverlässige verlässliche Betriebsleistung und eine effiziente Nutzung von Ressourcen sowie Dienstmerkmale und Funktionen ergeben, wie z. B. Anklopfen, Anrufer-Identifikation und dergleichen. Derartige Systeme können in einer Anzahl von unterschiedlichen Arten in Abhängigkeit davon konfiguriert sein, welche Arten von Übertragungsmedien verwendet werden, welche Arten von Benutzer mit Diensten versorgt werden, und welche Mischung von Merkmalen gekauft wird. Als Ergebnis derartiger Kompliziertheiten und der großen Anzahl von unterschiedlichen Konfigurationen ist es schwierig, derartige Systeme in zuverlässiger und verlässlicher Weise zu betreiben. Softwareprogramme, die derartige Systeme betreiben, müssen daher extrem zuverlässig sein und eine sehr hohe Fehlertoleranz erzielen.
  • Eine Programmiersprache, die zur Ausgestaltung von Software für derartige Systeme geeignet ist, ist „Java", die von der Firma Sun Microsystems, Inc., Palo Alto, Kalifornien eingeführt wurde. Java wurde als eine objektorientierte, verteilte, interpretierte, robuste, sichere, übertragbare, Architektur-neutrale Multipfad- und dynamische Computersprache beschrieben.
  • Um eine Fehlertoleranz für Softwaresysteme unter Verwendung von Java zu erzielen, kann Anwendungssoftware derart geschrieben werden, dass die gesamten Fehlertoleranz-Fähigkeiten, unter Einschluss der Ableitung von Prüfpunkten, von dem Entwickler in das Anwendungsprogramm eingebaut werden. Die Erfahrung hat jedoch gezeigt, dass dies gegebenenfalls keine optimale Lösung ist. In vielen Fällen erfolgen Änderungen der Anwendungsprogramme ohne korrektes Ändern der Teile des Programms, die die Prüfpunktbildung beeinflussen, so dass die Prüfpunkte nicht genau sind und der in die Sicherungskopie kopierte Systemzustand verfälscht ist. Zusätzlich können in Anwendungssoftware entwickelte Mechanismen auch auf den Software-Quellcode einwirken (weil zusätzlicher Code in einer Weise hinzugefügt wird, die das Verständnis der Betriebsweise des Systems unter normalen Bedingungen verworren macht), oder es können zusätzliche Ineffizienzen in das Softwareprogramm eingeführt werden. Entsprechend wurde fortgesetzt nach der Entwicklung von Verfahren für Mechanismen innerhalb der virtuellen Java-Maschine (JVM) gesucht, die es der JVM ermöglichen, die Prüfpunktbildung in einer Weise zu unterstützen, die weniger störend ist, effizienter ist und mit größerer Wahrscheinlichkeit genaue Prüfpunktdaten berechnet.
  • Eine Veröffentlichung mit dem Titel „On Patterns for Practical Fault Tolerant Software in Java" von Golden Richard, Shengru Tu (XP 010319078) und eine weitere Veröffentlichung mit dem Titel „Primary-Backup Object Replications in Java" von Li Wang, Wanlei Zhou (XP 010302263) diskutieren beide Datenrettungs-verfahren unter Verwendung von Prüfpunkten in Java-basierten Systemen. Die EP 0449660 (Toshiba) beschreibt eine Schattenverarbeitung zur Nachbildung des Zustandes eines Prozesses im Fehlerfall.
  • Zusammenfassung der Erfindung
  • Gemäß der vorliegenden Erfindung wird ein Verfahren zur zuverlässigen und effizienten Unterstützung von fehlertoleranten Mechanismen in einer virtuellen Java-Maschine (JVM) durch Modifizieren der JVM als solcher offenbart. Derartige Modifikationen an einer ersten JVM ermöglichen es in vorteilhafter Weise, dass die erste JVM interne Informationen, die von der ersten JVM unterhalten werden, verwendet, um Prüfpunkte für Objekt zu bilden, die während des Prozesses des Antwortens auf ein Ereignis einer Transaktion erzeugt, modifiziert und/oder gelöscht/verworfen werden. Die Objekte, für die der Prüfpunkt gebildet wurde, werden zu einer zweiten JVM gesandt und in dieser gespeichert, derart, dass die zweite JVM die Verantwortlichkeiten der ersten JVM übernehmen kann, wenn die erste JVM ausfällt. Der Programmierer auf der Anwendungsebene wird somit in vorteilhafter Weise von der Last der Einfügung von Prüfpunkten in den Source-Code und/oder den Objekt-Code eines Anwendungsprogramms entlastet.
  • Gemäß einem ersten Gesichtspunkt der vorliegenden Erfindung wird ein Verfahren geschaffen, das Mechanismen zur Unterstützung eines fehlertoleranten Betriebs für eine erste virtuelle Java-Maschine („JVM") bereitstellt, mit den folgenden Schritten:
    • (a) Modifizieren der ersten JVM zur Verwendung von Informationen, die von der ersten JVM unterhalten werden, um Objekte zu identifizieren, die während des Prozesses eines Reagierens auf ein Ereignis einer Transaktion geschaffen, modifiziert und/oder verworfen werden, wobei diese Objekte zumindest einen Teil eines Prüfpunktes definieren;
    • (b) Liefern des zumindest einen Teils eines Prüfpunktes an zumindest eine zweite JVM; und
    • (c) Speichern des zumindest einen Teils eines Prüfpunktes in der zumindest einen zweiten JVM zur Verwendung durch die zumindest eine zweite JVM bei der Verarbeitung nachfolgender Ereignisse der Transaktion.
  • Bei einer bevorzugten Ausführungsform ist die erste JVM mit einer Schreibsperre versehen, wobei der Schritt des Modifizierens weiterhin die Verwendung der Schreibsperre zur Verfolgung von Objekten umfasst, die während eines Prozesses einer Reaktion auf ein Ereignis einer Transaktion geschaffen, modifiziert und/oder verworfen werden.
  • Kurze Beschreibung der Zeichnungen
  • Zum vollständigeren Verständnis der vorliegenden Erfindung und deren Vorteile wird nunmehr auf die folgende Beschreibung unter Bezugnahme auf die beigefügten Zeichnungen verwiesen, in denen:
  • 1 eine schematische Darstellung ist, die eine Anordnung von virtuellen Java-Maschinen („JVM's") zeigt, die mit einem Netzwerk verbunden sind;
  • 2 ein Ablaufdiagramm ist, das Schritte zur Realisierung einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt; und
  • 318 eine Reihe von schematischen Darstellungen sind, die die Schaffung, Modifikation, das Löschen und die Bewegung von Objekten während der Verarbeitung von Ereignissen zeigen, die eine Netzwerk-Transaktion gemäß verschiedener Ausführungsformen der vorliegenden Erfindung umfasst.
  • Ausführliche Beschreibung
  • In 1 der Zeichnungen bezeichnet die Bezugsziffer 10 allgemein ein System, das ein Netzwerk 20 umfasst, das mit einer ersten virtuellen Java-Maschine („JVM") 30 und einer zweiten JVM 40 verbunden ist, die Merkmale der vorliegenden Erfindung verwirklichen. Das Netzwerk 20 kann beispielsweise ein Telekommunikationsnetzwerk, wie z. B. ein öffentliches landgestützes Mobilfunk-Netzwerk (PLMN) (nicht gezeigt) umfassen, das beispielsweise ein übliches Telefon, eine private Nebenstellenvermittlung (PBX), ein Zugangs-Durchgangsamt, ein Modem eines persönlichen Computers (PC), einen Zugang an das Internet oder dergleichen umfassen kann.
  • Die JVM's 30 und 40 können auf der gleichen oder unterschiedlichen (nicht gezeigten) Computerplattformen realisiert werden, wobei diese Plattformen aus irgendeiner einer Anzahl von unterschiedlichen Computerplattformen ausgewählt werden können, wie z. B. ein persönlicher Computer („PC"), ein Macintosh-Computer, eine Unix-Arbeitsstation oder dergleichen, auf denen irgendein eine Anzahl von unterschiedlichen Betriebssystemen läuft, wie z. B. Unix, Linux, Windows, MacOS oder dergleichen. Derartige Computerplattformen und Betriebssysteme werden als gut bekannt betrachtet und werden daher nicht mit weiteren Einzelheiten beschrieben.
  • Wie dies weiter unten beschrieben wird, schließen die JVM's 30 und 40 einen Stapelspeicher 32 bzw. 42, eine Prüfpunkt-Umgebungsfunktion 34 bzw. 44 und eine Datenabfall-Sammelfunktion 36 bzw. 46 ein.
  • Die Stapelspeicher 32 und 42 sind in einen Teil 32a bzw. einem Teil 42a zur Speicherung eines geeigneten Anwendungsprogramms unterteilt, das zur Verarbeitung von Transaktionen wirksam ist, die von dem Netzwerk 20 an die JVM's 30 und 40 übertragen werden. Es ist nicht erforderlich, dass ein derartiges Anwendungsprogramm irgendeine Funktion einschließt, die für eine Prüfpunktbildung konfiguriert ist, wie dies weiter unten beschrieben wird.
  • Die Datenabfall-Sammelfunktionen 36 und 46 sind für die Verwaltung des Stapelspeichers und zum Freimachen von Stapelspeicher verantwortlich, der von Datenobjekten belegt ist, die nicht mehr von der laufenden Anwendung verwendet werden. Irgendeine Anzahl von unterschiedlichen Arten von Datenabfall-Sammelfunktionen ist verfügbar und kann zur Verwendung in den JVM's 30 und 40 realisiert werden; beispielsweise können Generationskopien erzeugende Datenabfall-Sammelfunktionen verwendet werden, die „aktive" Objekte (beispielsweise Wurzelobjekte und Objekte, auf die von einem anderen Objekt verwiesen oder auf dieses gezeigt wird) von einem „neuen" Teil des Speichers zu einem „alten" Teil des Speichers befördern. Aus Gründen der Erläuterung, und weil dies bevorzugt wird, wird die vorliegende Erfindung unter Verwendung einer derartigen Generationskopien erzeugenden Datenabfall-Sammelfunktion beschrieben. Zu diesem Zweck sind die Stapelspeicher 32 und 42 weiterhin in „NEU"-Speicher 32b bzw. 42b und „ALT"-Speicher 32c bzw. 42c zur Verwendung durch die jeweiligen Datenabfall-Sammelfunktionen 36 und 46 unterteilt.
  • Derartige Generationskopien erzeugende Datenabfall-Sammelfunktionen 36 und 46 verwenden vorzugsweise eine (nicht gezeigte) „Schreibsperre", die in der Technik gut bekannt ist, und mit der alle Änderungen von Daten in den Stapelspeichern, die von der jeweiligen Datenabfall-Sammelfunktion verwaltet werden, nachverfolgt werden. Wenn dies möglich ist, verwendet die vorliegende Erfindung die Schreibsperre der Datenabfall-Sammelfunktionen 36 und 46 erneut, um auf diese Weise die Effizienz des Systems 10 zu verbessern. Alternativ können die JVM's 30 und 40 eine Datenabfall-Sammelfunktion verwenden, die keine Schreibsperre vorsieht, und eine Schreibsperre kann in einer gut bekannten Weise zu der nachfolgend beschriebenen Prüfpunkt-Bildungsfunktion hinzugefügt werden.
  • Das Software-Anwendungsprogramm, das sich in den Speichern 32a und 42a befindet, verwendet vorzugsweise ereignisgesteuerte Modelle mit einem „Ablauf bis zur Ausführung"-Modell der Verarbeitung, wobei, sobald ein Ereignis empfangen wird, es bis zum Abschluss verarbeitet wird, ohne dass sich eine Unterbrechung durch andere Pfade oder Prozesse in der JVM ergibt, und eine Antwort wird in passender Weise erzeugt. Der Punkt des Empfangs eines derartigen Ereignisses und der Punkt des Abschlusses der Verarbeitung eines derartigen Ereignisses definieren zwei Zeitpunkte, wobei zwischen diesen Zeitpunkten das Anwendungsprogramm Datenobjekte, die in den Stapelspeichern 32 und 42 gespeichert sind, hinzufügt, modifiziert und/oder verwirft, und auf diese Weise den Zustand des Programms ändert. Gemäß der vorliegenden Erfindung werden derartige hinzugefügte, modifizierte und verworfene Datenobjekte durch die Schreibsperre der Datenabfall-Sammelfunktion verfolgt, wie dies weiter unten erläutert wird. Die Sammlung einer Kopie der Datenobjekte, die während eines Ereignisses hinzugefügt, modifiziert und verworfen werden, stellt die Änderung des Zustandes des Programms dar, und wird hier als ein Prüfpunkt bezeichnet. Der Prüfpunkt, wie er hier verwendet wird, stellt damit den Unterschied dar, der während der Ausführung eines Software-Anwendungsprogramms zwischen zwei Zeitpunkten hinsichtlich des Zustandes dieses Programms auftritt, wobei dieser Zustand durch die Datenobjekte in dem Stapelspeicher 32 und 42 der jeweiligen JVM's 30 und 40 dargestellt ist. Der Prüfpunkt kann somit zur Aktualisierung des Zustandes des Programms in einer anderen JVM verwendet werden. Weil das Anwendungsprogramm hier so betrachtet wird, als ob es jedes Ereignis bis zum Abschluss ablaufen lässt, wird der Zustand des Anwendungsprogramms, der erforderlich ist, um das nächste Ereignis zu verarbeiten, von Objekten auf dem Stapel erfasst, so dass es nicht erforderlich ist, den Prozessor-Stapel, die Maschinenregister und dergleichen zu dem Prüfpunkt zu kopieren.
  • Um die Erzeugung des Prüfpunktes zu erleichtern, ist die Prüfpunkt-Umgebung 34 in drei Speicherteile aufgeteilt, nämlich einen „HINZUFÜGEN"-Teil 34a, einen „MODIFIZIEREN"-Teil 34b und einen „VERWERFEN"-Teil 34c. In ähnlicher Weise ist die Prüfpunkt-Umgebung 44 in drei Speicherteile aufgeteilt, nämlich einen „HINZUFÜGEN"-Teil 44a, einen „MODIFIZIEREN"-Teil 44b und einen „VERWERFEN"-Teil 44c. Obwohl sie nicht als solche gezeigt sind, können die Speicherteile der Prüfpunkt-Umgebungen 34 und 44 in die Stapelspeicher 32 und 42 innerhalb der jeweiligen JVM's 30 und 40 integriert werden, und sie können verschiedene in der Technik gut bekannte Datenstrukturen verwenden, um Sammlungen von Objekten in jedem Teil nachzuverfolgen. Aus Gründen der Erläuterung wird hier angenommen, dass eine getrennte Prüfpunkt-Umgebung 34 und 44 für jede Transaktion existiert, obwohl dies nicht erforderlich ist. Weiterhin zeigt zu Erläuterungszwecken das nachfolgend erläuterte Beispiel keine verschachtelte Verarbeitung von Ereignissen für mehrfache Transaktionen, obwohl dies normalerweise der Fall sein würde; statt dessen wird, wie dies hier gezeigt, eine Transaktion verarbeitet, bevor das System 10 eine neue Transaktion annimmt.
  • Obwohl dies nicht gezeigt ist, schließen die JVM's 30 und 40 außerdem eine System-Schnittstelle, eine Ausführungsmaschine (zur Ausführung von Befehlen, die in Verfahren von geladenen Klassen enthalten sind), Pfade und dergleichen. Weiterhin schließen die JVM's 30 und 40 eine Einrichtung ein, die eine Kenntnis der internen Struktur aller Datenobjekte des Anwendungsprogramms in dem Speicher 32a und 42a aufrechterhält und führt. Diese Einrichtungen sind durch die Architektur der jeweiligen JVM entsprechend gut bekannter Spezifikationen definiert, denen eine JVM gehorchen muss, um Java-Software ablaufen zu lassen.
  • Gemäß der vorliegenden Erfindung wird die die JVM's 30 und 40 definierende Software modifiziert, um viele Merkmale zu verwenden, die üblicherweise durch die jeweiligen JVM's bereitgestellt werden, um die JVM's mit der Fähigkeit zu versehen, Transaktionen mit Prüfpunkten zu versehen. Zu diesem Zweck ist 2 ein Ablaufdiagramm, das Schritte zeigt, die von den JVM's 30 und 40 realisiert werden, unter Modifikation gemäß der vorliegenden Erfindung für die Prüfpunkt-Bildung. Aus Gründen der Exaktheit wird die Betriebsweise der vorliegenden Erfindung unter Verwendung einer Transaktion „T" von einem Beispiel verdeutlicht, die drei Ereignisse (das heißt Mitteilungen) umfasst, wie z. B. ein einfacher Telefonanruf mit einem „Handapparat-Abhebe-Ereignis", einer „Antwort-Mitteilung" und einem „Einhängen", wobei es verständlich ist, dass eine Transaktion mehr oder weniger als drei Ereignisse umfassen kann. Für die Zwecke der Erläuterung werden die Zwischenverbindungen zwischen dem Netzwerk 20 und den JVM's 30 und 40 nachfolgend nicht mehr gezeigt, sofern nicht eine Mitteilung zwischen diesen Teilen ausgetauscht wird.
  • Gemäß 2 beginnt im Schritt 202 die Ausführung und sie geht zum Schritt 204 über, in dem übliche Protokolle verwendet werden, um festzustellen, welche der JVM's 30 und 40 das nächste Ereignis einer Transaktion verarbeitet, das von dem Netzwerk 20 empfangen wird. Eine derartige Feststellung kann beispielsweise auf der Verfügbarkeit einer JVM beruhen, oder sie kann so durchgeführt werden, dass die Verwendung einer JVM vermieden wird, die unzuverlässig ist oder die ausgefallen ist. Techniken zur Durchführung einer derartigen Feststellung, wie z. B. das „Prozessgruppen"-Modell sind in der Technik gut bekannt und werden hier nicht ausführlich erläutert. Bei dem vorliegenden Beispiel wird angenommen, dass zu Anfang die erste JVM 30 die nächste Transaktion verarbeitet, und sie wird somit als primäre JVM bezeichnet, während die zweite JVM 40 als eine Reserve-JVM bezeichnet wird.
  • Im Schritt 206 warten die JVM's 30 und 40 auf den Empfang eines ersten Ereignisses einer nächsten Transaktion von dem Netzwerk 20. Bei der Übertragung eines ersten Ereignisses einer nächsten Transaktion von dem Netzwerk 20, wie dies in 3 gezeigt ist, empfangen beide JVM's 30 und 40 das Ereignis und speichern es in den jeweiligen Stapelspeichern 32 und 42.
  • Im Schnitt 208 wird eine Feststellung durch die erste JVM 30 getroffen, ob das im Schritt 206 empfangene Ereignis das erste Ereignis einer neuen Netzwerk-Transaktion T ist. Wenn festgestellt wird, dass das empfangene Ereignis ein erstes Ereignis einer neuen Transaktion T ist, so geht die Ausführung zum Schritt 210 über, anderenfalls geht die Ausführung zum Schritt 212 über. Im Schritt 210 wird in den NEU-Speichern 32b und 42b Platz zum Speichern von Objekten zugeteilt, die erzeugt werden, während Ereignisse der Transaktion T verarbeitet werden, wie dies weiter unten erläutert wird. Nach der Zuteilung der NEU-Speicher 32b und 42b im Schritt 208 geht die Ausführung zum Schritt 212 über.
  • Im Schritt 212 beginnt die Schreibsperre mit der Verfolgung der Schaffung, Modifikation und des Löschens von Datenobjekten, die der Transaktion T zugeordnet sind, während das derzeitige Ereignis verarbeitet wird, um auf diese Weise kontinuierlich die Prüfpunkt-Umgebung 34 zu aktualisieren. Alle neuen Objekte werden zu dem HINZUFÜGEN-Teil 34a hinzugefügt, alle modifizierten Objekte werden zu dem MODIFIZIEREN Teil 34b hinzugefügt, und die Identität aller gelöschten Objekte wird in dem VERWERFEN-Teil 34c aufgezeichnet.
  • Im Schritt 214 wird das derzeitige Ereignis als das erste Ereignis in der Folge des vorliegenden Beispiels in einer gut bekannten Weise durch ein geeignetes Anwendungsprogramm verarbeitet, das in dem Speicher-Teil 32a der JVM 30 gespeichert ist. Die Verarbeitung des Ereignisses im Schritt 214 läuft vorzugsweise bis zum Abschluss ab. Während das Ereignis auf diese Weise verarbeitet wird, werden Datenobjekte, für die als Beispiel hier die Objekte 1, 2 und 3 angegeben sind, für die Transaktion T geschaffen, wie dies in 4 gezeigt ist, wobei das Objekt 1 auf das Objekt 2 „zeigt" und das Objekt 2 auf das Objekt 3 „zeigt". Die Schaffung von Datenobjekten und Zeigern zwischen Datenobjekten wird als in der Technik gut bekannt betrachtet und wird daher hier nicht näher erläutert. Auf das Objekt 1 selbst kann durch Daten gezeigt werden, die in dem Stapel- oder Registersatz des Prozessors unterhalten werden, so dass ein Datenabfall-Sammel-Algorithmus es als ein „aktives" Objekt lokalisieren kann. Im Schritt 216 wird nach Abschluss der Verarbeitung des ersten Ereignisses im Schritt 214 eine passende Antwort erzeugt und an das Netzwerk 20 ausgesandt, wie dies in 5 gezeigt ist.
  • Im Schritt 218 führt die JVM 30 eine Feststellung durch, ob das derzeitige Ereignis das letzte Ereignis der Transaktion T ist, die verarbeitet wird. Wenn festgestellt wird, dass das derzeitige Ereignis nicht das letzte Ereignis ist, geht die Ausführung zum Schritt 204 über; anderenfalls geht die Ausführung zum Schritt 220 über. Im Schritt 220 ist die Verarbeitung der Transaktion T abgeschlossen, und alle der Transaktion T zugeordneten Datenobjekte werden aus beiden JVM's 30 und 40 verworfen oder gelöscht, und die Ausführung kehrt zum Schritt 204 zurück. Für das vorliegende Beispiel stellt das zuletzt verarbeitete Ereignis (das heißt das erste Ereignis) nicht das letzte Ereignis der Transaktion T dar, und die Ausführung geht von dem Schritt 218 auf den Schritt 222 über.
  • Im Schritt 222 wird die Datenabfall-Sammelfunktion 36 ausgeführt, um irgendwelche „toten" Objekte (das heißt Objekte, auf die nicht durch ein anderes Objekt gezeigt wird) von dem NEU-Speicher 32b zu entfernen, bevor der Prüfpunkt berechnet wird. Dieser Schritt 222 vermeidet den Fall, bei dem Objekte, die nicht länger Teil des Zustandes der Transaktion sind, zu der Reserve-JVM kopiert werden, so dass die Gesamteffizienz des Prüfpunkt-Prozesses verbessert wird. Entsprechend werden die Datenobjekte 1, 2 und 3 von dem NEU-Speicher 32b zu dem ALT-Speicher 32c gemäß 6 „befördert" (das heißt bewegt). Die hier zu Erläuterungszwecken gezeigte Verwendung einer Generationskopie-Datenabfall-Sammelfunktion schließt nicht die Verwendung anderer Techniken aus. Die Verwendung einer derartigen Sammeleinrichtung mit Sammlungen, die an den Zyklus der Ereignisverarbeitung gebunden sind, kann jedoch sowohl die Effizienz dieses Sammelns als auch die der Prüfpunkt-Bildungsfunktion verbessern, die in dieser Erfindung beschrieben wird. Die Datenabfall-Sammlung wird als in der Technik gut bekannt betrachtet und wird daher hier nicht mit weiteren Einzelheiten beschrieben. Im Schritt 224 wird der Inhalt des Prüfpunktes berechnet, und die Schreibsperre unterbricht die Verfolgung von Änderungen an dem Stapelraum (für die Zwecke der Prüfpunkt-Bildung). Die Berechnung des Prüfpunktes verwendet die Daten in den HINZUFÜGEN- (34a), MODIFIZIEREN- (34b) und VERWERFEN- (34c) Teilen der Prüfpunktumgebung 34, um Änderungen an dem Programmzustand zu identifizieren, so dass, wie dies weiter unten erläutert wird, Objekte in den HINZUFÜGEN- und MODIFIZIEREN-Teilen zur Reserve-JVM 40 kopiert werden können, während in dem VERWERFEN-Teil identifizierte Objekte von der Reserve-JVM 40 entfernt werden können. 7 zeigt den Zustand der Prüfpunkt-Umgebung im Schritt 224 nach der Verarbeitung des ersten Ereignisses.
  • Im Schritt 226 werden die in der Prüfpunkt-Berechnung des Schrittes 224 identifizierten Objekte „rangiert". Entsprechend wird jedes identifizierte Objekt codiert, um sicherzustellen, dass es erfolgreich von einer JVM zur anderen übertragen werden kann, selbst wenn die JVM's auf heterogenen Computerplattformen laufen.
  • Irgendeine geeignete Codiertechnik, wie z. B. die Serialisierung, die derzeit in Java für das Aufrufen entfernter Verfahren (RMI) verwendet wird, kann zur Codierung der identifizierten Objekte verwendet werden. In dem Prozess der Codierung werden Zeiger zwischen Objekten in Objekt-Identifikationen oder „Etiketten" umgewandelt, die nicht von Maschinenadressen (das heißt Adressen zu den Speicherräumen in einer bestimmten Maschine) abhängig sind, so dass eine die Objekte empfangende JVM die Zeiger-basierten Zuordnungen zwischen Objekten neu schaffen kann. Techniken zur Codierung von Objekten und zur Darstellung von Zeigern sind in der Technik gut bekannt und werden hier nicht weiter erläutert. Objekte werden vorzugsweise innerhalb der JVM 30 unter Verwendung der internen Kenntnis der JVM über Objekt-Strukturen und die Effizienz seines internen Software-Codes rangiert. Der Prüfpunkt wird aus den codierten zu kopierenden Objekten (von den HINZUFÜGEN- und MODIFIZIEREN-Speicherteilen 34a und 34b) und den Datensätzen, die zu verwerfende Objekte (aus dem Speicherteil 34e) identifizieren, zusammen mit irgendwelchen Verwaltungsdaten gebildet, die erforderlich sind, um den zumindest einen Teil eines Prüfpunktes zu verwalten.
  • Im Schritt 228 wird der im Schritt 224 erzeugte Prüfpunkt, der alle Objekte, die in den HINZUFÜGEN- und MODIFIZIEREN-Speicherteilen 34a und 34b gespeichert und in dem VERWERFEN-Speicherteil 34c der Prüfpunkt-Umgebung 34 identifiziert sind, den jeweiligen Speicherteilen 44a, 44b und 44c der Prüfpunkt-Umgebung 44 der zweiten JVM zur Speicherung und Aufzeichnung in diesem zugeführt, wie dies in 8 gezeigt ist. Verschiedene in der Technik gut bekannte Kommunikationsprotokolle stehen zur Zustellung der Prüfpunkt-Mitteilung zur Verfügung. Die HINZUFÜGEN- (34a), MODIFIZIEREN- (34b) und VERWERFEN- (34c) Teile der Prüfpunkt-Umgebung 34 werden Daten befreit, die dem derzeitigen (das heißt dem ersten) Ereignis der Transaktion zugeordnet sind.
  • Im Schritt 230 wird der in der Prüfpunkt-Umgebung 44 gespeicherte Prüfpunkt zu dem ALT-Speicher 42c der zweiten JVM 40 bewegt, wie dies in 9 gezeigt ist. Zusätzlich werden die Zeiger modifiziert, so dass Etiketten, die Objekte identifizieren, auf die gezeigt wird, durch Positionsadressen in dem ALT-Speicher 42c ersetzt werden, so dass von der ersten JVM verwendete Zeiger in richtiger Weise so umgewandelt werden, dass sie auf die gleichen Objekte in der zweiten JVM 40 zeigen.
  • Die Ausführung der vorstehenden Schritte 228 und 230 erfolgt unmittelbar nach dem Schritt 226, so dass der Transaktions-Status des Speichers in den JVM's 30 und 40 zu allen Zeiten praktisch identisch ist. Bei Abschluss des Schrittes 230 kehrt die Ausführung zum Schritt 204 zurück.
  • Es ist zu erkennen, dass der Zustand der Transaktion T in den ALT-Speichern 32c und 42c der JVM's 30 und 40 gemäß 9 praktisch identisch ist. Daher kann irgendeine der JVM's 30 und 40 das nächste Ereignis der Transaktion verarbeiten. Dies ist besonders vorteilhaft, wenn die JVM 30 ausfallen würde oder auf andere Weise nicht mehr verfügbar sein würde, um das nächste Ereignis der Transaktion T zu verarbeiten, das von dem Netzwerk 20 übertragen wird.
  • In dem Fall, in dem die erste JVM 30 ausfällt, bevor sie vollständig das erste Ereignis verarbeitet hat und einen Ausgang und einen Prüfpunkt erzeugt hat, so muss dieses Ereignis von der Reserve-JVM 40 verarbeitet werden. Die Koordinationsfunktion, die vorstehend in dem Schritt 204 beschrieben wurde, und die beispielsweise das „Prozessgruppen"-Modell der Software-Fehlertoleranz verwendet, ist für die Abwicklung eines derartigen Ausfalls verantwortlich. Wenn (wie dies in dem vorliegenden Beispiel gezeigt wurde) das Ereignis das erste Ereignis der Transaktion ist, so wird die Reserve-JVM 40 effektiv zur primären JVM und verarbeitet die Transaktion, als ob einer der vorstehend beschriebenen Schritte erfolgt wäre.
  • Im Schritt 204 warten die JVM's 30 und 40 auf das nächste Ereignis der Transaktion T von dem Netzwerk 20. Bei Empfang des nächsten Ereignisses, das heißt des zweiten Ereignisses in der Folge des vorliegenden Beispiels, werden übliche Protokolle ausgeführt, um festzustellen, welche der JVM's 30 und 40 das nächste Ereignis der Transaktion T verarbeiten wird, das von dem Netzwerk 20 empfangen wird. In dem vorliegenden Beispiel wird angenommen, dass die JVM 30 nicht ausgefallen ist und zur Verfügung steht und daher die Transaktion T weiter verarbeitet. Daher wird die JVM 30 für die Verarbeitung des nächsten Ereignisses der Transaktion T bestimmt und bleibt weiter die primäre JVM, während die zweite JVM 40 weiterhin als Reserve-JVM wirkt.
  • Im Schritt 206 warten die JVM's 30 und 40 auf den Empfang des zweiten Ereignisses der Transaktion T von dem Netzwerk 20. Bei der Übertragung des zweiten Ereignisses der Transaktion T von dem Netzwerk 20, wie dies in 10 gezeigt ist, empfangen beide JVM's 30 und 40 das Ereignis und zeichnen es in den jeweiligen Stapelspeichern 32 und 42 auf.
  • Im Schritt 208 erfolgt eine Feststellung durch die erste JVM 30, ob das im Schritt 206 empfangene Ereignis das erste Ereignis einer neuen Netzwerk-Transaktion T ist. Weil im vorliegenden Beispiel das derzeitige Ereignis ein zweites Ereignis und nicht ein erstes Ereignis ist, geht die Ausführung zum Schritt 212 über. Im Schritt 212 beginnt die Schreibsperre der ersten JVM 30 mit der Verfolgung der Erzeugung, Modifikation und Löschung von Datenobjekten, die der Transaktion T zugeordnet sind, während das derzeitige zweite Ereignis verarbeitet wird.
  • Im Schritt 214 wird das derzeitige Ereignis als das zweite Ereignis in der Folge des vorliegenden Beispiels in einer in der Technik gut bekannten Weise durch das Anwendungsprogramm verarbeitet, das in dem Speicherteil 32a der ersten JVM 30 gespeichert ist. Während das zweite Ereignis in dieser Weise verarbeitet wird, wird das Datenobjekt 2 zum Datenobjekt 2' geändert, und der Zeiger von dem Datenobjekt 2' wird neu auf das neue Datenobjekt 4 gerichtet, das in dem NEU-Speicher 32b für die Transaktion T geschaffen wird, wie dies in 11 gezeigt ist. Das Daten-(Wurzel-) Objekt 1 bleibt unverändert. Im Schritt 216 wird beim Abschluss der Verarbeitung des zweiten Ereignisses im Schritt 214 eine passende Antwort erzeugt und an das Netzwerk 20 übertragen, wie dies in 12 gezeigt ist. Während der Verarbeitung des Ereignisses wird die Prüfpunkt-Umgebung 34 aktualisiert, so dass entsprechend das Objekt 4 zu dem HINZUFÜGEN-Teil 34a hinzugefügt wird, und das Datenobjekt 2' zum dem MODIFIZIEREN-Teil 34b hinzugefügt wird.
  • Im Schritt 218 trifft die erste JVM 30 die Feststellung, wie dies weiter oben bezüglich des ersten Ereignisses erläutert wurde, ob das derzeitige (das heißt zweite) Ereignis das letzte Ereignis der verarbeiteten Transaktion T ist. In dem vorliegenden Beispiel bildet das zuletzt verarbeitete Ereignis (das heißt das zweite Ereignis) nicht das letzte Ereignis der Transaktion T, und die Ausführung geht von dem Schritt 218 zum Schritt 222 über.
  • Im Schritt 222 werden die Datenobjekte als Datenabfall von der Datenabfall-Sammelfunktion 36 gesammelt. Entsprechend wird, weil kein Objekt auf das Datenobjekt 3 zeigt, dieses Datenobjekt verworfen, und seine Identität wird in dem VERWERFEN-Teil 34c der Prüfpunkt-Umgebung 34 aufgezeichnet. Das neu geschaffene Datenobjekt 4 wird von dem NEU-Speicher 32b zu dem ALT-Speicher 32c „befördert", wie dies in 13 gezeigt ist.
  • Im Schritt 224 wird der Inhalt des Prüfpunktes berechnet. An diesem Punkt werden Änderungen an dem Stapelraum (für den Zweck der Prüfpunkt-Bildung) nicht mehr länger durch die Schreibsperre verfolgt. Die Prüfpunkt-Bildungsfunktion verwendet Daten in den HINZUFÜGEN- (34a), MODIFIZIEREN- (34b) und VERWERFEN- (34c) Teilen der Prüfpunkt-Umgebung 34, um die Änderungen an dem Programmzustand festzustellen, die an die Reserve-JVM 40 übertragen werden müssen.
  • Im Schritt 226 werden die zu der Reserve-JVM 40 zu kopierenden Objekten „rangiert". Die zu kopierenden Objekte und die Liste von zu verwerfenden Objekten wird zusammen mit irgendwelchen erforderlichen Verwaltungsdaten zu einer Prüfpunkt-Mitteilung geformt, die zwischen JVM's ausgesandt werden kann.
  • Im Schritt 228 wird der im Schritt 226 erzeugte und alle in der Prüfpunkt-Umgebung 34 gespeicherten Objekte umfassende Prüfpunkt der Prüfpunkt-Umgebung 44 der zweiten JVM 40 zugeführt, wie dies in 14 gezeigt ist. Die HINZUFÜGEN- (34a), MODIFIZIEREN- (34b) und VERWERFEN- (34c) Teile der Prüfpunkt-Umgebung 34 werden von Daten befreit, die dem derzeitigen (das heißt zweiten) Ereignis der Transaktion T zugeordnet sind.
  • Im Schritt 230 wird der in der Prüfpunkt-Umgebung 44 gespeicherte Prüfpunkt zu dem ALT-Speicher 42c der zweiten JVM 40 bewegt, wie dies in 15 gezeigt ist.
  • Zusätzlich werden die Zeiger so modifiziert, dass Etiketten, die Objekte identifizieren, auf die gezeigt wird, durch Positionsadressen in dem ALT-Speicher 42c ersetzt werden, so dass von der ersten JVM 30 verwendete Zeiger in korrekter Weise so umgewandelt werden, dass sie auf die gleichen Objekte in der zweiten JVM 40 zeigen.
  • Die Ausführung der vorstehenden Schritte 228 und 230 wird vorzugsweise unmittelbar nachfolgend zum Schritt 226 ausgeführt, so dass der Transaktionszustand des Speichers in den JVM's 30 und 40 zu allen Zeiten praktisch identisch ist. Nach dem Abschluss des Schrittes 230 kehrt die Ausführung zum Schritt 204 zurück.
  • Wie dies weiter oben hinsichtlich der Fertigstellung des ersten Ereignisses erläutert wurde, ist zu erkennen, dass bei Fertigstellung des zweiten Ereignisses der Zustand der Transaktion T in den ALT-Speichern 32c und 42c der JVM's 30 bzw. 40 gemäß 15 praktisch identisch ist. Daher kann irgendeine der JVM's 30 oder 40 das nächste (dritte) Ereignis der Transaktion T verarbeiten.
  • Im Schritt 204 warten die JVM's 30 und 40 auf das nächste Ereignis der Transaktion T von dem Netzwerk 20. Bei Empfang des nächsten Ereignisses, das heißt des dritten Ereignisses in der Folge des vorliegenden Beispiels werden übliche Protokolle ausgeführt, wie dies weiter oben erläutert wurde, um festzustellen, welche der JVM's 30 oder 40 das nächste Ereignis der Transaktion T verarbeitet, das von dem Netzwerk 20 empfangen wird. Im vorliegenden Beispiel wird angenommen, dass die erste JVM 30 nicht ausgefallen ist und verfügbar ist, und daher die Verarbeitung der Transaktion fortsetzt. Daher wird die erste JVM 30 zur Verarbeitung des nächsten Ereignisses der Transaktion T bestimmt und wirkt weiterhin als die primäre JVM, während die zweite JVM 40 weiterhin als Reserve-JVM wirkt.
  • Im Schritt 206 erwarten die JVM's 30 und 40 den Empfang des dritten Ereignisses der Transaktion T von dem Netzwerk 20. Bei der Übertragung des dritten Ereignisses der Transaktion T von dem Netzwerk 20, wie dies in 16 gezeigt ist, empfangen beide JVM's 30 und 40 das Ereignis und zeichnen es in den jeweiligen Stapelspeichern 32 und 42 auf.
  • Im Schritt 208 wird eine Feststellung von der ersten JVM 30 getroffen, ob das im Schritt 206 empfangene Ereignis das erste Ereignis einer neuen Netzwerk-Transaktion T ist. Weil bei dem vorliegenden Beispiel das derzeitige Ereignis das dritte Ereignis und nicht ein erstes Ereignis ist, geht die Ausführung zum Schritt 212 über. Im Schritt 212 beginnt die Schreibsperre der ersten JVM 30 mit der Verfolgung der Schaffung, Modifikation und des Verwerfens von Datenobjekten, die der Transaktion T zugeordnet sind, während das derzeitige dritte Ereignis verarbeitet wird.
  • Im Schritt 214 wird das derzeitige Ereignis als das dritte Ereignis in der Folge des vorliegenden Beispiels in einer in der Technik gut bekannten Weise von dem in dem Speicher-Teil 32a der ersten JVM 30 gespeicherten Anwendungsprogramm verarbeitet. Die Verarbeitung des Ereignisses im Schritt 214 läuft vorzugsweise bis zur Fertigstellung ab. Während das dritte Ereignis auf diese Weise verarbeitet wird, wird das Wurzel-Datenobjekt 1 so modifiziert, dass es das Datenobjekt 1' wird, das Datenobjekt 4 wird so modifiziert, das es das Datenobjekt 4' wird, und der Zeiger von dem Datenobjekt 1' wird auf das modifizierte Datenobjekt 4' umgelenkt, wie dies in 17 gezeigt ist. Zusätzlich wird ein neues Datenobjekt 5 in dem NEU-Speicher 32b geschaffen, und der Zeiger von dem Objekt 4 wird auf das Objekt 5 gerichtet. Im Schritt 216 und bei Abschluss der Verarbeitung des dritten Ereignisses im Schritt 214 wird eine passende Antwort erzeugt und zu dem Netzwerk 20 übertragen, wie dies in 18 gezeigt ist. Während der Verarbeitung des Ereignisses wird die Prüfpunkt-Umgebung 34 aktualisiert. Entsprechend wird das Objekt 5 zu dem HINZUFÜGEN-Teil 34a hinzugefügt, und die Datenobjekte 1' und 4' werden zu dem MODIFIZIEREN-Teil 34b hinzugefügt.
  • Im Schritt 218 führt die erste JVM 30 eine Feststellung aus, wie sie weiter oben bezüglich des ersten Ereignisses beschrieben wurde, ob das derzeitige (das heißt das dritte) Ereignis das letzte Ereignis der Transaktion T ist, die verarbeitet wird. Im vorliegenden Beispiel stellt das dritte Ereignis das letzte Ereignis dar. Daher geht die Ausführung auf den Schritt 220 über, in dem die Verarbeitung der Transaktion T abgeschlossen ist und alle Datenobjekte, die der Transaktion T zugeordnet sind, aus beiden JVM's 30 und 40 entfernt werden. Im vorliegenden Fall wird die Identität aller Objekte, die der Transaktion T zugeordnet sind, effektiv zu dem VERWERFEN-Teil 34c der Prüfpunkt-Umgebung 34 hinzugefügt. Eine (abschließende) Prüfpunkt-Mitteilung wird dann von der primären JVM 30 an die Reserve-JVM 40 gesandt, die anzeigt, dass die Transaktion abgeschlossen ist, und dass alle gespeicherten Zustandsobjekte verworfen werden können. Die primäre JVM 30 löscht dann in der Prüfpunkt-Umgebung 34 alle der Transaktion T zugeordneten Daten, und bei Empfang der von der JVM 30 an die JVM 40 gesandten Mitteilung verwirft die Reserve-JVM 40 in ähnlicher Weise die Inhalte ihrer Prüfpunkt-Umgebung 42.
  • Die Konfiguration der JVM's 30 und 40 kehrt dann zu der in 1 gezeigten Konfiguration zurück, und die Ausführung kehrt zum Schritt 204 zurück.
  • Durch die Verwendung der vorliegenden Erfindung werden vorhandene JVM-Funktionen, wie z. B. die Datenabfall-Sammeleinrichtungen, so verbessert, dass Anwendungsprogramme, die auf der JVM ablaufen, automatisch einer Prüfpunkt-Bildung zu einer oder mehreren Reserve-JVM's unterworfen werden können. Interne Schlüsselfunktionen der JVM, wie z. B. deren Datenabfall-Sammelfunktion mit einer Schreibsperre, sowie deren interne Kenntnis der Objektstrukturen, werden erneut verwendet und erweitert, um eine maximale Effizienz zur automatischen Bestimmung des Prüfpunkt-Inhaltes zu bestimmen und um den Prüfpunkt zur Übertragung an eine oder mehrere Reserve-JVM's zu codieren. Auf diese Weise wird die Konstruktion eines fehlertoleranten Systems 10 erleichtert, was es ermöglicht, dass Transaktionen kontinuierlich verarbeitet werden und verhindert, dass der Ausfall einer einzelnen JVM (beispielsweise aufgrund eines Hardware-Ausfalls) den Fehlschlag einer gesamten einzelnen Transaktion hervorruft. Eine derartige Prüfpunkt-Bildung kann erzielt werden, ohne dass irgendwelche Hinzufügungen oder Modifikationen an dem Quellcode oder dem Objektcode der Anwendung erforderlich sind, wodurch sowohl die Entwicklung als auch das Prüfen derartiger Softwareprogramme ohne unnötige Belastung vereinfacht wird. Die Prüfpunkt-Bildung ist weiterhin mit der Datenabfall-Sammelfunktion synchronisiert, so dass Daten, die einer Prüfpunkt-Bildung zwischen JVM's unterworfen sind, zu einem Minimum gemacht werden. Eine derartige Prüfpunkt-Bildung kann außerdem schneller und zuverlässiger sein, als die übliche Prüfpunkt-Bildung.
  • Es ist verständlich, dass die vorliegende Erfindung viele Formen und Ausführungsformen annehmen kann. Entsprechend können verschiedene Abänderungen an dem Vorstehenden durchgeführt werden, ohne von dem Schutzumfang der Erfindung abzuweichen; beispielsweise kann mehr als ein Anwendungsprogramm in eine einzige JVM 30 oder 40 geladen werden, und die primäre JVM kann den Prüfpunkt an mehr als eine Reserve-JVM liefern.
  • In einer anderen Variation kann irgendeiner eine Anzahl von unterschiedlichen Arten von Datenabfall-Sammelalgorithmen realisiert werden.
  • In einer weiteren Variation kann die Bestimmung der Inhalte des Prüfpunktes so verfeinert werden, dass lediglich geänderte Teile von Objekten zwischen Maschinen übertragen werden, statt der vollständigen Objekte, wie dies in der vorstehenden Beschreibung gezeigt wurde.
  • In einer weiteren Variation können die zu verwerfenden Objekte statt dass sie lediglich identifiziert werden, in dem VERWERFEN-Speicher-Teil 34c gespeichert werden.
  • In einer weiteren Variation kann der Schritt 230 umgangen werden und der Prüfpunkt kann in der Prüfpunkt-Umgebung 44 beibehalten oder in einem anderen Speicher, wie z. B. einer Festplatte, gespeichert werden, bis die JVM 30 ausfällt, wobei zu diesem Zeitpunkt der Prüfpunkt zu dem ALT-Speicher 42c des Stapelspeichers 42 bewegt wird und die Zeiger in der vorstehend beschriebenen Weise modifiziert werden. Zusätzlich zu den vorstehend erläuterten Vorteilen würde eine derartige Variation Stapelspeicher 42 einsparen und weniger Gesamt-Prozessorzeit von der JVM 40 benötigen.
  • In einer weiteren Variation können die Schritte 228 und 230 kombiniert werden, und ein Prüfpunkt von der ersten JVM 30 kann direkt an den Speicher 42c der JVM 40 zugeführt werden, ohne dass er zwischenzeitlich in der Prüfpunkt-Umgebung 44 gespeichert wird. Zusätzlich zu den vorstehend erläuterten Vorteilen würde eine derartige Variation effizienter sein und es der JVM 40 ermöglichen, ohne die Prüfpunkt-Umgebung 44 konfiguriert zu werden, wodurch ebenfalls Speicherressourcen eingespart werden.
  • Es ist zu erkennen, dass die vorliegende Erfindung in Form von Computer-Software/Firmware geliefert und damit auf einem computerlesbaren Medium verwirklicht werden (wie z. B. einer CD-ROM), um auf die JVM heruntergeladen zu werden oder um diese zu aktualisieren.
  • Nachdem die vorliegende Erfindung unter Bezugnahme auf bestimmte ihrer bevorzugten Ausführungsformen beschrieben wurde, sei bemerkt, dass die beschriebenen Ausführungsformen lediglich erläuternd und nicht beschränkend sind, und dass ein weiter Bereich von Abänderungen, Modifikationen, Änderungen und Ersatzmöglichkeiten in der vorstehenden Beschreibung in Betracht gezogen werden, und dass in manchen Fällen einige Merkmale der vorliegenden Erfindung ohne eine entsprechende Verwendung anderer Merkmale verwendet werden können. Viele derartige Abänderungen und Modifikationen können von dem Fachmann als naheliegend und wünschenswert betrachtet werden, nachdem er die vorstehende Beschreibung von bevorzugten Ausführungsformen betrachtet hat. Entsprechend ist des richtig, dass die beigefügten Ansprüche breit ausgelegt und in einer Weise betrachtet werden, die mit dem Schutzumfang der Erfindung übereinstimmt.

Claims (13)

  1. Verfahren zur Schaffung von Mechanismen zur Unterstützung eines fehlertoleranten Betriebs bei einer ersten virtuellen Java-Maschine („JVM") (30) mit den folgenden Schritten: (a) Modifizieren der ersten JVM (30) zur Verwendung von Informationen, die von der ersten JVM geführt werden, um Objekte zu identifizieren, die während eines Prozesses eines Reagierens auf ein Ereignis einer Transaktion geschaffen, modifiziert und/oder verworfen werden (34a-c), wobei diese Objekte zumindest einen Teil eines Prüfpunktes definieren; (b) Liefern des zumindest einen Teils eines Prüfpunktes an zumindest eine zweite JVM (40); und (d) Speichern des zumindest einen Teils eines Prüfpunktes in der zumindest einen zweiten JVM zur Verwendung durch die zumindest eine zweite JVM bei der Verarbeitung nachfolgender Ereignisse der Transaktion.
  2. Verfahren nach Anspruch 1, das weiterhin das Versehen der ersten JVM mit einer Schreibsperre umfasst, und bei dem der Schritt des Modifizierens weiterhin die Verwendung der Schreibsperre zur Verfolgung von Objekten umfasst, die während eines Prozesses einer Reaktion auf ein Ereignis einer Transaktion geschaffen, modifiziert und/oder verworfen werden.
  3. Verfahren nach Anspruch 2, bei dem die Schreibsperre innerhalb einer Datenabfall-Sammelfunktion (36) innerhalb der ersten JVM angeordnet ist.
  4. Verfahren nach Anspruch 1, 2 oder 3, das weiterhin die folgenden Schritte umfasst: (a) Datenabfall-Sammeln von Objekten, die auf der ersten JVM (30) gespeichert sind, vor dem Schritt der Zustellung; und (b) Modifizieren der ersten JVM zur Verwendung von durch die erste JVM geführter Information zur Identifikation von Objekten, die während des Schritts des Datenabfall-Sammelns erzeugt, modifiziert und/oder verworfen werden.
  5. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die erste JVM (30) eine erste Prüfpunkt-Umgebung (34) umfasst, wobei die zumindest eine zweite JVM (40) zumindest eine zweite Prüfpunkt-Umgebung (44) umfasst, und wobei der Schritt des Modifizierens weiterhin das Speichern des zumindest einen Teils eines Prüfpunkts in der ersten Prüfpunkt-Umgebung (34) umfasst und der Schritt der Zustellung weiterhin die Zustellung des zumindest einen Teils eines Prüfpunktes an die zumindest eine zweite Prüfpunkt-Umgebung (44) der zumindest einen zweiten JVM (40) umfasst, und wobei der Schritt des Speicherns weiterhin den Schritt der Übertragung des zumindest einen Teils eines Prüfpunktes von der zumindest einen zweiten Prüfpunkt-Umgebung an einen Speicher (42) der zumindest einen zweiten JVM umfasst.
  6. Verfahren nach einem der vorhergehenden Ansprüche, das weiterhin unmittelbar nach dem Schritt des Speicherns den Schritt der Verarbeitung des zumindest einen Teils eines Prüfpunktes umfasst, so dass der Transaktionszustand des Speichers in der ersten JVM (30) und der zumindest einen zweiten JVM (40) zu allen Zeiten praktisch identisch sind.
  7. Verfahren nach einem der vorhergehenden Ansprüche, das weiterhin nach dem Schritt der Zustellung das Speichern des zumindest einen Teils eines Prüfpunktes in eine Prüfpunkt-Umgebung (44) der zumindest einen zweiten JVM (40), und bei einem Ausfall der ersten JVM (30), die Übertragung des zumindest einen Teils eines Prüfpunktes in einen Speicher (42) der zumindest einen zweiten JVM (40) und das Replizieren des Transaktionszustandes der ersten JVM (30) vor dem Ausfall der ersten JVM in dem Speicher der zumindest einen zweiten JVM umfasst, so dass die zumindest eine zweite JVM in der Lage ist, nachfolgende Ereignisse der Transaktion zu verarbeiten.
  8. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der zumindest eine Teil eines Prüfpunktes weiterhin Verwaltungsdaten zur Verwaltung des zumindest einen Teils eines Prüfpunktes umfasst.
  9. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Schritt der Zustellung weiterhin die Codierung und Decodierung von Objekten und/oder Teilen von Objekten umfasst.
  10. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Schritt der Zustellung weiterhin die Codierung und Decodierung von Objekten und/oder Teilen von Objekten umfasst und die Schritte der Codierung und Decodierung weiterhin die Schritte des Verfolgens von Zeigern in der ersten JVM (30) und der Einstellung von Zeigern in der zumindest einen zweiten JVM (40) umfassen, um in der zumindest einen zweiten JVM (40) die Beziehungen zu replizieren, die zwischen Objekten in dem Speicher der ersten JVM (30) geschaffen wurden.
  11. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Schritt des Modifizierens weiterhin in der ersten JVM (30) die Bestimmung des erforderlichen Inhaltes des zumindest einen Teils eines Prüfpunktes umfasst, um in der zumindest einen zweiten JVM (40) die Replizierung des Transaktionszustandes in der ersten JVM (30) nach der Verarbeitung eines Ereignisses einer Transaktion zu ermöglichen.
  12. Computerprogramm-Element, das Computerprogramm-Codeeinrichtungen umfasst, die so angeordnet sind, dass sie die Verfahrensschritte nach einem der vorhergehenden Ansprüche ausführen.
  13. Computerprogramm-Element nach Anspruch 12, das auf einem Computerlesbaren Medium verwirklicht ist.
DE60013658T 1999-01-30 2000-01-31 Fehlertolerante virtuelle Javamaschine Expired - Lifetime DE60013658T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US239225 1994-05-04
US09/239,225 US6421739B1 (en) 1999-01-30 1999-01-30 Fault-tolerant java virtual machine

Publications (2)

Publication Number Publication Date
DE60013658D1 DE60013658D1 (de) 2004-10-21
DE60013658T2 true DE60013658T2 (de) 2005-09-29

Family

ID=22901182

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60013658T Expired - Lifetime DE60013658T2 (de) 1999-01-30 2000-01-31 Fehlertolerante virtuelle Javamaschine

Country Status (4)

Country Link
US (1) US6421739B1 (de)
EP (1) EP1024430B1 (de)
CA (1) CA2294654C (de)
DE (1) DE60013658T2 (de)

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8631066B2 (en) * 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US6581088B1 (en) * 1998-11-05 2003-06-17 Beas Systems, Inc. Smart stub or enterprise javaTM bean in a distributed processing system
US6571274B1 (en) * 1998-11-05 2003-05-27 Beas Systems, Inc. Clustered enterprise Java™ in a secure distributed processing system
AU4839300A (en) * 1999-05-11 2000-11-21 Webvan Group, Inc. Electronic commerce enabled delivery system and method
US7177825B1 (en) 1999-05-11 2007-02-13 Borders Louis H Integrated system for ordering, fulfillment, and delivery of consumer products using a data network
US7240283B1 (en) 2000-11-10 2007-07-03 Narasimha Rao Paila Data transmission and rendering techniques implemented over a client-server system
US6934755B1 (en) 2000-06-02 2005-08-23 Sun Microsystems, Inc. System and method for migrating processes on a network
US6854115B1 (en) * 2000-06-02 2005-02-08 Sun Microsystems, Inc. Process persistence in a virtual machine
US6718538B1 (en) * 2000-08-31 2004-04-06 Sun Microsystems, Inc. Method and apparatus for hybrid checkpointing
US6829630B1 (en) * 2000-11-24 2004-12-07 Xerox Corporation Mechanisms for web-object event/state-driven communication between networked devices
US7233914B1 (en) 2000-12-27 2007-06-19 Joyo Wijaya Technique for implementing item substitution for unavailable items relating to a customer order
US7308423B1 (en) 2001-03-19 2007-12-11 Franklin Goodhue Woodward Technique for handling sales of regulated items implemented over a data network
US6877111B2 (en) * 2001-03-26 2005-04-05 Sun Microsystems, Inc. Method and apparatus for managing replicated and migration capable session state for a Java platform
US6959430B2 (en) * 2001-05-09 2005-10-25 Sun Microsystems, Inc. Specialized heaps for creation of objects in object-oriented environments
US6754796B2 (en) * 2001-07-31 2004-06-22 Sun Microsystems, Inc. Frameworks for implementation of java heaps
GB2378535A (en) * 2001-08-06 2003-02-12 Ibm Method and apparatus for suspending a software virtual machine
US7027982B2 (en) * 2001-12-14 2006-04-11 Microsoft Corporation Quality and rate control strategy for digital audio
US6842759B2 (en) * 2002-01-16 2005-01-11 International Business Machines Corporation Single-instance class objects across multiple JVM processes in a real-time system
US7093086B1 (en) 2002-03-28 2006-08-15 Veritas Operating Corporation Disaster recovery and backup using virtual machines
US7213246B1 (en) * 2002-03-28 2007-05-01 Veritas Operating Corporation Failing over a virtual machine
US7603670B1 (en) 2002-03-28 2009-10-13 Symantec Operating Corporation Virtual machine transfer between computer systems
US6757778B1 (en) 2002-05-07 2004-06-29 Veritas Operating Corporation Storage management system
US7310777B2 (en) * 2002-10-18 2007-12-18 Computer Associates Think, Inc. User interface for viewing performance information about transactions
US7870431B2 (en) * 2002-10-18 2011-01-11 Computer Associates Think, Inc. Transaction tracer
US7331042B2 (en) * 2002-12-21 2008-02-12 International Business Machines Corporation Fault-tolerant dynamic editing of GUI display and source code
US7203944B1 (en) * 2003-07-09 2007-04-10 Veritas Operating Corporation Migrating virtual machines among computer systems to balance load caused by virtual machines
US7383180B2 (en) * 2003-07-18 2008-06-03 Microsoft Corporation Constant bitrate media encoding techniques
US7343291B2 (en) 2003-07-18 2008-03-11 Microsoft Corporation Multi-pass variable bitrate media encoding
US7246200B1 (en) 2003-11-12 2007-07-17 Veritas Operating Corporation Provisioning and snapshotting using copy on read/write and transient virtual machine technology
US7529897B1 (en) 2003-12-31 2009-05-05 Vmware, Inc. Generating and using checkpoints in a virtual computer system
US7810092B1 (en) 2004-03-02 2010-10-05 Symantec Operating Corporation Central administration and maintenance of workstations using virtual machines, network filesystems, and replication
US7480823B2 (en) * 2005-06-24 2009-01-20 Sun Microsystems, Inc. In-memory replication of timing logic for use in failover within application server node clusters
US8656006B2 (en) 2006-05-11 2014-02-18 Ca, Inc. Integrating traffic monitoring data and application runtime data
US7805510B2 (en) 2006-05-11 2010-09-28 Computer Associates Think, Inc. Hierarchy for characterizing interactions with an application
US8079019B2 (en) * 2007-11-21 2011-12-13 Replay Solutions, Inc. Advancing and rewinding a replayed program execution
US8296760B2 (en) * 2006-10-27 2012-10-23 Hewlett-Packard Development Company, L.P. Migrating a virtual machine from a first physical machine in response to receiving a command to lower a power mode of the first physical machine
US8185893B2 (en) * 2006-10-27 2012-05-22 Hewlett-Packard Development Company, L.P. Starting up at least one virtual machine in a physical machine by a load balancer
US8732699B1 (en) 2006-10-27 2014-05-20 Hewlett-Packard Development Company, L.P. Migrating virtual machines between physical machines in a define group
US9092250B1 (en) 2006-10-27 2015-07-28 Hewlett-Packard Development Company, L.P. Selecting one of plural layouts of virtual machines on physical machines
US8903888B1 (en) * 2006-10-27 2014-12-02 Hewlett-Packard Development Company, L.P. Retrieving data of a virtual machine based on demand to migrate the virtual machine between physical machines
US9009680B2 (en) 2006-11-30 2015-04-14 Ca, Inc. Selecting instrumentation points for an application
US7917911B2 (en) 2006-12-01 2011-03-29 Computer Associates Think, Inc. Automated grouping of messages provided to an application using execution path similarity analysis
US7689610B2 (en) 2006-12-01 2010-03-30 Computer Associates Think, Inc. Automated grouping of messages provided to an application using string similarity analysis
US20090013029A1 (en) * 2007-07-03 2009-01-08 Childress Rhonda L Device, system and method of operating a plurality of virtual logical sites
US7840839B2 (en) * 2007-11-06 2010-11-23 Vmware, Inc. Storage handling for fault tolerance in virtual machines
US8341626B1 (en) 2007-11-30 2012-12-25 Hewlett-Packard Development Company, L. P. Migration of a virtual machine in response to regional environment effects
US20090276431A1 (en) * 2008-05-01 2009-11-05 Kabira Technologies, Inc. Java virtual machine having integrated transaction management system
US8325800B2 (en) 2008-05-07 2012-12-04 Microsoft Corporation Encoding streaming media as a high bit rate layer, a low bit rate layer, and one or more intermediate bit rate layers
US8379851B2 (en) 2008-05-12 2013-02-19 Microsoft Corporation Optimized client side rate control and indexed file layout for streaming media
US7949775B2 (en) 2008-05-30 2011-05-24 Microsoft Corporation Stream selection for enhanced media streaming
US8577845B2 (en) * 2008-06-13 2013-11-05 Symantec Operating Corporation Remote, granular restore from full virtual machine backup
US8265140B2 (en) 2008-09-30 2012-09-11 Microsoft Corporation Fine-grained client-side control of scalable media delivery
US8499297B2 (en) 2008-10-28 2013-07-30 Vmware, Inc. Low overhead fault tolerance through hybrid checkpointing and replay
JP5352299B2 (ja) * 2009-03-19 2013-11-27 株式会社日立製作所 高信頼性計算機システムおよびその構成方法
US8201169B2 (en) 2009-06-15 2012-06-12 Vmware, Inc. Virtual machine fault tolerance
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
GB2506033B (en) * 2011-04-21 2018-11-28 Ibm Virtual machine high availability
WO2013019185A1 (en) 2011-07-29 2013-02-07 Hewlett-Packard Development Company, L.P. Migrating virtual machines
US9798557B2 (en) 2012-08-24 2017-10-24 Ca, Inc. Injection of updated classes for a java agent
US9817656B2 (en) 2012-08-24 2017-11-14 Ca, Inc. Hot rollback of updated agent
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US10303782B1 (en) 2014-12-29 2019-05-28 Veritas Technologies Llc Method to allow multi-read access for exclusive access of virtual disks by using a virtualized copy of the disk
EP3079064B1 (de) * 2015-04-07 2017-11-29 Huawei Technologies Co., Ltd. Verfahren und vorrichtung zur verfolgung von objekten in einem ersten speicher

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155809A (en) * 1989-05-17 1992-10-13 International Business Machines Corp. Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware
JP2846047B2 (ja) * 1990-03-29 1999-01-13 株式会社東芝 シャドウプロセス生成方式
DE4131380A1 (de) * 1991-09-20 1993-03-25 Siemens Ag Verfahren zur adaption einer objektorientierten applikation
DE69309485T2 (de) * 1992-11-13 1997-07-10 Microsoft Corp Verfahren zur verteilung von schnittstellenzeigern fur fernprozeduranrufe
DE69327448T2 (de) * 1992-12-21 2004-03-04 Sun Microsystems, Inc., Mountain View Verfahren und Vorrichtung für Teilaufgaben in verteiltem Verarbeitungssystem
US5961582A (en) * 1994-10-25 1999-10-05 Acorn Technologies, Inc. Distributed and portable execution environment
US5737607A (en) * 1995-09-28 1998-04-07 Sun Microsystems, Inc. Method and apparatus for allowing generic stubs to marshal and unmarshal data in object reference specific data formats
US5758186A (en) * 1995-10-06 1998-05-26 Sun Microsystems, Inc. Method and apparatus for generically handling diverse protocol method calls in a client/server computer system
US5680461A (en) * 1995-10-26 1997-10-21 Sun Microsystems, Inc. Secure network protocol system and method
US6016505A (en) * 1996-04-30 2000-01-18 International Business Machines Corporation Program product to effect barrier synchronization in a distributed computing environment
US5809507A (en) * 1996-07-01 1998-09-15 Sun Microsystems, Inc. Method and apparatus for storing persistent objects on a distributed object network using a marshaling framework
US5860004A (en) * 1996-07-03 1999-01-12 Sun Microsystems, Inc. Code generator for applications in distributed object systems
US6094528A (en) * 1996-10-24 2000-07-25 Sun Microsystems, Inc. Method and apparatus for system building with a transactional interpreter
US5999988A (en) * 1997-03-31 1999-12-07 Sun Microsystems, Inc. Method and apparatus for generating and employing a run-time generated stub to reference an object in object oriented systems
US6003065A (en) * 1997-04-24 1999-12-14 Sun Microsystems, Inc. Method and system for distributed processing of applications on host and peripheral devices
US5873104A (en) * 1997-06-26 1999-02-16 Sun Microsystems, Inc. Bounded-pause time garbage collection system and method including write barrier associated with source and target instances of a partially relocated object

Also Published As

Publication number Publication date
CA2294654C (en) 2003-11-04
CA2294654A1 (en) 2000-07-30
EP1024430B1 (de) 2004-09-15
EP1024430A3 (de) 2002-08-14
DE60013658D1 (de) 2004-10-21
EP1024430A2 (de) 2000-08-02
US6421739B1 (en) 2002-07-16

Similar Documents

Publication Publication Date Title
DE60013658T2 (de) Fehlertolerante virtuelle Javamaschine
DE2908316C2 (de) Modular aufgebaute Multiprozessor-Datenverarbeitungsanlage
DE69938218T2 (de) Vorrichtung und Verfahren zum Laden eines Java Anwendungsprogramms
DE69811148T2 (de) Mitgliedschaft in einem unzuverlässigen verteilten Rechnersystem
DE60207251T2 (de) Verfahren zur sicherstellung des betriebs eines gruppierten nachrichtenvergebenden servers während knotenausfällen und netzwerkzuteilungen
DE10134492B4 (de) Ausfallübernahme des Dateimanagementsystems in einem Rechnercluster
DE4303062C2 (de) Verfahren zur Behebung von Systemausfällen in einem verteilten Computersystem und Vorrichtung zur Durchführung des Verfahrens
DE60025488T2 (de) Vorrichtung und verfahren zur allgemeinen koordination und verwaltung von mehrfachen schnappschussanbietern
DE69531513T2 (de) Vervielfältigungssystem
DE3908459C2 (de) Netzwerkserver
DE69838756T2 (de) Die verarbeitung von eingabe/ausgabeanforderungen von mehreren treibern ermöglichen dateisystem-primitivroutine in einem mehrschicht-treiber-e/a-system
DE60010011T2 (de) Verfahren und Vorrichtung zur Prüfung eines Rechnersystems durch Software-Fehlerinjektion
EP0929864B1 (de) Koordinations-system
DE602005002532T2 (de) Cluster-datenbank mit ferndatenspiegelung
DE19708281B4 (de) Fernausführungssystem mit Programmempfänger
DE60220418T2 (de) Verfahren und Anbieter zur Systemsynchronisation
EP0635792B1 (de) Verfahren zur Koordination von parallelen Zugriffen mehrerer Prozessoren auf Resourcenkonfigurationen
DE69907852T2 (de) Hochverfügbare asynchrone Ein/Ausgabe für gruppierte Rechnersysteme
DE19705955A1 (de) Verfahren zum Generieren einer Implementierung eines Workflow-Prozessmodells in einer Objektumgebung
EP0966169B1 (de) Sicherungsverfahren für Betriebsdaten eines Netzelementes und Steuerungseinrichtung für ein Netzelement
DE19809401A1 (de) Agentenidentifizierungsvorrichtung, Agentenvorrichtung mit Programmempfangsfunktion, und Netzwerksystem
DE4305522A1 (de) Einrichtung zur automatischen Erzeugung einer Wissensbasis für ein Diagnose-Expertensystem
DE19822553A1 (de) Netzelement mit einer Steuerungseinrichtung und Steuerungsverfahren
DE69914568T2 (de) Vorrichtung, Verfahren und System zur Dateisynchronisierung in einem Fehlertoleranten Netzwerk
DE19957594A1 (de) Verfahren zum Synchronisieren von Programmabschnitten eines Computerprogramms

Legal Events

Date Code Title Description
8364 No opposition during term of opposition