DE69814900T2 - Verfahren und system zur unterstützung verteilter software- entwicklung ohne bewusstsein der verteilten charakteristik der software - Google Patents

Verfahren und system zur unterstützung verteilter software- entwicklung ohne bewusstsein der verteilten charakteristik der software Download PDF

Info

Publication number
DE69814900T2
DE69814900T2 DE69814900T DE69814900T DE69814900T2 DE 69814900 T2 DE69814900 T2 DE 69814900T2 DE 69814900 T DE69814900 T DE 69814900T DE 69814900 T DE69814900 T DE 69814900T DE 69814900 T2 DE69814900 T2 DE 69814900T2
Authority
DE
Germany
Prior art keywords
cartridge
execution engine
message
request
machine
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
DE69814900T
Other languages
English (en)
Other versions
DE69814900D1 (de
Inventor
Seshu Adunuthula
Elaine Chien
Mala Anand
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.)
Oracle International Corp
Original Assignee
Oracle Corp
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 Oracle Corp filed Critical Oracle Corp
Publication of DE69814900D1 publication Critical patent/DE69814900D1/de
Application granted granted Critical
Publication of DE69814900T2 publication Critical patent/DE69814900T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • 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/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)

Description

  • Gebiet der Erfindung
  • Die Erfindung betrifft Server-Architekturen in vernetzten Computersystemen, insbesondere zum Ermöglichen verteilter Software-Entwicklung in einer verteilungsunbewussten Weise.
  • Hintergrund der Erfindung
  • Das World Wide Web beinhaltet ein Netzwerk von Servern im Internet, wobei jeder mit einer oder mehreren HTML (Hypertext Markup Language)-Seiten gekoppelt ist. Die HTML-Seiten, welche mit einem Server gekoppelt sind, stellen Informationen und Hypertext-Verknüpfungen zu anderen Dokumenten auf diesem und (normalerweise) anderen Servern bereit. Server kommunizieren mit Clients unter Verwendung des Hypertext Transfer Protocols (HTTP). Die Server horchen nach Anforderungen von Clients nach ihren HTML-Seiten und werden daher oft als "Listeners" bezeichnet.
  • Benutzer des World Wide Webs benutzen ein Clientprogramm, welches hier als Browser bezeichnet wird, zum Anfordern, Dekodieren und Anzeigen von Informationen von Listenern. Wenn der Benutzer eines Browsers eine Verknüpfung auf einer HTML-Seite auswählt, sendet der Browser, der die Seite anzeigt, eine Anforderung über das Internet an den dem Universal Resource Locator (URL) zugeordneten Listener, der in der Verknüpfung angegeben ist. In Antwort auf die Anforderung überträgt der Listener die angeforderten Informationen zum Browser, der die Anforderung ausgegeben hat. Der Browser empfängt die Information, präsentiert die empfangene Information dem Benutzer und wartet auf die nächste Benutzer-Anforderung.
  • Üblicherweise ist die, auf den Listenern gespeicherte, Information in der Form von statischen HTML-Seiten. Statische HTML-Seiten werden, vor einer Anforderung von einem Web-Browser, auf dem Listener erzeugt und gespeichert. in Antwort auf eine Anforderung wird eine statische HTML-Seite lediglich aus dem Speicher gelesen und an den abfragenden Browser übertragen. Gegenwärtig gibt es einen Trend Listener zu entwickeln, welche auf Browser-Anforderungen mittels Durchführung dynamischer Operationen antworten. Zum Beispiel kann ein Listener auf eine Anforderung durch Ausgabe einer Anforderung an eine Datenbank, dynamischem Aufbau einer Web-Seite, welche die Ergebnisse der Anforderung aufweist und Übertragung der dynamisch aufgebauten HTML-Seite an den anfordernden Browser antworten. Zum Durchführen dynamischer Operationen muss die Funktionalität des Listeners überarbeitet oder erhöht werden. Verschiedene Lösungswege wurden entwickelt, zum Erweitern von Listenern, zum Durchführen dynamischer Operationen.
  • Ein Lösungsweg um dynamische Operationen in Antwort auf Anforderungen von Web-Browsern bereitzustellen, benutzt das Common Gateway Interface (CGI). CGI ist eine Beschreibung zum Übertragen von Informationen zwischen einem Listener und einem CGI-Programm. Ein CGI-Programm ist jedes Programm, das zum Akzeptieren und Zurückliefern von Daten entworfen wurde, welche sich nach den CGI-Beschreibungen richten. Das Programm könnte in jeder Programmiersprache, einschließlich C, Perl oder Visual Basic geschrieben sein.
  • Der CGI-Lösungsweg leidet am Nachteil, dass ein separater Prozess (eine separate Instanz des CGI-Programms) jedes Mal anläuft, wenn die beschriebene Anforderung durch den Server empfangen wurde. Weiterhin werden CGI-Programme auf derselben Maschine ausgeführt wie der Listener, der die Browser-Anforderung empfing. Demzufolge wird der Empfang von Tausend solcher Anforderungen von unterschiedlichen Benutzern auf der Maschine, welche den Listener ausführen lässt, tausend Prozesse auslösen und verfügbare Ressourcen auf dem Server aufbrauchen.
  • Ein zweiter Nachteil des CGI-Lösungsweges ist, dass ein separater Prozess für jede Anforderung ausgelöst, ausgeführt und beendet wird. Daher wird, wenn eine erste Serie von zehn Anforderungen von einer zweiten Serie von zehn Anforderungen gefolgt wird, die erste Serie von zehn Prozessen für die erste Serie von Anforderungen ausgelöst und beendet und eine zweite Serie von zehn Prozessen für die zweite Serie von Anforderungen ausgelöst und beendet. CGI erlaubt es nicht, dieselben zehn Prozesse zu benutzen, die für die ersten zehn Anforderungen benutzt wurden, zum Verarbeiten der zweiten zehn Anforderungen, zum Vermeiden von Überhang, der mit der Auslösung von Prozessen gekoppelt ist.
  • Ein alternativer Lösungsweg zum Bereitstellen dynamischer Antworten auf Anforderungen weist das Benutzen von "Plugin"-Erweiterungen auf. Eine Plug-In-Erweiterung fängt Nachrichten ab, welche an den Server in verschiedenen Phasen gesendet werden, um ein anwendungsspezifisches Verarbeiten einer spezifischen Benutzer-Anforderung durchzuführen. Ein serverseitiges Plug-In führt im selben Adressraum wie der Listener und alle anderen serverseitigen Plug-Ins aus. Dadurch muss ein Anwendungs-Entwickler, der ein Plug-In entwirft, mit den Betriebsdetails des Listeners auf niedriger Ebene vertraut sein. Weiterhin setzt die Ausführung von Plug-Ins im selben Adressraum wie der Listener, den Listener Sicherheits- und Stabilitätsrisiken aus, wobei ein fehlerhaftes Plug-In verursachen kann, dass andere Plug-Ins oder der Listener selbst abstürzen, oder in einer unvorhersehbaren Weise ausführen.
  • Ein zweites Problem mit dem Plug-In-Lösungsweg ist, dass ähnlich zu dem CGI-Lösungsweg, alle Plug-In-Operationen auf derselben Maschine durchgeführt werden, welche den Listener ausführt. Da die durch die Plug-In-Erweiterung ausgeführten Aufgaben nicht zu anderen Maschinen ausgelagert werden können, ist die Skalierbarkeit des Plug-In-Lösungsweges bedeutend begrenzt.
  • Zusätzliche Details zum Hintergrund der durch Ausführungsbeispiele dieser Erfindung gelösten Probleme, können in einem Artikel von Nigel Edwards und Owen Rees, betitelt mit "High security Web servers and gateways" in Computer Networks and ISDN Systems, 29, (1997) 927–938 gefunden werden.
  • Zusammenfassung der Erfindung
  • Ein Verfahren und System werden bereitgestellt zum Ausführen von Operationen in einer verteilten Umgebung, in einer Weise, welche nicht benötigt, dass die Module, welche die Operationen ausführen, verteilungsbewusst sind. Die verteilte Umgebung erlaubt es Prozessen ("Cartridge-Instanzen"), welche die in den Browser-Anforderungen angegeben Operationen durchführen, auf anderen Maschinen ausgeführt zu werden, als die Listener, welche die Anforderungen empfangen und die Browser, welche die Anforderungen ausgeben. Da die Cartridge-Instanzen auf anderen Maschinen als die Listener sind, sind die Listener besser gegen fehlerhafte Cartridge-Instanzen isoliert, wodurch die Zuverlässigkeit und Sicherheit des Systems überarbeitet wird. Zusätzlich wird die Skalierbarkeit des Systems durch Aufteilen der Prozesslast der Ausführung der Cartridge-Einheiten auf viele Maschinen beträchtlich erhöht, eher als auf dieselbe Maschine, welche den Listener ausführt. Die Fähigkeit die Ausführung der Cartridge-Instanzen auf mehrere Maschinen zu verteilen, erlaubt das Benutzen zahlreicher Lastverteilungstechniken in der Entscheidung, wann und wo neue Cartridge-Instanzen hervorgebracht werden.
  • Die Vorteile, die sich aus der verteilten Art des Systems ableiten, erfreuen sich minimaler Last für die Cartridge-Entwickler. Speziell müssen sich Cartridges nicht der Tatsache "bewusst" sein, dass sie als Teil eines verteilten Systems arbeiten, da sie von der Komplexität des verteilten Systems durch Module isoliert sind, welche hier als Cartridge-Ausführungs-Engines bezeichnet werden. Die dadurch erreichte Isolation erlaubt es Cartridge-Entwicklern sich eher auf die Probleme zu fokussieren, auf welche ihre Cartridge gerichtet ist, als auf die Komplexitäten der Zwischen-Maschinen-Kommunikation.
  • Gemäß einem Aspekt der Erfindung arbeitet ein Lastverteiler auf einer ersten Maschine. Eine Cartridge-Ausführungs-Engine arbeitet auf einer zweiten Maschine, welche unterschiedlich von der ersten Maschine ist. Der Lastverteiler empfängt von einem Web-Listener eine erste Nachricht, welche ein Ausführen der Operation anfordert. Die erste Nachricht wurde an den Lastverteiler gesendet in Antwort auf den Web-Listener, welcher eine Browser-Anforderung von einem Browser empfängt.
  • In Antwort auf die erste Nachricht sendet der Lastverteiler eine zweite Nachricht zu der Cartridge- Ausführungs-Engine. In Antwort auf die zweite Nachricht gibt die Cartridge-Ausführungs-Engine eine dritte Nachricht zu einer Cartridge weiter, welche auf der zweiten Maschine ausführt. In Antwort auf den Erhalt der dritten Nachricht führt die Cartridge die Operation aus. Da Anforderungen an die Cartridge mittels der Cartridge-Ausführungs-Engine gesendet werden und die Cartridge-Ausführungs-Engine sich auf derselben Maschine wie die Cartridge befindet, isoliert die Cartridge-Ausführungs-Engine die Cartridge wirksam von den Komplexitäten der Unterstützung der Zwischen-Maschinen-Kommunikation.
  • Gemäß einem anderen Aspekt der Erfindung wird ein System zum Durchführen von Operationen, welche Browser-Anforderungen zugeordnet sind, bereitgestellt. Das System weist eine Mehrzahl von Lastverteilern auf, welche mit einer Mehrzahl von Web-Listenern gekoppelt sind, einen Inter-Maschinen-Kommunikations-Mechanismus und eine Mehrzahl von Cartridges. Die Cartridges werden mittels einer Standard-Cartridge-Schnittstelle aufgerufen, führen aber unterschiedliche Operationen durch.
  • Das System weist weiterhin eine Mehrzahl der Cartridge-Ausführungs-Engines auf, welche mit der Mehrzahl von Lastverteilern mittels des Inter-Maschinen-Kommunikations-Mechanismus kommunizieren und mit der Mehrzahl der Cartridges durch Aufrufen von Routinen in der Mehrzahl der Cartridges mittels der Standard-Cartridge-Schnittstelle, kommunizieren. Jeder Lastverteiler ist konfiguriert zum Senden einer ersten Nachricht durch den Inter-Maschinen-Kommunikations-Mechanismus an eine bestimmte Cartridge-Ausführungs-Engine der Mehrzahl der Cartridge-Ausführungs-Engines in Antwort auf einen Web-Listener, welcher eine Browser-Anforderung empfängt, welche die Ausführung einer Operation einer bestimmten Cartridge benötigt. Die bestimmte Cartridge-Ausführungs-Engine ist konfiguriert, in dem auf die erste Nachricht durch Aufrufen einer Routine in der bestimmten Cartridge geantwortet wird, welche die Operation ausführt.
  • Kurzbeschreibung der Zeichnungen
  • Die Erfindung wird mittels Beispielen dargestellt und nicht mittels Einschränkungen und in den Bildern der begleitenden Zeichnungen beziehen sich gleiche Bezugszeichen auf ähnliche Elemente und in welchen:
  • 1 ein Block-Diagramm eines Computersystems ist, auf welchem ein Ausführungsbeispiel der Erfindung implementiert sein kann;
  • 2 ein Block-Diagramm eines verteilten Anwendungs-Servers gemäß einem Ausführungsbeispiel der Erfindung ist;
  • 3A ein Teil eines Ablauf-Diagramms ist, welches Schritte zum Behandeln einer Browser-Anforderung gemäß einem Ausführungsbeispiel der Erfindung dargestellt;
  • 3B ein anderer Teil des Ablauf-Diagramms ist, welches Schritte zum Behandeln einer Browser-Anforderung gemäß einem Ausführungsbeispiel der Erfindung dargestellt;
  • 4 ein Block-Diagramm einer Tabelle ist, welche Informationen aufweist, welche durch einen Lastverteiler verwaltet werden, gemäß einem Ausführungsbeispiel der Erfindung; und
  • 5 ein Block-Diagramm einer Tabelle ist, welche Informationen aufweist, welche durch einen Ressourcen-Manager verwaltet werden, gemäß einem Ausführungsbeispiel der Erfindung.
  • Detaillierte Beschreibung des bevorzugten Ausführungsbeispiels
  • Ein Verfahren und eine Vorrichtung zum Durchführen von Operationen über ein Netzwerk wird beschrieben. In der folgenden Beschreibung werden, zum Zwecke der Erklärung, zahlreiche spezifische Details erklärt, um ein gründliches Verständnis der Erfindung zu verschaffen. Es wird dennoch für jene, die in der Technik geübt sind, offensichtlich sein, dass die Erfindung ohne diese spezifischen Details angewendet werden kann. Andererseits werden gut bekannte Strukturen und Vorrichtungen in Block-Diagramm-Form gezeigt, um zu Vermeiden, dass die Erfindung undeutlich gemacht wird.
  • Hardware-Übersicht
  • 1 ist ein Block-Diagramm, welches ein Computersystem 100 darstellt, auf welchem ein Ausführungsbeispiel der Erfindung implementiert sein kann. Das Computersystem 100 weist einen Bus 102 oder andere Kommunikations-Mechanismen zum Übertragen von Informationen und einen Prozessor 104 auf, welcher mit dem Bus 102 zum Verarbeiten von Informationen gekoppelt ist. Das Computersystem 100 weist ferner einen Hauptspeicher 106, wie einen Schreib-Lese-Speicher (RAM) oder andere dynamische Speichervorrichtungen auf, welche mit dem Bus 102 zum Speichern von Informationen und Befehlen gekoppelt sind, welche durch den Prozessor 104 ausgeführt werden sollen. Der Hauptspeicher 106 kann auch zur Speicherung von temporären Variablen und anderen Hilfsinformationen, während der Ausführung von durch den Prozessor 104 auszuführenden Befehlen benutzt werden. Das Computersystem 100 weist weiter einen Nur-Lese-Speicher (ROM) 108 oder andere statische Speichervorrichtungen, welche mit dem Bus 108 gekoppelt sind zum Speichern von statischen Informationen und Befehlen für den Prozessor 104 auf. Eine Speichervorrichtung 110, wie eine magnetische Diskette oder eine-optische Scheibe, ist bereitgestellt und an Bus 102 gekoppelt zum Speichern von Informationen und Befehlen.
  • Das Computersystem 100 kann über Bus 102 an eine Anzeige 112, wie eine Kathodenstrahlröhre (CRT) zum Anzeigen von Informationen für einen Computer-Benutzer, gekoppelt sein. Eine Eingabe-Vorrichtung 114, welche alphanumerische und andere Tasten aufweist, ist an Bus 102 zum Übertragen einer Informations- und einer Befehlsauswahl an den Prozessor 104, gekoppelt. Ein anderer Typ von Benutzer-Eingabevorrichtung ist die Cursor-Steuerung 116, wie eine Maus, ein Trackball, oder Cursor-Richtungstasten zum Übertragen von einer Richtungsinformationsauswahl und einer Befehlsauswahl zum Prozessor 104 und zum Steuern der Cursor-Bewegung auf der Anzeige 112. Diese Eingabe-Vorrichtung hat typischerweise zwei Freiheitsgrade in zwei Achsen, einer ersten Achse (z. B. x) und einer zweiten Achse (z. B. y), welche es der Vorrichtung erlauben, Positionen in einer Ebene anzugeben.
  • Die Erfindung bezieht sich auf die Benutzung des Computersystems 100 zum Durchführen spezifischer Operationen in Antwort auf Nachrichten von Browsern. Gemäß einem Ausführungsbeispiel der Erfindung, werden die Operationen durch das Computersystem 100 durchgeführt in Antwort auf Prozessor 104, der eine oder mehrere Sequenzen von einem oder mehreren Befehlen durchführt, welche im Hauptspeicher 106 enthalten sind. Solche Befehle können in den Hauptspeicher 106 von einem anderen Computer-lesbaren Medium, wie der Speichervorrichtung 110, eingelesen werden. Die Ausführung der Sequenzen von Befehlen, welche im Hauptspeicher 106 enthalten sind, veranlasst den Prozessor 104 die darin beschriebenen Prozess-Schritte durchzuführen. In alternativen Ausführungsbeispielen können festverdrahtete Schaltkreise an Stelle von oder in Kombination mit Software-Befehlen zum Realisieren der Erfindung benutzt werden. Daher sind Ausführungsbeispiele der Erfindung nicht auf irgendeine spezifische Kombination von Hardware-Schaltkreisen und Software begrenzt.
  • Der Begriff "Computer-lesbares Medium" wie hierin benutzt, bezieht sich auf irgendein Medium welches an der Bereitstellung von Befehlen für den Prozessor 104 zur Ausführung teilnimmt. Solch ein Medium kann viele Formen annehmen, einschließlich aber nicht begrenzt auf, nichtflüchtige Medien, flüchtige Medien und Übertragungsmedien. Nicht-flüchtige Medien weisen zum Beispiel optische oder magnetische Disketten wie Speichervorrichtung 110 auf. Flüchtige Medien weisen dynamische Speicher, wie den Hauptspeicher 106 auf. Übertragungsmedien weisen Koaxialkabel, Kupferdrähte und Faseroptik, einschließlich der Drähte die Bus 102 aufweist, auf. Übertragungsmedien können auch die Form von akustischen Wellen oder Lichtwellen annehmen, so wie jene, welche während Radiowellen- und Infrarot-Datenübertragung erzeugt werden.
  • Herkömmliche Formen von Computer-lesbaren Medien weisen zum Beispiel Disketten, flexible Discs, Festplatten, Magnetbänder oder jedes andere magnetische Medium, CD-ROM, jede anderen optischen Medien, Lochkarten, Papierstreifen oder jede anderen physikalischen Medien mit Mustern von Löchern, RAM, PROM und EPROM, ein FLASH-EPROM, jeden anderen Speicherchip oder -Kassette, eine Trägerwelle wie hier später beschrieben oder jedes andere Medium von welchem ein Computer lesen kann, auf.
  • Verschiedene Formen von Computer-lesbaren Medien können beim Tragen einer oder mehrerer Sequenzen von einem oder mehreren Befehlen zum Prozessor 104 einbezogen sein. Zum Beispiel können die Anweisungen anfänglich auf einer Magnetplatte eines fernen Computers getragen werden. Der ferne Computer kann die Anweisungen in seinen dynamischen Speicher laden und die Anweisungen über eine Telefonleitung senden, wobei ein Modem benutzt wird. Ein zum Computersystem 100 lokales Modem kann die Daten auf der Telefonleitung empfangen und einen Infrarot-Transmitter zum Umwandeln der Daten in ein Infrarot-Signal benutzen. Ein mit dem Bus 102 gekoppelter Infrarot-Detektor kann die im Infrarot-Signal getragenen Daten empfangen und die Daten auf Bus 102 platzieren. Bus 102 trägt die Daten zum Hauptspeicher 106, von welchem der Prozessor 104 die Anweisungen lädt und ausführt. Die durch den Hauptspeicher 106 empfangenen Anweisungen können wahlweise entweder vor oder nach der Ausführung durch den Prozessor 104 in der Speichervorrichtung 110 gespeichert werden.
  • Das Computersystem 100 weist auch eine mit dem Bus 102 gekoppelte Kommunikations-Schnittstelle 118 auf. Die Kommunikations-Schnittstelle 118 stellt eine Zwei-Wege-Daten-Kommunikation zur Verfügung, welche an eine Netzwerkverbindung 120 koppelt, welche an ein lokales Netzwerk 122 gekoppelt ist. Die Kommunikations-Schnittstelle 118 kann zum Beispiel eine ISDN (integrated services digital network)-Karte oder ein Modem sein, zum Bereitstellen einer Daten-Kommunikations-Kopplung zu einem entsprechenden Typ von Telefonleitung. Als ein anderes Beispiel kann die Kommunikations-Schnittstelle 118 eine LAN (local area network)-Karte sein, zum Bereitstellen einer Daten-Kommunikations-Kopplung zu einem kompatiblen LAN. Kabellose Verbindungen können auch implementiert werden. In jeder solchen Implementierung sendet und empfängt die Kommunikations-Schnittstelle 118 elektrische, elektromagnetische oder optische Signale, welche digitale Datenströme tragen, die verschiedene Arten von Informationen darstellen.
  • Die Netzwerkverbindung 120 stellt typischerweise Daten-Kommunikation mittels einem oder mehrerer Netzwerke zu anderen Daten-Vorrichtungen zur Verfügung. Zum Beispiel kann die Netzwerkverbindung 120 eine Verbindung mittels des lokalen Netzwerkes 122 zu einem Host-Computer 124 oder zu einer Daten-Anlage anbieten, welche durch einen Internet-Dienstanbieter (ISP, internet service provider) 126 betrieben wird. ISP 126 stellt wiederum Datenkommunikationsdienste mittels des weltweiten Paket-Daten-Kommunikationsnetzwerkes zur Verfügung, welches nun gewöhnlich als das "Internet" 128 bezeichnet wird. Das lokale Netzwerk 122 und das Internet 128 benutzen beide elektrische, elektromagnetische oder optische Signale, welche digitale Datenströme tragen. Die Signale durch die verschiedenen Netzwerke und die Signale auf der Netzwerkverbindung 120 und durch die Kommunikations-Schnittstelle 118, welche die digitalen Daten zu dem und von dem Computersystem 100 tragen, sind beispielhafte Formen von Trägerwellen, welche die Information transportieren.
  • Das Computersystem 100 kann Nachrichten senden und Daten, inklusive Programmcode, mittels des/der Netzwerkee), der Netzwerkverbindung 120 und der Kommunikations-Schnittstelle 118 empfangen. Im Internet-Beispiel kann ein Server 130 einen angeforderten Code für ein Anwendungsprogramm mittels des Internets 128, des ISP 126, des lokalen Netzwerkes 122 und der Kommunikations-Schnittstelle 118 übertragen.
  • Der empfangene Code kann durch den Prozessor 104, wenn er empfangen wurde, ausgeführt werden und/oder in Speichervorrichtung 110 oder in anderen nicht-flüchtigen Speichern zur späteren Ausführung gespeichert werden. Ruf diese Weise kann das Computersystem 100 Anwendungscode in der Form einer Trägerwelle empfangen.
  • Funktionelle Übersicht des Anwendungs-Servers
  • 2 ist ein Blockdiagramm eines Systems 200, welches gemäß einem Ausführungsbeispiel der Erfindung entworfen wurde. Das System 200 weist eine Mehrzahl von Browsern 202, 204 und 206 auf, welche mit einer Mehrzahl von Listenern 210, 216 und 222 über das Internet 208 gemäß dem HTTP-Protokoll kommunizieren. In Antwort auf Anforderungen von den Browsern, veranlassen die Listener einen Web-Anwendungs-Server 280 zum Aufrufen von Software-Modulen, welche hierin als Cartridges bezeichnet werden. Im erklärten Ausführungsbeispiel hat der Web-Anwendungs-Server 280 die Ausführung von drei Cartridges 230, 234 und 238 ausgelöst.
  • Der Web-Anwendungs-Server 280 weist zahlreiche Komponenten auf, einschließlich Transport-Adapter 212, 218 und 224, Lastverteiler 214, 220 und 226, einem Authentifizierungs-Server 252, einem virtueller-Pfad- Manager 250, einem Ressourcen-Manager 254, einem Konfigurations-Versorger 256 und einer Mehrzahl der Cartridge-Ausführungs-Engines 228, 232 und 236. Die verschiedenen Komponenten des Web-Anwendungs-Servers 280 werden hier später in größerem Detail beschrieben.
  • Es ist bedeutsam, dass die zahlreichen Komponenten des Web-Anwendungs-Servers 280 mittels eines Inter-Maschinen-Kommunikations-Mechanismus, wie einen Objekt-Request-Broker 282 kommunizieren. Durch Benutzen eines Inter-Maschinen-Kommunikations-Mechanismus können Cartridge-Instanzen, welche die in Browser-Anforderungen beschriebenen Operationen durchführen, auf anderen Maschinen ablaufen als die Listener, welche die Anforderungen empfangen und die Browser, welche die Anforderungen ausgeben. Da die Cartridge-Instanzen auf anderen Maschinen als die Listener sind, sind die Listener besser gegen fehlerhafte Cartridge-Instanzen isoliert, wodurch die Zuverlässigkeit und die Sicherheit des Systems überarbeitet werden. Zusätzlich wird die Skalierbarkeit des Systems beträchtlich erhöht durch Verteilen der Prozesslast der Ausführung der Cartridge-Instanzen auf viele Maschinen, eher als auf dieselbe Maschine, die den Listener ausführt. Die Fähigkeit die Ausführung der Cartridge-Instanzen auf mehrere Maschinen zu verteilen, erlaubt das Benutzen zahlreicher Lastverteilungstechniken in der Entscheidung, wann und wo neue Cartridge-Instanzen hervorgebracht werden.
  • Ein typischer Betrieb innerhalb des Systems 200 weist im Allgemeinen die folgenden Stufen auf:
    Ein Browser überträgt eine Anforderung über das Internet 208.
  • Ein Listener empfängt die Anforderung und reicht sie mittels eines Transport-Adapters zu einem Lastverteiler.
  • Der Lastverteiler kommuniziert mit dem virtuellen-Pfad-Manager 250 um die geeignete Cartridge zum Behandeln der Anforderung zu bestimmen.
  • In diesem Moment macht der Lastverteiler eines von zwei Dingen. Wenn der Lastverteiler von einer unbenutzten Instanz für diese Cartridge weiß, sendet der Lastverteiler die Anforderung zu dieser Instanz. Wenn es keine unbenutzten Cartridge-Instanzen dieser Cartridge gibt, fordert der Lastverteiler den Ressourcen-Manager 254 zum Erzeugen einer neuen Cartridge-Instanz auf. Nachdem die Instanz erfolgreich startet, benachrichtigt die Cartridge den Ressourcen-Manager über ihre Existenz. Der Ressourcen-Manager 254 benachrichtigt dann den Lastverteiler über die neue Instanz. Der Lastverteiler erzeugt eine überarbeitete Anforderung basierend auf der Browser-Anforderung und sendet die überarbeitete Anforderung an die neue Instanz.
  • Die Cartridge-Instanz behandelt die überarbeitete Anforderung und sendet eine Antwort an den Lastverteiler.
  • Der Lastverteiler reicht die Antwort zurück an den Client mittels des Listeners. Diese Stufen sollen in größerem Detail im Folgenden beschreiben werden.
  • Cartridges
  • Cartridges sind Code-Module zum Durchführen spezifischer Anwendungen und Systemfunktionen. Eine Cartridge bildet die Basiseinheit zur Verteilung im System 200. Gemäß einem Ausführungsbeispiel der Erfindung, werden Cartridges unter Benutzen von Universal Resource Locators (URLs) benannt. Daher hat ein Cartridge-Name zwei Teile: Die IP-Adresse des Servers, auf dem die Cartridge liegt und den virtuellen Pfad in der Server-Verzeichnisstruktur des kompilierten Cartridge-Codes. Da Cartridges unter Benutzen von URLs benannt werden, ist der Cartridge-Namensraum global und es kann auf Cartridges durch Benutzen derselben Nachrichtentechniken zugegriffen werden, wie diejenigen, die zum Zugreifen auf andere Web-Ressourcen, wie Dokumente, benutzt werden.
  • Gemäß einem Ausführungsbeispiel der Erfindung hat jede Cartridge eine Standard-Schnittstelle, welches eine allgemeine Gesamtstruktur für alle Cartridges bereitstellt. Die Standard-Schnittstelle definiert die Schnittstelle von Routinen, welche von dem Web-Anwendungs-Server 280 unter besonderen Bedingungen aufgerufen werden. Gemäß einem Ausführungsbeispiel der Erfindung ist die abstrakte Cartridge-Schnittstelle wie folgt:
    Figure 00160001
  • Die init()-Routine ist verantwortlich für das Initialisieren der Cartridge-Instanz: Das kann das Aufrufen des Constructors von einigen Unter-Objekten aufweisen, das Aufteilen von Threads und das Erwerben aller anderen benötigten Gemeinschaftsressourcen.
  • Die shutdown()-Routine ist verantwortlich für das Aufräumen aller Ressourcen und Schließen der Cartridge-Instanz. Wenn einmal die shutdown()-Routine in einer Cartridge-Instanz aufgerufen ist, wird sie sofort unerreichbar für das Bedienen nachfolgender Anforderungen.
  • Die authenticate()-Routine bestätigt, ob der die Dienste anfordernde Client berechtigt ist, diese Dienste zu benutzen.
  • Die exec()-Routine ist ein allgemeiner Weg zum Verteilen aller Dienst-Anforderungen an die Cartridge.
  • Beispielhafte Cartridges
  • Jede Cartridge ist entweder als eine Cartridge die eine wohldefinierte Funktion ausführt oder als eine programmierbare Cartridge, die als ein Interpreter oder eine Routinenumgebung für eine Anwendung dient, konfiguriert. Ein Beispiel einer programmierbaren Cartridge ist eine PL/SQL-Runtime, welche zum Verarbeiten von Datenbank-Anforderungen gemäß der Oracle-basierten Programmiersprache unter Benutzen der Structured Query Language (PL/SQL), konfiguriert ist. Die PL/SQL-Runtime führt eine Browser-Anforderung aus, welche eine Datenbank-Anforderung hat. Die PL/SQL-Runtime bearbeitet die Anforderung zum Beispiel durch Zugreifen über eine Datenverbindung auf einen Datenbank-Server, der mit der Cartridge-Instanz in Verbindung steht.
  • Ein anderes Beispiel einer programmierbaren Cartridge ist ein JAVA-Runtime-Interpreter. Die JAVA-Runtime-Interpreter-Cartridge erlaubt Webanwendungs-Entwicklern das Schreiben serverseitiger JAVA-Anwendungen zum Verarbeiten von Browser-Anforderungen. Ähnlich kann ein angepasster Server als eine Cartridge eingerichtet werden, zum Bereitstellen dynamischer Operationen wie zum Beispiel den Zugriff auf Prozesse, welche von einem dritten Server ausgeführt werden.
  • Lastverteiler
  • Lastverteiler sind Software-Module die zum Weiterleiten der von Listenern empfangenen Anforderungen zu den geeigneten Cartridges eingerichtet sind. Gemäß einem Ausführungsbeispiel der Erfindung sind Lastverteiler als serverseitige Programm-Erweiterungen (d. h. "Plug-Ins") realisiert. Als solche sind die Lastverteiler in denselben Adressraum geladen und arbeiten innerhalb desselben Adressraumes wie die Listener zu denen sie gehören. Die Lastverteiler können mit dem Listener-Code zum Zeitpunkt des Kompilierens gekoppelt sein oder dynamisch zur Laufzeit geladen werden.
  • Im dargestellten Ausführungsbeispiel sind Lastverteiler 214, 220 und 226 jeweils mit den Listenern 210, 216 bzw. 222 gekoppelt. Die Lastverteiler 214, 220 und 226 leiten mittels der Listener 210, 216 bzw. 222 Browseranforderungen gezielt zu den Cartridges.
  • Angenommen zum Beispiel, dass der Listener 210 eine Browseranforderung über das Internet 208, welche in Form eines Uniform Resource Locators (URL) geliefert wird, empfängt. Die Browseranforderung dient als ein Identifizierer für ein Webobjekt, zum Beispiel eine HTML-Seite oder eine auszuführende Operation. Der Listener 210 überreicht die Browseranforderung an den Lastverteiler 214 ohne irgendeinen Versuch zur Interpretation der Browseranforderung. Der Lastverteiler 214
    • (1) kommuniziert mit dem virtuellen-Pfad-Manager 250 zum Identifizieren einer durch die Browseranforderung ausgewählten Cartridge und zum Bestimmen, ob die Cartridge eine Authentifizierung benötigt,
    • (2) kommuniziert mit dem Authentifizierungs-Server 252, wenn die Cartridge eine Authentifizierung benötigt, zum Bestimmen, ob es dem Browser erlaubt ist auf die ausgewählte Cartridge zuzugreifen,
    • (3) kommuniziert mit dem Ressourcen-Manager, wenn der Zugriff erlaubt ist, zum Bestimmen der spezifischen Instanz der ausgewählten Cartridge zu welcher die Browser-Anforderung gesendet werden soll und
    • (4) erzeugt und sendet eine überarbeitete Browser-Anforderung zum Ausführen durch die angegebene Instanz der Cartridge, nach Erhalt der Browser-Anforderung.
  • Die überarbeitete Browser-Anforderung verpackt Informationen wieder, die in der ursprünglichen Browser-Anforderung empfangen wurden. Die überarbeitete Browser-Anforderung kann zum Beispiel ein Kontextobjekt aufweisen, welches Daten enthält, die für den ordentlichen Betrieb der Cartridge benötigt werden. Die für den ordentlichen Betrieb der Cartridge benötigten Daten können zum Beispiel eine Transaktions-ID aufweisen, welche eine Transaktion identifiziert, mit der die Browser-Anforderung gekoppelt ist.
  • Wenn die Cartridge auf die Anforderung antwortet, sendet die Cartridge die Antwort an den Lastverteiler und der Lastverteiler gibt die Antwort an den Listener zum Übertragen zum Browser, der die Anforderung ausgelöst hat.
  • Konfigurations-Versorger
  • Gemäß einem Ausführungsbeispiel der Erfindung werden Cartridges, welche mit dem Web-Anwendungs-Server 280 benutzt werden sollen, zuerst mit dem Web-Anwendungs-Server 280 registriert. Während des Registrierungsprozesses werden Informationen über die Cartridges an dem Konfigurations-Versorger 256 bereitgestellt. Der Konfigurations-Versorger 256 speichert die Information als Metadaten 258 zum späteren Zugriff durch die Komponenten des Web-Anwendungs-Servers 280.
  • Die Metadaten 285 können zum Beispiel aufweisen:
    • (1) den Cartridge-Namen;
    • (2) die minimale Anzahl von benötigten Instanzen;
    • (3) die maximale Anzahl von Instanzen;
    • (4) den Ort des Codes, der die Cartridge implementiert;
    • (5) die Programm-abhängigen Funktionsnamen, welche durch die Cartridge-Ausführungs-Engine zum Ausführen der Rückruf-Funktionen (Initialisierung, Anforderungenbehandlung, Abschaltung) benutzt werden;
    • (6) eine Liste von Maschinen zum Ausführen der Cartridge;
    • (7) die Leerzeit für die Cartridge (die Menge von Zeit die für Instanzen der Cartridge erlaubt ist, unbenutzt zu sein, bevor sie abgeschaltet werden);
    • (8) ein Objekt-Identifizierer; und
    • (9) Daten, welche den Typ des Authentifizierungsdienstes anzeigen, welche, wenn überhaupt, mit der Cartridge benutzt werden.
  • Der Objekt-Identifizierer gibt die Daten an, welche durch eine Browser-Anforderung, zum Anfordern von Leistung einer Operation durch die entsprechende Cartridge, bereitgestellt werden müssen. Der Objekt-Typ kann ein spezielles Wort oder eine URL sein oder kann einen virtuellen Pfad wie "/java" aufweisen.
  • Wenn einmal der Konfigurations-Versorger 256 die Konfigurations-Information für eine bestimmte Cartridge in den Metadaten 258 gespeichert hat, wird diese Cartridge automatisch registriert, wenn der Web-Anwendungs-Server 280 gestartet wurde.
  • Nachdem eine Cartridge mit dem Web-Anwendungs-Server 280 registriert ist, initiiert der Ressourcen-Manager 254 die minimale Anzahl von Instanzen für die Cartridge. Wenn einmal die minimale Anzahl von Instanzen initiiert wurde, ist der Web-Anwendungs-Server 280 zum Ausführen von Browseranforderungen vorbereitet.
  • Virtueller-Pfad-Manager
  • Wie oben erwähnt, kommunizieren Lastverteiler mit dem virtuellen-Pfad-Manager 250 zum Bestimmen, wohin jede überarbeitete Browser-Anforderung geleitet wird. Insbesondere weist jede Browser-Anforderung typischerweise eine URL auf. Durch den Erhalt einer Browser-Anforderung sendet der Lastverteiler die URL in der Anforderung zum virtuellen-Pfad-Manager 250. Der virtuelle-Pfad-Manager 250 antwortet durch Senden von Daten an den Lastverteiler, wenn überhaupt, welche die Cartridge identifizieren, die mit der URL gekoppelt ist.
  • Um die benötigte Information an den Lastverteilern bereitzustellen, konsultiert der virtuelle-Pfad-Manager 250 die Metadaten 258, welche URLs auf Cartridges abbilden. In Antwort auf den Erhalt einer Browser-Anforderung benutzt der virtuelle-Pfad-Manager 250 die Abbildungsdaten zum Bestimmen der Cartridge, zu welcher die in der Browser-Anforderung enthaltene URL entspricht.
  • Wenn zum Beispiel die Browser-Anforderung eine URL-Anforderung ist, welche mit dem virtuellen Pfad "/java" beginnt, kann die Abbildung anzeigen, dass die JAVA-Interpreter-Cartridge zum Behandeln von Anforderungen, welche den virtuellen Pfad "/java" haben, konfiguriert ist.
  • Gemäß einem Ausführungsbeispiel der Erfindung bestimmt der virtuelle-Pfad-Manager 250 auch, ob die mit der URL gekoppelte Cartridge eine Authentifizierung benötigt. Wenn die Cartridge eine Authentifizierung benötigt, zeigt der virtuelle-Pfad-Manager 250 in der Antwort an, dass der virtuelle-Pfad-Manager 250 an den Lastverteiler sendet, dass eine Authentifizierung benötigt wird. Wenn eine Authentifizierung nicht benötigt wird, erzeugt und sendet der Lastverteiler eine überarbeitete Browser-Anforderung an eine Instanz der Cartridge ohne Aufruf des Authentifizierungs-Servers 252. Wenn eine Authentifizierung benötigt ist, sendet der Lastverteiler die überarbeitete Anforderung nur dann an eine Instanz der Cartridge, nachdem der Authentifizierungs-Server anzeigt, dass die überarbeitete Anforderung an eine Instanz der Cartridge übermittelt werden kann.
  • Ressourcen-Manager
  • Der Ressourcen-Manager 254 des Web-Anwendungs-Servers 280 verwaltet die Ausführung von jeder der Cartridges durch Auslösen einer vorgegebenen minimalen Anzahl von Instanzen für die Cartridges, Last-Ausgleich zwischen den Instanzen jeder Cartridge und Aufruf neuer Instanzen der Cartridges, wenn nötig bis zu einer vorgegebenen maximalen Anzahl von Instanzen einer gegebenen Cartridge.
  • Angenommen zum Beispiel, dass die Metadaten für eine bestimmte Cartridge (Cl) die folgenden Informationen aufweisen:
    Name = Cl
    Minimale Instanzen = 10
    Maximale Instanzen = 50
    Hostmaschinen = M1, M2, M3
    Leerzeit = 30 Sekunden
  • Basierend auf diesen Metadaten löst der Ressourcen-Manager 254 zehn Instanzen von C1 aus, wenn Cartridge C1 zuerst registriert wird. Der Ressourcen-Manager 254 löst die zehn Instanzen auf Maschinen aus, welche mit den Titeln M1, M2 und M3 gekoppelt sind.
  • Auf den Empfang von Anforderungen von Lastverteilern zum Zugriff auf C1 hin, bestimmt der Ressourcen-Manager 254, ob irgendeine existierende Instanz-von C1 zum Benutzen verfügbar ist. Wenn keine Instanz von C1 verfügbar ist, wenn eine Anforderung empfangen wird, bestimmt der Ressourcen-Manager 254, ob schon die maximale Anzahl von Instanzen von C1 läuft. Wenn die maximale Anzahl von Instanzen von C1 noch nicht läuft, löst der Ressourcen-Manager 254 eine neue Instanz von C1 auf einer der möglichen Hostmaschinen aus und überträgt eine Nachricht, welche die neue Instanz identifiziert, an den Lastverteiler, der die Anforderung ausgegeben hat. Wenn die maximale Anzahl von Instanzen von C1 schon läuft, dann sendet der Ressourcen-Manager 254 eine Nachricht an den Lastverteiler, der die Anforderung ausgegeben hat, welche anzeigt, dass die Anforderung zu dieser Zeit nicht behandelt werden kann.
  • Last-Ausgleich
  • Gemäß einem Ausführungsbeispiel der Erfindung wendet der Ressourcen-Manager 254 einen Satz von Last-Ausgleichs- Regeln an zum Bestimmen wo Instanzen der Cartridges initiiert werden sollen, wenn es mehr als eine mögliche Hostmaschine gibt. Folglich sind in dem obigen Beispiel M1, M2 und M3 alle befähigt, zum Ausführen von Instanzen der Cartridge C1. Wenn M1, M2 und M3 dieselbe Verarbeitungskapazität haben, kann es wünschenswert sein, die Instanzen gleichmäßig auf die drei Maschinen zu verteilen. Wenn jedoch M1 zehn Mal die Verarbeitungsleistung von M2 und M3 hat, kann es wünschenswert sein, alle Instanzen von C1 bis zu einem gewissen Punkt auf M1 zu initiieren und dann zusätzliche Instanzen gleichmäßig auf M1, M2 und M3 zu verteilen.
  • Um den Ressourcen-Manager 254 beim Bestimmen zu unterstützen, wie die Last auf mögliche Maschinen verteilt wird, können die für jede Cartridge gespeicherten Metadaten zusätzliche Details aufweisen. Die Metadaten können zum Beispiel eine separate minimale und maximale Anzahl von Instanzen für jede Maschine angeben. Die minimalen und maximalen Werte pro Maschine können anstelle von oder in Kombination mit einem minimalen und maximalen Wert, der auf alle Maschinen anwendbar ist, benutzt werden. Der Ressourcen-Manager 254 kann dann neue Instanzen auf die Maschinen verteilen, basierend darauf, welche Maschine das kleinste Verhältnis von gegenwärtig ausgeführten Instanzen zu maximal für diese Maschine erlaubten Instanzen hat.
  • Die Metadaten können auch eine Reihenfolge angeben für die Maschinen, welche eine bestimmte Cartridge ausführen können. Die Maschine an der (N + 1)ten Position in der Reihenfolge wird nur dann zum Ausführen von Instanzen der Cartridge benutzt, wenn die Maschine an der Nten Position in der Reihenfolge schon ihre, an der Nten Maschine erlaubte, maximale Anzahl von Instanzen ausführt.
  • Anstelle von oder zusätzlich zu der maximalen und aktuellen Anzahl von Instanzen auf jeder einzelnen Maschine kann der Ressourcen-Manager 254 auch verschiedene Systemparameter berücksichtigen zum Bestimmen, welche Maschine eine neue Instanz einer Cartridge aufnehmen soll. Solche Parameter können zum Beispiel die Menge von unbenutztem Speicher auf einer Maschine, die Gesamtzahl von gegenwärtig auf der Maschine laufenden Prozessen, den Typ der Maschine usw. aufweisen. Für jede mögliche Maschine bestimmt der Ressourcen-Manager 254 den gewichteten Mittelwert dieser Parameter. Die Maschine mit dem höchsten gewichteten Mittelwert wird dann zum Aufnehmen der neuen Cartridge-Instanz ausgewählt.
  • Cartridge-Instanz-Statusverfolgung
  • Gemäß einem Ausführungsbeispiel der Erfindung unterhält der Ressourcen-Manager 254 Zustands-Information um die Cartridge-Instanzen, die erzeugt wurden, im Auge zu behalten. Die Zustands-Information weist Daten auf, welche die Instanz identifizieren, die Maschine identifizieren, welche die Instanz ausführt und den Listener identifizieren, an welchen die Instanz zugewiesen wurde.
  • 5 zeigt eine Tabelle 500, welche von dem Ressourcen-Manager 254 zum Speichern dieser Zustands-Information unterhalten werden kann. Tabelle 500 weist eine Instanz-Spalte 502, eine Cartridge-Spalte 504, eine Listener-Spalte 506 und eine Maschinen-Spalte 508 auf. Jede Zeile der Tabelle 500 entspricht einer einzelnen Cartridge-Instanz. Innerhalb der Zeile für eine gegebene Cartridge-Instanz identifiziert die Cartridge-Spalte 504 die Cartridge, welche mit der Cartridge-Instanz gekoppelt ist und Instanz-Spalte 502 zeigt die Instanz-Nummer der Cartridge-Instanz. Zeile 510 zum Beispiel entspricht einer Instanz der Cartridge C1. Deshalb gibt Cartridge-Spalte 504 aus Zeile 510 Cartridge C1 an. Instanz-Spalte 502 aus Zeile 510 gibt an, dass die Zeile 510 zugeordnete Cartridge-Instanz, Instanz 1 der Cartridge C1 ist.
  • Die Listener-Spalte 506 gibt den Listener an, zu welchem die, einer Zeile zugeordnete, Cartridge-Instanz zugeordnet ist. Die Maschinen-Spalte 508 gibt die Maschine an, auf welcher die mit einer Zeile verknüpfte Cartridge-Instanz ausgeführt wird. Die mit der Zeile 510 verknüpfte Cartridge-Instanz zum Beispiel wurde Listener 210 zugewiesen und wird auf Maschine M1 ausgeführt.
  • Ähnlich dem Ressourcen-Manager 254, unterhält jeder Lastverteiler Zustandsinformationen für die Cartridge-Instanzen, welche dem Listener zugewiesen wurden, zu welchem der Lastverteiler verknüpft ist. Solche Zustandsinformationen können zum Beispiel in einer Tabelle 400, wie in Figure 4 geneigt, unterhalten werden. Ähnlich zur Tabelle 500, weist Tabelle 400 eine Instanz-Spalte 402 und eine Cartridge-Spalte 404 auf, welche jeweils Instanz-Nummern und Cartridge-Identifizierer enthalten. Während jedoch Tabelle 500 einen Eintrag für jede Cartridge-Instanz aufweist, welche durch den Ressourcen-Manager 254 zugewiesen ist, weist Tabelle 400 nur Einträge für Cartridge-Instanzen auf, welche einem besonderen Listener zugewiesen sind. Tabelle 400 weist zum Beispiel nur für diejenigen in Tabelle 500 aufgeführten Cartridge-Instanzen Einträge auf, welche dem Listener 210 zugewiesen sind.
  • Zusätzlich zur Instanz-Spalte 402 und Cartridge-Spalte 404, weist Tabelle 400 eine Status-Spalte 406 auf. Für jede Zeile hält die Status-Spalte 406 einen Wert, welcher den Status der mit der Zeile verknüpften Instanz anzeigt. Die Status-Spalte 406 der Zeile 408 zeigt zum Beispiel an, dass Instanz 1 der Cartridge C1 gegenwärtig beschäftigt ist. Im erläuterten Ausführungsbeispiel hält die Status-Spalte 406 einen Merken, welcher anzeigt, dass eine Cartridge-Instanz entweder "beschäftigt" oder "frei" ist. Die Bedeutung des Cartridge-Status soll nun mit Bezug zum Betrieb des Ressourcen-Manager 254 und der Lastverteiler 214 und 220 beschrieben werden.
  • Wechselwirkung zwischen Lastverteilern und dem Ressourcen-Manager
  • Wie oben erklärt, kommunizieren Lastverteiler mit dem Ressourcen-Manager 254, wenn sie eine überarbeitete Browser-Anforderung an eine besondere Cartridge senden sollen. Gemäß einem Ausführungsbeispiel der Erfindung bestimmen Lastverteiler zuerst, ob eine Instanz der geeigneten Cartridge (1) schon dazu zugewiesen wurde und (2) verfügbar ist zum Verarbeiten der neuen überarbeiteten Browser-Anforderung. Wenn eine geeignete Cartridge-Instanz schon zu dem Lastverteiler zugewiesen, wurde und gegenwärtig zum Verarbeiten der neuen überarbeiteten Browser-Anforderung verfügbar ist, dann sendet der Lastverteiler die überarbeitete Browser-Anforderung an die Cartridge-Instanz, ohne weitere Kommunikation mit dem Ressourcen-Manager 254.
  • Angenommen zum Beispiel, dass Listner 210 eine Browser-Anforderung erhält, welche gemäß dem virtuellen-Pfad-Manager 250 durch die Cartridge C1 ausgeführt werden muss. Angenommen auch, dass Tabelle 400 die gegenwärtige Liste und den Status der Cartridge-Instanzen, welche dem Listener 210 zugewiesen sind, wiederspiegelt. Nach Erhalt der Browser-Anforderung vom Listener 210, untersucht der Lastverteiler 214 die Tabelle 400 zum Auffinden einer freien Instanz der Cartridge C1. In der gezeigten Tabelle 400 zeigt Zeile 410, dass Instanz 3 der Cartridge C1 gegenwärtig frei ist. Daher sendet der Lastverteiler 214 eine überarbeitete Browser-Anforderung direkt zur Instanz 3 der Cartridge C1 ohne weitere Kommunikation mit dem Ressourcen-Manager 254. In Antwort auf das Senden der überarbeiteten Browser-Anforderung wechselt der Lastverteiler 214 den Status-Wert in der Status-Spalte 406 in Zeile 410 auf "beschäftigt".
  • Wenn ein Listener noch nicht eine geeignete Cartridge-Instanz zugewiesen hat, welche gegenwärtig verfügbar ist, dann fordert der mit der Cartridge verknüpfte Lastverteiler eine Cartridge-Instanz vom Ressourcen-Manager 254 an. Wenn der Ressourcen-Manager 254 feststellt, dass eine Instanz der benötigten Cartridge nicht verfügbar ist und die Anzahl der existierenden Instanzen der benötigten Cartridge unterhalb des Maximums ist, dann initiiert der Ressourcen-Manager 254 eine neue Cartridge. Beim Initiieren einer neuen Cartridge fügt der Ressourcen-Manager 254 einen Eintrag für die neue Cartridge-Instanz in Tabelle 500 ein.
  • Angenommen zum Beispiel, dass der Listener 210 eine Browser-Anforderung erhält, welche durch die Cartridge C3 ausgeführt werden muss. Angenommen auch, dass die Instanz 3 der Cartridge C3 bisher noch nicht initiiert wurde. Unter diesen Bedingungen sendet der Lastverteiler 204 an den Ressourcen-Manager 254 eine Anforderung für eine Bearbeitung zu einer Instanz der Cartridge C3. In Antwort auf diese Anforderung initiiert der Ressourcen-Manager 254 Instanz 3 der Cartridge C3 auf Maschine M3. Zusätzlich fügt der Ressourcen-Manager 254 in Tabelle 500 den in Zeile 512 gefundenen Eintrag ein.
  • Nach dem Einfügen der Zeile 512 für Instanz 3 der Cartridge C3 in Tabelle 500 sendet der Ressourcen-Manager 254 eine Bearbeitung zu der neu geschaffenen Instanz an den Lastverteiler 214 zurück. In Antwort auf den Erhalt dieser Bearbeitung, fügt der Lastverteiler 214 einen Eintrag (Zeile 412) für die neue Instanz in seine Status-Tabelle 400 ein. Der Lastverteiler 214 überträgt dann eine überarbeitete Browser-Anforderung an Instanz 3 der Cartridge C3.
  • Freigeben von Cartridge-Instanzen
  • Gemäß einem Ausführungsbeispiel der Erfindung geben Listener nicht automatisch das Eigentum an Cartridge-Instanzen auf, wenn die Cartridge-Instanz aufhört, auf ausstehende Browser-Anforderungen zu antworten. Angenommen zum Beispiel, dass Instanz 3 der Cartridge C3 eine überarbeitete Browser-Anforderung erhält, die überarbeitete Browser-Anforderung bearbeitet und eine Antwort zurück an den Lastverteiler 214 sendet. Der Lastverteiler 214 sendet die Antwort an den Listener 210, damit sie an den Browser, der die Browser-Anforderung ausgegeben hat, zurückgesendet wird.
  • In diesem Moment benötigt der Listener 210 nicht länger das Eigentum an Instanz 3 der Cartridge C3. Dennoch, eher als Übertragen des Eigentums an Instanz 3 der Cartridge C3 zurück zum Ressourcen-Manager 254, ändert der Lastverteiler 214 lediglich die Status-Spalte 406 in Zeile 412 von "beschäftigt" nach "frei".
  • Das Wechseln des Wertes in Status-Spalte 406 in Zeile 412 auf "frei" zeigt an, dass Instanz 3 der Cartridge C3 nicht länger an einer Anforderung arbeitet und deshalb zum behandeln folgender Anforderungen bereit ist. Da Tabelle 400, welche anzeigt, dass Instanz 3 der Cartridge C3 verfügbar ist, jedoch lokal durch den Lastverteiler 214 unterhalten wird, ist Instanz 3 der Cartridge C3 nur für folgende Browser-Anforderungen verfügbar, die beim Listener 210 ankommen. Zeile 512 von Tabelle 500, welche vom Ressourcen-Manager 254 unterhalten wird, zeigt weiter an, dass Instanz 3 der Cartridge C3 vom Listener 210 besessen wird.
  • Da Listener nicht automatisch jedes Mal Cartridge-Instanzen freigeben, wenn eine Anforderung ausgeführt wurde, wird mit der Kommunikation zwischen dem Ressourcen-Manager 254 und den verschiedenen Lastverteilern verknüpfter Überhang bedeutend reduziert. Angenommen zum Beispiel, dass ein Listener 210 zehn aufeinanderfolgende Anforderungen erhält, die an Cartridge C3 übertragen werden müssen. Eher als mit dem Ressourcen-Manager 254 für jede der zehn Anforderungen zu kommunizieren, kann der Lastverteiler 214 mit dem Ressourcen-Manager 254 in Antwort auf die erste Anforderung kommunizieren. Die folgenden neun Anforderungen können durch den Lastverteiler 214 behandelt werden, ohne mit dem Ressourcen-Manager 254 zu kommunizieren, da der Lastverteiler 214 dieselbe Instanz von C3 benutzt, welche die erste zu verarbeitende Anforderung bearbeitet, zum Verarbeiten der neun folgenden Anforderungen.
  • Während die nicht-automatische Freigabe des Listener-Eigentums an Cartridge-Instanzen, wenn jede Anforderung bedient ist, den Nutzwert des Web-Anwendungs-Server 280 erhöhen kann, können Listener das Eigentum einer Cartridge-Instanz nicht unbegrenzt aufrechterhalten. Instanzen zum Beispiel, die seit einer langen Zeitperiode nicht benutzt wurden, sollten an den Ressourcen-Manager 254 zurückgegeben werden, so dass sie freigegeben werden können, zum Freigeben von Ressourcen. Außerdem ist es für einen Listener nicht effizient, das Eigentum der Instanz einer Cartridge aufrecht zu erhalten, welche seit einer relativ langen Zeit nicht benutzt wurde, wenn andere Listener Instanzen dieser Cartridge benötigen.
  • Demzufolge kommuniziert der Ressourcen-Manager 254 mit jedem Listener nach einer maximalen Leerzeit für jede an den Listener übergebene Cartridge-Instanz. Die maximale Leerzeit zeigt die maximale Summe von Zeit an, die eine Cartridge-Instanz unbenutzt laufen kann, bevor der Listener den Eigentum der Cartridge-Instanz freigeben muss. Angenommen zum Beispiel, dass der Ressourcen-Manager 254 dem Listener 210 anzeigt, dass die maximale Summe von Leerzeit für Instanz 3 der Cartridge C3 10 Minuten ist. Basierend auf dieser Information kann der Listener 210 mit der Anwendung von Instanz 3 der Cartridge C3 zum Ausführen von Browser-Anforderungen für Cartridge C3 weitermachen, so lange wie Instanz 3 der Cartridge C3 nicht im Leerlauf ist oder "frei" ist für mehr als 10 Minuten.
  • Wenn Instanz 3 der Cartridge C3 für mehr als 10 Minuten untätig ist, entfernt der Lastverteiler 214 die Zeile 412 aus der Tabelle 400 und sendet eine Nachricht an den Ressourcen-Manager 254, dass Listener 210 den Eigentum von Instanz 3 der Cartridge C3 freigibt. In Antwort auf diese Nachricht aktualisiert der Ressourcen-Manager 254 die Zeile 512 zum Anzeigen, dass Instanz 3 der Cartridge C3 nicht von irgendeinem Listener besessen wird und daher wieder einem anderen Listener zugewiesen werden kann oder beendet werden kann.
  • In einem alternativen Ausführungsbeispiel geben Lastverteiler Cartridge-Instanzen nicht automatisch frei, wenn die Leerzeit für die Cartridge-Instanz abgelaufen ist. Stattdessen sendet der Lastverteiler eine Nachricht an den Ressourcen-Manager 254, welche anbietet, dass die abgelaufene Instanz freigegeben wird. Der Ressourcen-Manager 254 kann auf das Angebot antworten, indem er den Listener auffordert, die Cartridge-Instanz freizugeben oder indem er dem Listener erlaubt, das Eigentumsrecht der abgelaufenen Cartridge-Instanz zu behalten.
  • Gemäß einem Ausführungsbeispiel der Erfindung unterhält der Ressourcen-Manager 254 eine Warteschlange der Anforderungen, welche nicht sofort bedient werden können. Wenn es möglich wird, eine anstehende Anforderung zu bedienen, wird die Anforderung von der Warteschlange entfernt und bearbeitet.
  • Angenommen zum Beispiel, dass der Listener 222 eine Browser-Anforderung erhält, welche durch die Cartridge C1 bearbeitet werden muss und dass Listener 222 nicht irgendeiner Instanz der Cartridge C1 zugewiesen ist. Der Lastverteiler 226 sendet eine Anforderung für eine Instanz von C1 zum Ressourcen-Manager 254. Weiter angenommen, dass ein Maximum von 50 Instanzen von C1 erlaubt ist und dass 50 Instanzen von C1 dem Listener 210 zugewiesen wurden. Unter diesen Bedingungen kann der Ressourcen-Manager 254 die Anforderung des Listeners 222 nicht bedienen. Daher gibt der Ressourcen-Manager 254 die Anforderung in eine Warteschlange. Wenn der Listener 210 eine Instanz von C1 freigibt kommuniziert der Ressourcen-Manager 254 mit dem Listener 222, dass eine Instanz von C1 verfügbar ist.
  • Unter bestimmten Bedingungen kann der Ressourcen-Manager präventiv veranlassen, dass ein Listener eine Cartridge-Instanz freigibt. Zum Beispiel kann der Ressourcen-Manager 254 eine Systemüberlast-Situation erkennen und durch Beendigen eines Satzes von Cartridge-Instanzen antworten, entweder vor oder nach dem Informieren der Listener, denen die Cartridge-Instanzen aktuell zugewiesen sind, dass die Cartridge-Instanzen beendet werden.
  • Der Ressourcen-Manager 254 kann auch präventiv einen Listener zum Freigeben von Cartridge-Instanzen zum Implementieren von Fairnesspolitik zwischen Listenern bewegen. Der Ressourcen-Manager 254 kann zum Beispiel einen Listener, der die meisten Instanzen einer gegebenen Cartridge hält, veranlassen, eine Instanz der Cartridge freizugeben, wenn ein anderer Listener mehr als eine vorgegebene Schwelle einer Zeitspanne auf eine Instanz der Cartridge gewartet hat. Wenn dem Listener 210 zum Beispiel 50 Instanzen der Cartridge C1 zugewiesen sind und C1 ein Maximum von 50 Instanzen hat, dann kann der Ressourcen-Manager 254 den Listener 210 veranlassen, eine Instanz von C1 zehn Sekunden nach dem Erhalt einer Anforderung für eine Instanz von C1 von einem anderen Listener freizugeben.
  • Cartridge-Ausführungs-Engines
  • Gemäß einem Ausführungsbeispiel der Erfindung ist jede Cartridge-Instanz aus einer Cartridge-Ausführungs-Engine und einer Cartridge zusammengesetzt. Eine Cartridge-Ausführungs-Engine ist ein Codemodul, welches Cartridges isoliert von den Komplexitäten des Web-Anwendungs-Servers 280 und des Inter-Maschinen-Kommunikations-Mechanismus, welcher zum Übertragen der Nachrichten zwischen den verschiedenen Komponenten des Web-Anwendungs-Servers 280 benutzt wird.
  • Eine Cartridge wird verfügbar gemacht für eine Cartridge-Ausführungs-Engine durch Speichern von Zeigern zu den Cartridge-Funktionen in einer Funktionstabelle. Gemäß einem Ausführungsbeispiel liefern alle Cartridges die Funktionen, die in dem oben beschriebenen, beispielhaften Cartridge-Interface beschrieben sind. Da alle Cartridges dieselbe Schnittstelle unterstützen, kann eine einzelne Standard-Cartridge-Ausführungs-Engine mit allen Cartridges benutzt werden.
  • Wie in 2 gezeigt, weist der Web-Anwendungs-Server 280 Cartridge-Ausführungs-Engines 228, 232 und 236 jeweils für die Cartridges 230, 234 bzw. 238 auf. Die Cartridge-Ausführungs-Engines steuern die Ausführung der entsprechenden Cartridges durch Ausführen von Aufrufen in die Cartridges durch die Standard-Schnittstelle. Durch das Einrichten grundlegender Rückruf-Funktionen zwischen der Cartridge-Ausführungs-Engine und einer Cartridge kann jede Cartridge in den Web-Anwendungs-Server 280 integriert werden durch Konfigurieren der Cartridge zum Antworten auf die Rückruf-Funktionen und dann Registrieren der Cartridge im Konfigurations-Versorger 256.
  • Gemäß einem Ausführungsbeispiel der Erfindung sind Cartridges als Gemeinschaftsbibliotheken implementiert und Cartridge-Ausführungs-Engines sind ausführbare Programme, welche die Routinen in den Gemeinschaftsbibliotheken unter Verwendung der Standard-Cartridge-Schnittstelle aufrufen. Die Cartridge-Ausführungs-Engine stellt die Schnittstelle zwischen Cartridges und dem Lastverteiler bereit, lenkt den Cartridge-Steuerungsablauf und liefert Dienste zum Benutzen durch die Cartridges.
  • Wenn der Ressourcen-Manager 254 die Erzeugung einer neuen Cartridge-Instanz fordert, veranlasst der Ressourcen-Manager 254 das Realisieren einer Cartridge-Ausführungs-Einheit. Die dadurch erzeugte Instanz der Cartridge-Ausführungs-Engine veranlasst wiederum das Realisieren der zugehörigen Cartridge. Der Ressourcen-Manager 254 kann das Realisieren der Cartridge-Ausführungs-Engine veranlassen, zum Beispiel durch Aufrufen einer "Cartridge-Ausführungs-Engine-Fabrik", welche sich auf der Maschine befindet, auf der die Cartridge ausgeführt werden muss. Die Instanz der Cartridge-Ausführungs-Engine kann die Realisierung der Cartridge veranlassen, zum Beispiel durch Ausführen eines Aufrufes zu einer der Routinen in der Gemeinschaftsbibliothek, welche die Cartridge ausmachen.
  • In Ausführungsbeispielen in welchen Cartridges als Gemeinschaftsbibliotheken implementiert sind, werden die Cartridges und die Cartridge-Ausführungs-Engines als ein einzelner Prozess ausgeführt. Das heißt, eine Cartridge wird auf derselben Maschine und in demselben Adressraum ausgeführt, wie die Cartridge-Ausführungs-Engine, die Aufrufe in die Cartridge ausführt. In solchen Ausführungsbeispielen kann die Cartridge vor der Ausführung statisch mit der Cartridge-Ausführungs-Engine verbunden sein oder zur Laufzeit mit der Cartridge-Ausführungs-Engine dynamisch verbunden sein.
  • Gemäß einem anderen Ausführungsbeispiel können die Cartridge-Ausführungs-Einheiten als getrennte Prozesse von den Cartridges, mit denen sie kommunizieren, ablaufen. Zum Reduzieren der Programmierlast der Cartridge-Entwickler jedoch laufen der Cartridge-Ausführungs-Engine-Prozess und sein entsprechender Cartridge-Prozess auf derselben Maschine ab.
  • Bezeichnenderweise brauchen sowohl im Einzel-Prozess-, als auch im Getrennt-Prozess-Ausführungsbeispiel, die Cartridge-Entwickler die Komplexitäten der Inter-Maschinen-Kommunikation nicht ansprechen. Alle Kommunikation zwischen einer Cartridge und Komponenten des Web-Anwendungs-Servers, welche über andere Maschinen verteilt sind, wird mittels der Cartridge-Ausführungs-Engine durchgeführt, welche auf derselben Maschine ist, wie die Cartridge. Die Cartridge kann daher als nicht wissend bezeichnet werden, dass sie in einem System benutzt wird, welches über mehrere Maschinen verteilt ist.
  • Cartridge-Wapper-Beispiel
  • Bezogen auf 2, wenn der Lastverteiler 214 bestimmt, dass die PL/SQL-Runtime-Cartridge die geeignete Cartridge zum Verarbeiten einer Anforderung ist, sendet der Lastverteiler 214 die Anforderung an eine Cartridge-Instanz ab, welche eine, mit der PL/SQL-Runtime-Cartridge verknüpfte, Cartridge-Ausführungs-Engine aufweist. Wenn eine neue Instanz initiiert werden muss, erzeugt der Ressourcen-Manager 254 eine neue Instanz der PL/SQL-Runtime-Cartridge in einem separaten Adressraum und sendet die Anforderung zu der Cartridge-Ausführungs-Engine 228 der neuen Instanz. Der zum Ausführen der Instanz des Programms benutzte Adressraum kann innerhalb des Speichers des Computersystems sein, auf welchem eine oder mehrere der Komponenten des Web-Anwendungs-Servers 218 ausgeführt werden oder auf einem anderen Computersystem.
  • In Antwort auf eine Nachricht von einem Lastverteiler, gibt die Cartridge-Ausführungs-Engine eine Anforderungsbearbeitungs-Rückruffunktion zu der Cartridge aus, was die Cartridge zum Verarbeiten der Anforderung veranlasst. Die Cartridge, welche die Anforderung ausführt, gibt das Ergebnis an die Cartridge-Ausführungs-Engine zurück, welche das Ergebnis an den Lastverteiler weiterleitet. Im Fall, dass der Web-Anwendungs-Server 280 einen Fehler im Betrieb entdeckt, gibt die Cartridge-Ausführungs-Engine einen Abschaltbefehl der Cartridge aus.
  • Daher bietet die Cartridge-Ausführungs-Engine eine Anwendungs-Programmierschnittstelle zum Web-Anwendungs-Server 280, welche auszuführende vorgegebene Operationen beschreiben. Der Gebrauch der Standard-Cartridge-Schnittstelle ermöglicht es den Programmierern der Cartridges jede Cartridge für eine hohe Integration in den Web-Anwendungs-Server 280 zu konfigurieren, unabhängig von den Protokollen welche vom einzelnen Web-Listener benutzt werden, mit welchem die Cartridge benutzt wird.
  • Transport-Adapter
  • Listener erlauben den Gebrauch von serverseitigen Plug-Ins durch Bereitstellen einer Programmierschnittstelle und eines Protokolls zum Gebrauch mit solchen Plug-Ins.
  • Unglücklicherweise variieren die von Listenern bereitgestellten Programmierschnittstellen und Protokolle von Listener zu Listener. Zum Beispiel sind das "Netscape Server Application Programming Interface (NSAPI)", das "Internet Server Application Programming Interface (ISAPI) und das "Application Development Interface (ADI)" drei Beispiele von gegenwärtig durch Listenern bereitgestellte verschiedene Programmierschnittstellen.
  • Transport-Adapter isolieren Lastverteiler von den proprietären Protokollen und Schnittstellen, die von Web-Listenern benutzt werden. Insbesondere ist jeder Transport-Adapter zum Erkennen der Protokolle von verschiedenen Listenern konfiguriert und zum Konvertieren der, von den Listenern empfangenen, Browser-Anforderungen in konvertierte Browser-Anforderungen, welche ein Standard-Lastverteiler-Protokoll haben, welches unabhängig vom Protokoll des Listeners ist. In ähnlicher Weise konvertieren Transport-Adapter die Antworten von den Lastverteilern in das Transport-Protokoll der Listener.
  • Die Transport-Adapter ermöglichen es dem Web-Anwendungs-Server 280 folglich, das er mit Listenern von verschiedenen Händlern benutzt wird. Außerdem können Transport-Adapter zum Anpassen von unterschiedlichen Server-Architekturen und Betriebssystemen konfiguriert sein.
  • Betrieb des Web-Anwendungs-Servers
  • 3A und 3B sind Flussdiagramme, welche ein Verfahren zum Antworten auf eine Browser-Anforderung gemäß einem Ausführungsbeispiel der Erfindung zeigen. Die Browser-Anforderung wird in Schritt 350 von einem Listener empfangen. Für den Zweck der Erklärung soll angenommen werden, dass die Browser-Anforderung vom Browser 202 ausgegeben wurde und vom Listener 210 empfangen wurde.
  • Auf den Empfang der Browser-Anforderung hin leitet der Listener 210 in Schritt 352 die Anforderung an den Web-Anwendungs-Server 280 weiter. Genauer gibt der Listener 210 die Anforderung weiter zum Transport-Adapter 212 unter Benutzung der proprietären Programmierschnittstelle von Listener 210. Der Transport-Adapter 212 konvertiert die Anforderung wie nötig zum Weiterleiten der Anforderung zum Lastverteiler 214 unter Benutzung einer Standard-Lastverteiler-Programmierschnittstelle.
  • Der Lastverteiler 214 identifiziert den Objekttyp der Anforderung, der der Browser-Anforderung in Schritt 354 entspricht, basierend auf dem virtuellen Pfad, welcher in der Browser-Anforderung durch Kommunikation mit dem virtuellen Pfadmanager 250 beschrieben ist. Der Lastverteiler 214 bestimmt in Schritt 356, ob der Anforderungsobjekttyp einer identifizierbaren Cartridge entspricht. Wenn der Anforderungsobjekttyp nicht einer identifizierbaren Cartridge entspricht, wird die Anforderung in Schritt 358 an den Listener 210 zurückgegeben (siehe 3B). Wenn in Schritt 358 der Listener 210 die Anforderung als eine Anforderung auf eine statische HTML-Seite erkennt, greift der Listener auf die statische HTML-Seite zu und sendet die HTML-Seite in Schritt 360 zum Browser 202. Wenn die Browser-Anforderung nicht durch den Listener 210 erkannt wird, wird die Antwort, welche anzeigt, dass die Anforderung nicht erkennbar war, in Schritt 360 an den Browser 202 gesendet. Wenn der Lastverteiler 214 in Schritt 356 bestimmt, dass (1) die Anforderung an eine Cartridge gesendet werden muss und (2) dem Listener 210 nicht irgendeine Instanz dieser Cartridge, welche gegenwärtig "frei" ist, zugewiesen ist, dann kommuniziert der Lastverteiler 214 mit dem Ressourcen-Manager 254 um eine Instanz der Cartridge 230 zugewiesen zu bekommen, zu welcher die Browser-Anforderung gesendet werden kann. In Schritt 362, gezeigt in 3B, bestimmt der Ressourcen-Manager 254 ob eine Instanz der identifizierten Cartridge verfügbar (eigentümerlos) ist unter der existierenden Anzahl von Instanzen. Für die Zwecke der Erklärung soll angenommen werden, dass die Anforderung mit Cartridge 230 verknüpft ist und dass Cartridge 230 eine PL/SQL-Runtime-Cartridge ist.
  • Wenn in Schritt 362 der Ressourcen-Manager eine verfügbare Instanz identifiziert, zum Beispiel Instanz 260 der PL/SQL-Runtime 230, informiert der Ressourcen-Manager 254 den Lastverteiler 214, dass die Anforderung an die Instanz 260 gesendet werden soll. Der Lastverteiler 214 erzeugt und sendet dann in Schritt 368 eine überarbeitete Browser-Anforderung an die Cartridge-Ausführungs-Engine 228 der Instanz 260 um die verfügbare Instanz 260 zu veranlassen, die Anforderung, wie oben beschrieben, zu verarbeiten.
  • Wenn jedoch in Schritt 362 keine Instanz der Cartridge 230 verfügbar ist, bestimmt der Ressourcen-Manager 254 in Schritt 364, ob die existierende Anzahl von Instanzen eine vorgegebene maximale Anzahl überschreitet. Wenn die existierende Anzahl von Instanzen die vorgegebene maximal Anzahl in Schritt 364 überschreitet, zeigt der Ressourcen-Manager 254 dem Lastverteiler 214 an, dass die Anforderung zu dieser Zeit nicht bearbeitet werden kann. Der Lastverteiler 214 sendet in Schritt 358 in Antwort die Anforderung an den Listener 210 zurück, nach welcher der Web-Listener 210 in Schritt 360 eine Antwort an den Browser 202 über das Netzwerk sendet, welche anzeigt, dass die Anforderung nicht bearbeitet wurde.
  • Wenn eine Cartridge-Instanz gegenwärtig nicht zum Behandeln einer Anforderung verfügbar ist, kann alternativ Listener 210 die Anforderung auf eine Warteliste für diese Cartridge-Instanz setzen. Wenn eine Cartridge-Instanz verfügbar wird, wird die überarbeitete Browser-Anforderung von der Warteliste entfernt und an die Cartridge-Instanz weitergeleitet. Wenn die überarbeitete Browser-Anforderung über mehr als eine vorgegebene Zeitspanne auf der Warteliste bleibt, kann der Listener 210 die Anforderung von der Warteliste entfernen und eine Nachricht an den Browser 202 senden, welche anzeigt, dass die Anforderung nicht bearbeitet werden konnte.
  • Wenn in Schritt 364 die existierende Anzahl von Instanzen die vorgegebene maximale Anzahl nicht überschreitet, initiiert der Ressourcen-Manager 254 eine neue Instanz des identifizierten Programms und informiert den Lastverteiler 214, dass eine auf der Browser-Anforderung basierende, überarbeitete Browser-Anforderung, an die neue Instanz gesendet werden soll. Der Lastverteiler 214 sendet dann eine überarbeitete Browser-Anforderung an die Cartridge-Ausführungs-Engine der neuen Instanz ab.
  • Angenommen zum Beispiel, dass der Ressourcen-Manager 254 die Instanz 260 in Antwort auf die Browser-Anforderung initiiert hat. Während der Initialisierung wird auf die gespeicherten Befehlsfolgen für die PL/SQL-Runtime zum Erzeugen einer neuen Instanz 260 der Cartridge 230 in einem Adressraum zugegriffen, der getrennt vom Adressraum ist, in dem der Lastverteiler 214 ausgeführt wird. Gemäß einem Ausführungsbeispiel wird die Initialisierung durchgeführt durch Laden der Cartridge-Ausführungs-Engine 228 und durch Veranlassen der Cartridge-Ausführungs-Engine, die Initialisierungs-Routine in Cartridge 230 aufzurufen.
  • Wenn die neue Instanz 260 läuft, sendet der Lastverteiler 214 die Anforderung zu der Cartridge-Ausführungs-Engine 228, welche der neuen Instanz 260 in Schritt 368 zugeordnet ist. Die Cartridge-Ausführungs-Engine 228 sendet eine Rückruf-Nachricht an die neue Instanz 260 zum Anfordern der Ausführung der Anforderung. In der Rückruf-Nachricht übergibt die Cartridge-Ausführungs-Engine 228 jeden Parameter, der für die Bearbeitung der Anforderung für die Instanz 260 nötig ist. Solche Parameter können zum Beispiel Passwörter, Datenbank-Suchschlüssel oder irgendwelche anderen Argumente für eine von der Instanz 260 ausgeführten dynamischen Funktion aufweisen.
  • Die Instanz 260 führt dann die Anforderung aus. Während der Ausführung der Anforderung durch die Instanz in Schritt 368, überwacht der Lastverteiler 214 die Instanz zum Bestimmen des Auftretens eines Fehlers in Schritt 370. Wenn der Lastverteiler 214 in Schritt 370 einen Fehler entdeckt, ruft der Lastverteiler 214 die entsprechende Cartridge-Ausführungs-Engine 228 in Schritt 372 zum Abbruch der Instanz 260, welche den Fehler hat, auf. Die entsprechende Cartridge-Ausführungs-Engine 228 wiederum gibt einen Abschalt-Befehl über die API an die fehlerhafte Instanz aus. Die dem Abschalt-Befehl durch die Cartridge-Ausführungs-Engine 228 entsprechende Instanz wird abgeschaltet, ohne irgendeinen anderen Prozess in irgendeinem anderen Adressraum zu beeinflussen.
  • Wenn in Schritt 370 kein Fehler entdeckt wird, empfängt der Lastverteiler 214 eine Antwort von der Instanz 260 bei Abschluss der Ausführung in Schritt 374. Der Lastverteiler 214 sendet die Antwort in Schritt 376 an den Listener 210, welcher an den Browser mit der Antwort von der ausgeführten Instanz 260 antwortet. Nach dem Ausführen der Instanz 260 hält der Lastverteiler 214 die Instanz in Schritt 378 im Speicher, wie in Schritt 378 gezeigt, zum Ermöglichen der Ausführung einer anschließenden Anforderung.
  • Verteilte Architektur des Web-Servers
  • Bezeichnenderweise kommunizieren die verschiedenen Komponenten des Web-Anwendungs-Servers 280 untereinander einen Kommunikations-Mechanismus benutzend, der von den Komponenten nicht verlangt, dass sie im selben Adressraum oder-sogar auf derselben Maschine ausgeführt werden. Im gezeigten Ausführungsbeispiel sind die Komponenten des Web-Anwendungs-Servers 280 zum Kommunizieren mittels eines Object-Request-Brokers (ORB) 282 konfiguriert. Object-Request-Broker sind in "Common Object Request Broker: Architecture and Specification (CORBA)" im Detail beschrieben. Dieses und andere sich auf CORBA beziehende Dokumente können im World Wide Web auf http://www.omg.org gefunden werden.
  • Während die Ausführungsbeispiele der Erfindung mit Bezug auf Kommunikationen mittels eines CORBA-gefälligen ORB beschrieben werden sollten, können andere Plattformübergreifende Kommunikationsmechanismen benutzt werden. Die Komponenten des Web-Anwendungs-Servers 280 zum Beispiel können alternativ miteinander durch Benutzen der Remote Procedure Calls (RPC), einer UNIX-Pipe oder Microsoft COM kommunizieren.
  • Da verschiedene Komponenten des Web-Anwendungs-Servers 280 miteinander mittels Benutzen eines Maschinenunabhängigen Kommunikations-Mechanismus kommunizieren, gibt es keine inhärenten Beschränkungen mit Hinsicht auf wo die Komponenten lokalisiert sind in Bezug zu jeder anderen. Listener 210, 216 und 222 zum Beispiel können auf derselben Maschine ausgeführt werden oder auf drei komplett unterschiedlichen Maschinen, wobei jedes ein unterschiedliches Betriebssystem besitzt. Ähnlich können der Authentifizierungs-Server 252, der virtuelle-Pfad-Manager 250, der Ressourcen-Manager 254 und der Konfigurations-Versorger 256 auf derselben Maschine ausgeführt werden oder auf vier verschiedenen Maschinen. Ferner müssen diese vier verschiedenen Maschinen nicht irgendeine Überlappung mit den drei Maschinen, welche die Listener 210, 216 und 222 ausführen, haben.
  • Die Cartridge-Ausführungs-Engines 228, 232 und 236 vereinigen alle der nötigen Logikelemente zum Kommunizieren mit den anderen Komponenten des Web-Anwendungs-Servers 280 mittels des Object-Request-Brokers 282. Deshalb ist die Lage der Cartridge-Instanzen selbst nicht inhärent durch die Kommunikationsmechanismen beschränkt. Daher kann Instanz 260 auf komplett unterschiedlicher Maschine und Betriebssystem als Lastverteiler ausgeführt werden, von denen sie die Anforderungen erhält. Ähnlich kann Instanz 260 auf einer unterschiedlichen Maschine und einem unterschiedlichen Betriebssystem als der Ressourcen-Manager 254 oder irgendeine der anderen Komponenten des Web-Anwendungs-Servers 280 sein, eingeschlossen Instanzen von anderen Cartridges, welche durch denselben Web-Anwendungs-Server 280 verwaltet werden.
  • Cartridge-Isolation
  • Bezeichnenderweise ist die Lage-Unabhängigkeit die von den Cartridges genossen wird, die vom Web-Anwendungs-Server 280 benutzt werden, mittels der Kommunikations-Logik der Cartridge-Ausführungs-Engine erreicht und nicht mittels irgendeiner Benutzerprogrammierung in den Cartridges selbst. Folglich müssen die Cartridges nicht speziell zum Ausführen in einer verteilten Anwendungs-Server-Umgebung entwickelt sein. Cartridge-Entwickler sind dadurch von den Komplexitäten eines verteilten Systems isoliert und können ihre Anstrengungen auf die Logik konzentrieren, die mit den Aufgaben gekoppelt sind, für welche die Cartridges entworfen sind.
  • Wenn um Beispiel der Inter-Maschinen-Kommunikations-Mechanismus ein Object-Request-Broker ist, ist es für alle Module, die durch den Object-Request-Broker kommunizieren, nötig, ihre Schnittstellen durch Benutzen einer Interface Definition Language (IDL) zu definieren und sie müssen inhärent und auf gewissen Basisklassen aufgebaut sein. Diese und andere Schwierigkeiten machen es relativ komplex Module aufzubauen, die zur Inter-Maschinen-Kommunikation fähig sind. Da Cartridge-Ausführungs-Engines die Cartridges vom Object-Request-Broker isolieren, müssen sich die Cartridge-Entwickler nicht nach diesen Beschränkungen richten. Cartridge-Entwickler können deshalb ihre Anstrengungen auf das Schreiben von Code zum Erfüllen der speziellen Funktion konzentrieren, aufgrund deren Durchführung die Cartridges aufgerufen werden.
  • Wie oben beschrieben wird ein Web-Anwendungs-Server 280 bereitgestellt, der mehrere Instanzen von verschiedenen Cartridges zum Verarbeiten einer Vielfalt von Benutzeranforderungen verwaltet. Jede Cartridge-Instanz wird in einem separaten Speicherraum vom Listener ausgeführt, wodurch die Sicherheitsprobleme, welche mit serverseitigen Plug-Ins verbunden sind, vermieden werden. Ferner können die Cartridge-Instanzen, die zum Verarbeiten der von einem Listener empfangenen Browser-Anforderungen benutzt werden, auf komplett verschiedenen Maschinen als die Listener ausgeführt werden. Dadurch wird die Skalierbarkeit des Systems erhöht, während die Last auf jeder bestimmten Maschine reduziert wird.
  • Zusätzlich steuert der Web-Anwendungs-Server 280 auch die Anzahl von Instanzen für jede gegebene Cartridge. Daher werden serverseitige Ressourcen zum Sicherstellen gesteuert, dass eine große Anzahl von Anforderungen nicht irgendeine Maschine durch eine unkontrollierbare Erzeugung von Instanzen überschwemmt.
  • Ferner wird auch der Ausführungsdurchfluss überarbeitet durch Unterhalten einer minimalen Anzahl von ausführungsbereiten Instanzen. Zusätzliche Instanzen können initiiert und im Speicher zum Ausführen folgender Anforderungen unterhalten werden, im Gegensatz zum Beenden einer Instanz nach einer einzelnen Ausführung und dann Wiederladen der Cartridge in den Speicher zum Wiedererschaffen einer Instanz zum Ausführen einer folgenden Anforderung.
  • In der vorangegangenen Beschreibung wurde die Erfindung mit Bezug auf spezifische Ausführungsbeispiele daraus beschrieben. Dennoch ist es offensichtlich, dass verschiedene Modifikationen und Änderungen dazu gemacht werden können, ohne vom breiteren Schutzbereich der Erfindung abzurücken. Die Beschreibungen und Zeichnungen sind dementsprechend eher in einer illustrierenden als in einer beschränkenden Weise zu sehen.

Claims (28)

  1. Verfahren zum Ausführen einer Operation in einem verteilten System, wobei das Verfahren aufweist, Ausführen eines Lastverteilers (214) auf einer ersten Maschine, Ausführen einer Cartridge-Ausführungs-Engine (228) auf einer zweiten Maschine, wobei die zweite Maschine verschieden von der ersten Maschine ist, wobei der Lastverteiler (214) von einem Web-Listener (210) eine erste Nachricht empfängt, welche ein Ausführen der Operation anfordert, wobei die erste Nachricht zu dem Lastverteiler (214) geschickt wurde in Antwort darauf, dass der Web-Listener (210) eine Browser-Anforderung von einem Browser (202) empfangen hat, wobei das Verfahren dadurch gekennzeichnet ist, dass: der Lastverteiler (214) in Antwort auf die erste Nachricht eine zweite Nachricht mittels einen Inter-Maschinen-Kommunkations-Mechanismus (282) sendet an die Cartridge-Ausführungs-Engine (228); die Cartridge-Ausführungs-Engine (228) in Antwort auf die zweite Nachricht, eine dritte Nachricht durch eine Standard-Cartridge-Schnittstelle.an eine Cartridge (230) weitergibt, welche auf der zweiten Maschine ausführt, wobei die Cartridge (23D) eine aus einer Mehrzahl von Cartridges ist, von denen jede Routinen enthält, welche durch die Standard-Cartridge-Schnittstelle aufgerufen werden, wobei unterschiedliche Cartridges der Mehrzahl von Cartridges die Routinen unterschiedlich implementieren, dadurch wird jede der unterschiedlichen Cartridges dazu veranlasst, unterschiedliche Operationen in Antwort auf Aufrufe durchzuführen, welche durch die Standard-Cartridge-Schnittstelle empfangen werden; und die Cartridge (230) in Antwort auf Empfangen der dritten Nachricht die Operation ausführt.
  2. Verfahren gemäß Anspruch 1, ferner die Schritte aufweisend: nach Ausführen der Operation gibt die Cartridge (230) eine vierte Nachricht an die Cartridge-Ausführungs-Engine (228) weiter; in Antwort auf die vierte Nachricht sendet die Cartridge-Ausführungs-Engine (228) eine fünfte Nachricht an den Lastverteiler (214); und in Antwort auf die fünfte Nachricht, sendet der Lastverteiler eine sechste Nachricht für den Web-Listener (210) an den Web-Listener (210) zum Weiterleiten an den Browser (202).
  3. Verfahren gemäß Anspruch 2, wobei der Schritt, dass der Lastverteiler (214) eine zweite Nachricht an die Cartridge-Ausführungs-Engine (228) sendet, dadurch ausgeführt wird, dass der Lastverteiler (214) eine zweite Nachricht an die Cartridge-Ausführungs-Engine (228) sendet, durch einen Object-Request-Broker.
  4. Verfahren gemäß Anspruch 3, wobei der Schritt, dass die Cartridge-Ausführungs-Engine (228) eine fünfte Nachricht an den Lastverteiler (214) sendet, dadurch ausgeführt wird, dass die Cartridge-Ausführungs-Engine (228) eine fünfte Nachricht an den Lastverteiler sendet, durch den Object-Request-Broker.
  5. Verfahren gemäß Anspruch 1, wobei: die Cartridge (230) eine Gemeinschaftsbibliothek ist; und der Schritt, dass die Cartridge-Ausführungs-Engine (228) eine dritte Nachricht an die Cartridge (230) sendet, den Schritt aufweist, dass die Cartridge (230) einen Aufruf an eine Routine in der Gemeinschaftsbibliothek macht.
  6. Verfahren gemäß Anspruch 5, ferner den Schritt aufweisend, dass die Cartridge-Ausführungs-Engine (228) zur Kompilierungszeit statisch an die Cartridge (230) gebunden wird.
  7. Verfahren gemäß Anspruch 5, ferner den Schritt aufweisend dass die Cartridge-Ausführungs-Engine (228) zur Ausführungszeit dynamisch an die Cartridge (230) gebunden wird.
  8. Verfahren gemäß Anspruch 1, wobei: die Cartridge-Ausführungs-Engine (228) mit der Cartridge (230) durch eine bestimmte Anwendungs-Programmier-Schnittstelle kommuniziert; und das Verfahren ferner den Schritt aufweist, dass die Cartridge-Ausführungs-Engine (228) durch die bestimmte Anwendungs-Programmier-Schnittstelle mit einer zweiten Cartridge kommuniziert, welche andere Operationen als die Cartridge (230) ausführt.
  9. Verfahren gemäß Anspruch 2, wobei: der Schritt, dass die Cartridge-Ausführungs-Engine (228) eine dritte Nachricht an eine Cartridge (230) weitergibt, ausgeführt wird, indem die Cartridge-Ausführungs-Engine (228) eine Routine in der Cartridge (230) aufruft; und der Schritt, dass die Cartridge (230) eine vierte Nachricht an die Cartridge-Ausführungs-Engine (228) weitergibt, ausgeführt wird, indem aus der Routine, welche in der Cartridge (230) aufgerufen wurde, zurückgekehrt wird.
  10. Computerlesbares Medium, welches eine oder mehrere Sequenzen von Befehlen, zum Ausführen einer Operation in einem verteilten System trägt, wobei das computerlesbare Medium, Befehle zum Ausführen eines Lastverteilers (214) auf einer ersten Maschine, Ausführen einer Cartridge-Ausführungs-Engine (228) auf einer zweiten Maschine aufweist, wobei die zweite Maschine von der ersten verschieden ist, wobei der Lastverteiler (214) von einem Web-Listener (210) eine erste Nachricht empfängt, welche das Ausführen der Operation anfordert, wobei die erste Nachricht in Antwort darauf, dass der Web-Listener (210) eine Browser-Anforderung von einem Browser (202) empfangen hat, an den Lastverteiler (214) gesendet wurde, wobei das computerlesbare Medium gekennzeichnet ist durch Befehle zum Ausführen der Schritte von: in Antwort auf die erste Nachricht sendet der Lastverteiler (214) eine zweite Nachricht mittels einen Inter-Maschinen-Kommunkations-Mechanismus (282) an die Cartridge-Ausführungs-Engine (228); in Antwort auf die zweite Nachricht gibt die Cartridge-Ausführungs-Engine (228), eine dritte Nachricht durch eine Standard-Cartridge-Schnittstelle an eine Cartridge (230) weiter, welche auf der zweiten Maschine ausführt, wobei die Cartridge (230) eine aus einer Mehrzahl von Cartridges ist, von denen jede Routinen enthält, welche durch die Standard-Cartridge-Schnittstelle aufgerufen werden, wobei unterschiedliche Cartridges der Mehrzahl von Cartridges die Routinen unterschiedlich implementieren, dadurch wird jede der unterschiedlichen Cartridges dazu veranlasst, unterschiedliche Operationen in Antwort auf Aufrufe durchzuführen, welche durch die Standard-Cartridge-Schnittstelle empfangen werden; und in Antwort auf Empfangen der dritten Nachricht führt die Cartridge (230) die Operation aus.
  11. Computerlesbares Medium gemäß Anspruch 10, ferner aufweisend Befehle zum Ausführen der Schritte: nach Ausführen der Operation gibt die Cartridge (230) eine vierte Nachricht an die Cartridge-Ausführungs-Engine (228) weiter; in Antwort auf die vierte Nachricht sendet die Standard-Cartridge-Schnittstelle eine fünfte Nachricht an den Lastverteiler (214); und in Antwort auf die fünfte Nachricht sendet der Lastverteiler eine sechste Nachricht für den Web-Listener (210) an den Web-Listener (210) zum Weiterleiten an den Browser (202).
  12. Computerlesbares Medium gemäß Anspruch 11, wobei der Schritt, dass der Lastverteiler (214) eine zweite Nachricht an die Cartridge-Ausführungs-Engine (228) sendet, dadurch ausgeführt wird, dass der Lastverteiler (214) eine zweite Nachricht an die Cartridge-Ausführungs-Engine (228) sendet, durch einen Object-Request-Broker.
  13. Computerlesbares Medium gemäß Anspruch 12, wobei der Schritt, dass die Cartridge-Ausführungs-Engine (228) eine fünfte Nachricht an den Lastverteiler (214) sendet dadurch ausgeführt wird, dass die Cartridge-Ausführungs-Engine (228) eine fünfte Nachricht an den Lastverteiler sendet, durch den Object-Request-Broker.
  14. Computerlesbares Medium gemäß Anspruch 10, wobei: die Cartridge (230) eine Gemeinschaftsbibliothek ist; und der Schritt, dass die Cartridge-Ausführungs-Engine (228) eine dritte Nachricht an die Cartridge (230) sendet, den Schritt aufweist, dass die Cartridge (230) einen Aufruf an eine Routine in der Gemeinschaftsbibliothek macht.
  15. Computerlesbares Medium gemäß Anspruch 10, wobei: die Cartridge-Ausführungs-Engine (228) mit der Cartridge (230) durch eine bestimmte Anwendungs-Programmierungs-Schnittstelle kommuniziert; und das computerlesbare Medium ferner den Schritt aufweist, dass die Cartridge-Ausführungs-Engine (228) durch die bestimmte Anwendungs-Programmier-Schnittstelle mit einer zweiten Cartridge kommuniziert, welche andere Operationen als die Cartridge (230) ausführt.
  16. Computerlesbares Medium gemäß Anspruch 11, wobei: der Schritt, dass die Cartridge-Ausführungs-Engine (228) eine dritte Nachricht an eine Cartridge (230) weitergibt, ausgeführt wird, indem die Cartridge-Ausführungs-Engine (228) eine Routine in der Cartridge (230) aufruft; und der Schritt, dass die Cartridge (230) eine vierte Nachricht an die Cartridge-Ausführungs-Engine (228) weitergibt, ausgeführt wird, indem aus der Routine, welche in der Cartridge (230) aufgerufen wird, zurückgekehrt wird.
  17. System zum Ausführen von Operationen, welche mit Browser-Anforderungen assoziiert sind, wobei das System eine Mehrzahl von Lastverteilern aufweist, welche an eine Mehrzahl von Web-Listener gekoppelt sind, wobei das System gekennzeichnet ist durch: einen Inter-Maschinen-Kommunikations-Mechanismus (282); eine Mehrzahl von Cartridges, wobei jede der Cartridges Routinen enthält, welche durch eine Standard-Cartridge-Schnittstelle aufgerufen werden, wobei unterschiedliche Cartridges unterschiedliche Operationen in Antwort auf Aufrufe, welche durch die Standard-Cartridge-Schnittstelle empfangen werden, ausführen; eine Mehrzahl von Cartridge-Ausführungs-Engines, welche mit der Mehrzahl von Lastverteilern durch den Inter-Maschinen-Kommunikations-Mechanismus (282) kommunizieren und mit der Mehrzahl von Cartridges kommunizieren mittels Machens von Aufrufen an die Routinen in der Mehrzahl von Cartridges durch die Standard-Cartridge-Schnittstelle; wobei jeder Lastverteiler (214) der Mehrzahl von Lastverteilern so konfiguriert ist, dass er durch den Inter-Maschinen-Kommunikations-Mechanismus (282) eine erste Nachricht an eine bestimmte Cartridge-Ausführungs-Engine (228) der Mehrzahl von Cartridge-Ausführungs-Engines sendet in Antwort darauf, dass ein Web-Listener (210) eine Browser-Anforderung empfängt, welche eine bestimmte Cartridge (230) auffordert, eine Operation auszuführen; und wobei die bestimmte Cartridge-Ausführungs-Engine (228) so konfiguriert ist, dass sie auf die erste Nachricht antwortet, indem sie durch die Standard-Cartridge-Schnittstelle eine Routine in der bestimmten Cartridge (230) aufruft, welche die Operation ausführt.
  18. System gemäß Anspruch 17, wobei der Inter-Maschinen-Kommunikations-Mechanismus (282) für die bestimmte Cartridge (230) transparent ist; die bestimmte Cartridge (230) derart konfiguriert ist, dass sie eine zweite Nachricht an die bestimmte Cartridge-Ausführungs-Engine (228) sendet, durch die Standard-Cartridge-Schnittstelle auf Rücksendung von der Routine; und wobei die bestimmte Cartridge-Ausführungs-Engine (228) derart konfiguriert ist, dass sie eine dritte Nachricht basierend auf der zweiten Nachricht an den Lastverteiler (214) durch den Inter-Maschinen-Kommunikations-Mechanismus (282) sendet.
  19. System gemäß Anspruch 17, wobei der Inter-Maschinen-Kommunikations-Mechanismus (282) ein Object-Request-Broker ist.
  20. Verfahren, welches bewirkt, dass eine Cartridge (230) innerhalb eines verteilten Systems Operationen in einer Verteilung-unbewußten-Weise auszuführen, wobei das Verfahren das Ausführen der Cartridge (230) auf einer bestimmten Maschine aufweist, wobei das Verfahren gekennzeichnet ist durch: Weitergeben von Anforderungen an die Cartridge (230) durch eine Cartridge-Ausführungs-Engine (228), welche mit der Cartridge (230) assoziiert ist, von anderen Komponenten des verteilten Systems, wobei die Anforderungen von der Cartridge-Ausführungs-Engine (228) durch eine Standard-Kommunikations-Schnittstelle an die Cartridge (230) weitergegeben werden; Weitergeben von Antworten der Cartridge (230) durch die Cartridge-Ausführungs-Engine (228), welche mit der Cartridge assoziiert ist, an die anderen Komponenten des verteilten Systems; wobei die Cartridge-Ausführungs-Engine (228) und die Cartridge (230) auf einer ersten Maschine ausführen; und wobei die anderen Komponenten nicht auf der ersten Maschine ausführen.
  21. Verfahren gemäß Anspruch 20, wobei der Schritt des Weitergehens von Anforderungen an die Cartridge (230) durch eine Cartridge-Ausführungs-Engine (228), welche mit der Cartridge (230) assoziiert ist, von anderen Komponenten des verteilten Systems die Schritte aufweist: Senden der Anforderung an die Cartridge-Ausführungs-Engine (228) durch einen Inter-Maschinen-Kommunikations-Mechanismus (282); und Senden der Anforderung von der Cartridge-Ausführungs-Engine (228) an die Cartridge (230) dadurch, dass die Cartridge-Ausführungs-Engine (228) veranlasst wird, eine Routine in der Cartridge (230) aufzurufen.
  22. Verfahren gemäß Anspruch 21, wobei der Schritt des Sendens der Anforderung an die Cartridge-Ausführungs-Engine (228) durch einen Inter-Maschinen-Kommunikations-Mechanismus durchgeführt wird mittels Sendens der Anforderung an die Cartridge-Ausführungs-Engine (228) durch einen Object-Request-Broker.
  23. Verfahren zum Ausführen von Operationen, welche mit Browser-Anforderungen assoziiert sind, wobei das Verfahren, das Ausführen einer Mehrzahl von Lastverteilern aufweist, welche an eine Mehrzahl von Web-Listener gekoppelt sind, wobei das Verfahren gekennzeichnet ist durch: Ausführen einer Mehrzahl von Cartridges, wobei jede der Cartridges Routinen enthält, welche durch eine Standard-Cartridge-Schnittstelle aufgerufen werden, wobei unterschiedliche Cartridges unterschiedliche Operationen ausführen in Antwort auf Aufrufe, welche durch die Standard-Cartridge-Schnittstelle empfangen werden; Ausführen einer Mehrzahl von Cartridge-Ausführungs-Engines, welche mit der Mehrzahl von Lastverteilern durch einen Inter-Maschinen-Kommuikations-Mechanismus (282) kommunizieren und welche mit der Mehrzahl von Cartridges kommunizieren, indem sie durch die Standard-Cartridge-Schnittstelle Aufrufe an die Routinen in der Mehrzahl von Cartridges machen; wobei jeder Lastverteiler (214) der Mehrzahl von Lastverteilern so konfiguriert ist, dass er eine erste Nachricht durch den Inter-Maschinen-Kommunikations-Mechanismus (282) an eine bestimmte Cartridge-Ausführungs-Engine (228) der Mehrzahl von Cartridge-Ausführungs-Engines sendet, in Antwort darauf, dass ein Web-Listener (210) eine Browser-Anforderung empfängt, welche fordert, dass eine bestimmte Cartridge eine Operation ausführt; und wobei die bestimmte Cartridge-Ausführungs-Engine (228) derart konfiguriert ist, dass sie auf die erste Nachricht antwortet, indem sie durch die Standard-Cartridge-Schnittstelle eine Routine in der bestimmten Cartridge (230) aufruft, welche die Operation ausführt.
  24. Verfahren gemäß Anspruch 23, ferner aufweisend die Schritte von: Konfigurieren des Inter-Maschinen-Kommunikations-Mechanismuses (282), so dass er für die bestimmte Cartridge (230) transparent ist; Konfigurieren der bestimmten Cartridge (230), so dass auf Rücksendung von der Routine eine zweite Nachricht durch die Standard-Cartridge-Schnittstelle an die bestimmte Cartridge-Ausführungs-Engine (228) gesendet wird; und Konfigurieren der bestimmten Cartridge-Ausführungs-Engine (228), so dass sie eine dritte Nachricht basierend auf der zweiten Nachricht an den Lastverteiler (214) sendet durch den Inter-Maschinen-Kommunikations-Mechanismus (282).
  25. Verfahren gemäß Anspruch 23, wobei der Inter-Maschinen-Kommunikations-Mechanismus (282) als ein Object-Request-Broker konfiguriert ist.
  26. Computerlesbares Medium, welches eine oder mehrere Sequenzen von Befehlen trägt, welche bewirken, dass eine Cartridge eines verteilten Systems Operationen in einer Verteilung-unbewußten-Weise ausführt, wobei das computerlesbare Medium, Befehle zum Ausführen der Cartridge (230) auf einer bestimmten Maschine aufweist, wobei das computerlesbare Medium gekennzeichnet ist durch Befehle zum Ausführen der Schritte von: Weitergeben von Anforderungen an die Cartridge (230) durch eine Cartridge-Ausführungs-Engine (228), welche mit der Cartridge (230) assoziiert ist, von anderen Komponenten des verteilten Systems, wobei die Anforderungen von der Cartridge-Ausführungs-Engine (228) durch eine Standard-Kommunikations-Schnittstelle an die Cartridge (230) weitergegeben werden; Weitergeben von Antworten der Cartridge (230) durch die Cartridge-Ausführungs-Engine (228), welche mit der Cartridge assoziiert ist, an die anderen Komponenten des verteilten Systems; wobei die Cartridge-Ausführungs-Engine (228) und die Cartridge (230) auf einer ersten Maschine ausführen; und wobei die anderen Komponenten nicht auf der ersten Maschine ausführen.
  27. Verfahren gemäß Anspruch 26, wobei der Schritt des Weitergebens von Anforderungen an die Cartridge (230) durch eine Cartridge-Ausführungs-Engine (228), welche mit der Cartridge (230) assoziiert ist., von anderen Komponenten des verteilten Systems die Schritte aufweist: Senden der Anforderung an die Cartridge-Ausführungs-Engine (228) durch einen Inter-Maschinen-Kommunikations-Mechanismus (282); und Senden der Anforderung von der Cartridge-Ausführungs-Engine (228) an die Cartridge (230) dadurch, dass die Cartridge-Ausführungs-Engine (228) veranlasst wird, eine Routine in der Cartridge (230) aufzurufen.
  28. Verfahren gemäß Anspruch 27, wobei der Schritt des Sendens der Anforderung an die Cartridge-Ausführungs-Engine (228) durch einen Inter-Maschinen-Kommunikations-Mechanismus (282) durchgeführt wird mittels Sendens der Anforderung an die Cartridge-Ausführungs-Engine (228) durch einen Object-Request-Broker.
DE69814900T 1997-10-31 1998-10-28 Verfahren und system zur unterstützung verteilter software- entwicklung ohne bewusstsein der verteilten charakteristik der software Expired - Lifetime DE69814900T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/962,414 US6026404A (en) 1997-02-03 1997-10-31 Method and system for executing and operation in a distributed environment
US962414 1997-10-31
PCT/US1998/022820 WO1999023785A2 (en) 1997-10-31 1998-10-28 Method and system for facilitating distributed software development in a distribution unaware manner

Publications (2)

Publication Number Publication Date
DE69814900D1 DE69814900D1 (de) 2003-06-26
DE69814900T2 true DE69814900T2 (de) 2004-05-13

Family

ID=25505830

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69814900T Expired - Lifetime DE69814900T2 (de) 1997-10-31 1998-10-28 Verfahren und system zur unterstützung verteilter software- entwicklung ohne bewusstsein der verteilten charakteristik der software

Country Status (8)

Country Link
US (1) US6026404A (de)
EP (1) EP1027794B1 (de)
JP (1) JP2001522114A (de)
AU (1) AU746391B2 (de)
CA (1) CA2308772C (de)
DE (1) DE69814900T2 (de)
HK (1) HK1028690A1 (de)
WO (1) WO1999023785A2 (de)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6847987B2 (en) * 1998-09-30 2005-01-25 International Business Machines Corporation System and method for extending client-server software to additional client platforms for servicing thin clients requests
US6687900B1 (en) * 1998-11-19 2004-02-03 X/Net Associates, Inc. Method and system for loading instructions into an executing process
US6751606B1 (en) 1998-12-23 2004-06-15 Microsoft Corporation System for enhancing a query interface
US6782408B1 (en) * 1999-03-30 2004-08-24 International Business Machines Corporation Controlling a number of instances of an application running in a computing environment
US6842903B1 (en) * 1999-05-19 2005-01-11 Sun Microsystems, Inc. System and method for providing dynamic references between services in a computer system
EP1074925B8 (de) * 1999-08-06 2011-09-14 Ricoh Company, Ltd. Dokumentverwaltungssystem, Informationsverarbeitungsgerät, Dokumentverwaltungsverfahren und rechnerlesbares Aufzeichnungsmedium
WO2001040903A2 (en) * 1999-12-06 2001-06-07 Warp Solutions, Inc. System and method for enhancing operation of a web server cluster
US20010047385A1 (en) * 1999-12-30 2001-11-29 Jeffrey Tuatini Passthru to shared service funtionality
US7389246B1 (en) * 2000-02-15 2008-06-17 Insweb Corporation Insurance rating calculation software component architecture
US6514079B1 (en) 2000-03-27 2003-02-04 Rume Interactive Interactive training method for demonstrating and teaching occupational skills
US6687735B1 (en) 2000-05-30 2004-02-03 Tranceive Technologies, Inc. Method and apparatus for balancing distributed applications
CA2307155A1 (en) * 2000-04-28 2001-10-28 Ibm Canada Limited-Ibm Canada Limitee Execution of database queries including filtering
US20030050932A1 (en) * 2000-09-01 2003-03-13 Pace Charles P. System and method for transactional deployment of J2EE web components, enterprise java bean components, and application data over multi-tiered computer networks
WO2002029548A2 (en) * 2000-10-03 2002-04-11 Sun Microsystems, Inc. Http transaction monitor with capacity to replay in debugging session
US7814198B2 (en) * 2007-10-26 2010-10-12 Microsoft Corporation Model-driven, repository-based application monitoring system
US6609126B1 (en) 2000-11-15 2003-08-19 Appfluent Technology, Inc. System and method for routing database requests to a database and a cache
EP1346289A1 (de) * 2000-11-30 2003-09-24 Appfluent Technology, Inc. System und verfahren zum abliefern von dynamischem inhalt
US7010609B1 (en) * 2000-12-21 2006-03-07 Borland Software Corporation System and method for adding transport protocols in distributed middleware applications
US20020107835A1 (en) * 2001-02-08 2002-08-08 Coram Michael T. System and method for adaptive result set caching
US7178143B2 (en) * 2001-03-09 2007-02-13 Bea Systems, Inc. Multi-version hosting of application services
US20020178264A1 (en) * 2001-03-27 2002-11-28 Isource Concepts Inc. Secure creation and distribution of instructions to uniquely support network applications
US20020178227A1 (en) * 2001-05-25 2002-11-28 International Business Machines Corporation Routing instant messages using configurable, pluggable delivery managers
US20030014478A1 (en) * 2001-06-29 2003-01-16 Noble Alan C. Dynamically distributed client-server web browser
US7444410B1 (en) 2002-02-15 2008-10-28 Oracle International Corporation Application platform execution environment
US7194473B1 (en) 2002-02-15 2007-03-20 Oracle International Corporation Application platform development environment
US20030236813A1 (en) * 2002-06-24 2003-12-25 Abjanic John B. Method and apparatus for off-load processing of a message stream
US8020162B2 (en) * 2002-07-19 2011-09-13 International Business Machines Corporation Employing a resource broker in managing workloads of a peer-to-peer computing environment
US6973480B2 (en) * 2002-09-26 2005-12-06 Sun Microsystems, Inc. Mechanism for implementing server-side pluglets
US7353521B1 (en) * 2002-10-19 2008-04-01 Borland Software Corporation Object oriented distributed software system with methodology for piggybacked reflective callbacks
US7730012B2 (en) 2004-06-25 2010-06-01 Apple Inc. Methods and systems for managing data
US7437358B2 (en) 2004-06-25 2008-10-14 Apple Inc. Methods and systems for managing data
US7774326B2 (en) * 2004-06-25 2010-08-10 Apple Inc. Methods and systems for managing data
US20070124345A1 (en) * 2005-11-30 2007-05-31 Heinz Kathy K Library backup
US8024396B2 (en) * 2007-04-26 2011-09-20 Microsoft Corporation Distributed behavior controlled execution of modeled applications
US7970892B2 (en) * 2007-06-29 2011-06-28 Microsoft Corporation Tuning and optimizing distributed systems with declarative models
US8239505B2 (en) * 2007-06-29 2012-08-07 Microsoft Corporation Progressively implementing declarative models in distributed systems
US8230386B2 (en) * 2007-08-23 2012-07-24 Microsoft Corporation Monitoring distributed applications
US8181151B2 (en) * 2007-10-26 2012-05-15 Microsoft Corporation Modeling and managing heterogeneous applications
US7974939B2 (en) * 2007-10-26 2011-07-05 Microsoft Corporation Processing model-based commands for distributed applications
US7926070B2 (en) * 2007-10-26 2011-04-12 Microsoft Corporation Performing requested commands for model-based applications
US8099720B2 (en) 2007-10-26 2012-01-17 Microsoft Corporation Translating declarative models
US20090113292A1 (en) * 2007-10-26 2009-04-30 Microsoft Corporation Flexibly editing heterogeneous documents
US8225308B2 (en) * 2007-10-26 2012-07-17 Microsoft Corporation Managing software lifecycle
US20090112932A1 (en) * 2007-10-26 2009-04-30 Microsoft Corporation Visualizing key performance indicators for model-based applications
CN107332814B (zh) * 2016-04-29 2021-01-01 华为技术有限公司 一种请求消息传输方法及装置
US10481963B1 (en) * 2016-06-29 2019-11-19 Amazon Technologies, Inc. Load-balancing for achieving transaction fault tolerance
US10965780B2 (en) * 2018-01-18 2021-03-30 Bevara Technologies, Llc Browser navigation for facilitating data access
CN115299009A (zh) * 2019-12-16 2022-11-04 摩根大通国家银行 用于分布式账本系统的网关通信的系统和方法

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5361350A (en) * 1991-12-12 1994-11-01 International Business Machines Corporation Object oriented method management system and software for managing class method names in a computer system
WO1994001820A1 (en) * 1992-07-01 1994-01-20 Telefonaktiebolaget Lm Ericsson System for implementation-independent interface specification
US5329619A (en) * 1992-10-30 1994-07-12 Software Ag Cooperative processing interface and communication broker for heterogeneous computing environments
JP3003440B2 (ja) * 1993-01-19 2000-01-31 株式会社日立製作所 負荷分散制御方法および分散処理システム
JP3365576B2 (ja) * 1993-06-14 2003-01-14 インターナショナル・ビジネス・マシーンズ・コーポレーション オブジェクトの実行方法および装置
EP0746816B1 (de) * 1993-08-03 2001-10-24 Sun Microsystems, Inc. Flexible mehrfach-plattform-aufteilung für rechneranwendungen
GB2288477A (en) * 1994-04-05 1995-10-18 Ibm Communications system for exchanging data between computers in a network.
US5715314A (en) * 1994-10-24 1998-02-03 Open Market, Inc. Network sales system
US5623656A (en) * 1994-12-15 1997-04-22 Lucent Technologies Inc. Script-based data communication system and method utilizing state memory
DE69531599T2 (de) * 1994-12-20 2004-06-24 Sun Microsystems, Inc., Mountain View Verfahren und Gerät zum Auffinden und Beschaffen personalisierter Informationen
US5822585A (en) * 1995-02-21 1998-10-13 Compuware Corporation System and method for cooperative processing using object-oriented framework
US5761684A (en) * 1995-05-30 1998-06-02 International Business Machines Corporation Method and reusable object for scheduling script execution in a compound document
US5752246A (en) * 1995-06-07 1998-05-12 International Business Machines Corporation Service agent for fulfilling requests of a web browser
US5737592A (en) * 1995-06-19 1998-04-07 International Business Machines Corporation Accessing a relational database over the Internet using macro language files
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
US5774670A (en) * 1995-10-06 1998-06-30 Netscape Communications Corporation Persistent client state in a hypertext transfer protocol based client-server system
US5706442A (en) * 1995-12-20 1998-01-06 Block Financial Corporation System for on-line financial services using distributed objects
US5745681A (en) * 1996-01-11 1998-04-28 Sun Microsystems, Inc. Stateless shopping cart for the web
US5761673A (en) * 1996-01-31 1998-06-02 Oracle Corporation Method and apparatus for generating dynamic web pages by invoking a predefined procedural package stored in a database
US5859971A (en) * 1996-02-15 1999-01-12 International Business Machines Corp. Differencing client/server communication system for use with CGI forms
US5862325A (en) * 1996-02-29 1999-01-19 Intermind Corporation Computer-based communication system and method using metadata defining a control structure
US5761507A (en) * 1996-03-05 1998-06-02 International Business Machines Corporation Client/server architecture supporting concurrent servers within a server with a transaction manager providing server/connection decoupling
WO1997040457A2 (en) * 1996-04-19 1997-10-30 Intergraph Corporation System and method for data access
US5835712A (en) * 1996-05-03 1998-11-10 Webmate Technologies, Inc. Client-server system using embedded hypertext tags for application and database development
US5859972A (en) * 1996-05-10 1999-01-12 The Board Of Trustees Of The University Of Illinois Multiple server repository and multiple server remote application virtual client computer
US5864871A (en) * 1996-06-04 1999-01-26 Multex Systems Information delivery system and method including on-line entitlements
US5848246A (en) * 1996-07-01 1998-12-08 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server session manager in an interprise computing framework system
US5857191A (en) * 1996-07-08 1999-01-05 Gradient Technologies, Inc. Web application server with secure common gateway interface
US5860072A (en) * 1996-07-11 1999-01-12 Tandem Computers Incorporated Method and apparatus for transporting interface definition language-defined data structures between heterogeneous systems
US5897622A (en) * 1996-10-16 1999-04-27 Microsoft Corporation Electronic shopping and merchandising system
US5796393A (en) * 1996-11-08 1998-08-18 Compuserve Incorporated System for intergrating an on-line service community with a foreign service
US5826239A (en) * 1996-12-17 1998-10-20 Hewlett-Packard Company Distributed workflow resource management system and method
US5864866A (en) * 1997-03-26 1999-01-26 International Business Machines Corporation Apparatus and method for providing externalization in an object-oriented environment

Also Published As

Publication number Publication date
AU1203299A (en) 1999-05-24
EP1027794B1 (de) 2003-05-21
WO1999023785A2 (en) 1999-05-14
AU746391B2 (en) 2002-05-02
DE69814900D1 (de) 2003-06-26
CA2308772C (en) 2005-02-15
WO1999023785A3 (en) 1999-07-15
CA2308772A1 (en) 1999-05-14
JP2001522114A (ja) 2001-11-13
US6026404A (en) 2000-02-15
EP1027794A2 (de) 2000-08-16
HK1028690A1 (en) 2001-02-23

Similar Documents

Publication Publication Date Title
DE69814900T2 (de) Verfahren und system zur unterstützung verteilter software- entwicklung ohne bewusstsein der verteilten charakteristik der software
DE69824879T2 (de) Verteilter web- anwendungs- server
DE69810654T2 (de) Verfahren und gerät zum führen von transaktionen in einer zustandslosen web-umgebung, welche ein deklaratives paradigma unterstützt
DE69719620T2 (de) Vorrichtung und Verfahren zur Bestimmung von Server-Cluster-Topologien
DE69812899T2 (de) Webagent zur anforderung von mehreren prozessen
DE69730690T2 (de) Verfahren und apparat zum dynamischen austausch von objekt-nachrichten zwischen objekt-modellen
DE69724877T2 (de) Verfahren und Vorrichtung zum Betrieb einer Aggregation von Serverrechnern mittels eines Doppelzweck-Proxy-Servers
DE69026400T2 (de) System und Verfahren zur Verbindung von Anwendungen über verschiedene Netzwerke von Datenverarbeitungssystemen
DE60125705T2 (de) Vorrichtung und Verfahren zur Implementierung eines HTTP Programmstacks auf einem Client
DE69429686T2 (de) Transaktionsverwaltung in objektorientiertem System
DE69122830T2 (de) Verteiltes Konfigurationsprofil für ein Rechnersystem
DE69323675T2 (de) Partner-Mechanismus zum Verbinden von Systemen mit einer Umgebung für verteilte Berechnungen (UVB) und non-UVB Systemen zum Betrieb in einem Netzwerksystem
DE69317037T2 (de) Zusammenarbeitende Rechnerschnittstelle und Kommunikationsmakler für heterogene Umgebung
DE69129479T2 (de) Verteiltes Rechnersystem
DE69608166T2 (de) Rechnernetzwerk für WWW-Anbieter-Datenzugriff auf das Internet
DE69327448T2 (de) Verfahren und Vorrichtung für Teilaufgaben in verteiltem Verarbeitungssystem
DE69735348T2 (de) Skalierbare und erweiterbare Systemverwaltungsarchitektur mit datenlosen Endpunkten
DE69832354T2 (de) Netzwerkverwaltungsrahmenwerk
DE69128952T2 (de) Gerät und Verfahren zur Entkupplung von Datenaustauschdetails zur Beschaffung einer Hochleistungskommunikation zwischen Softwareprozessen
DE68919975T2 (de) Verfahren für die simultane Ablaufverwaltung eines verteilten Anwenderprogramms in einem Hostrechner und in einer grossen Anzahl von intelligenten Benutzerstationen in einem SNA-Netzwerk.
DE69228621T2 (de) Objektorientiertes verteiltes Rechnersystem
DE69630480T2 (de) Verfahren, Vorrichtung und Datenstrukturen zur Objektverwaltung
DE69909839T2 (de) Optimierte Lokalisierung von Netzwerkbetriebsmittel
DE69935920T2 (de) Lastausgleich in einer netzwerkumgebung
DE69636369T2 (de) Virtuelles lokales netz für multi-emulatoren in einer offenen systemumgebung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: ORACLE INTERNATIONAL CORP., REDWOOD SHORES, CALIF.

8328 Change in the person/name/address of the agent

Representative=s name: DENDORFER & HERRMANN PATENTANWAELTE PARTNERSCHAFT,