DE69824879T2 - Verteilter web- anwendungs- server - Google Patents

Verteilter web- anwendungs- server Download PDF

Info

Publication number
DE69824879T2
DE69824879T2 DE69824879T DE69824879T DE69824879T2 DE 69824879 T2 DE69824879 T2 DE 69824879T2 DE 69824879 T DE69824879 T DE 69824879T DE 69824879 T DE69824879 T DE 69824879T DE 69824879 T2 DE69824879 T2 DE 69824879T2
Authority
DE
Germany
Prior art keywords
instance
cartridge
message
resource manager
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
DE69824879T
Other languages
English (en)
Other versions
DE69824879D1 (de
Inventor
Tsung-Jen Chou
Seshu Adunuthula
Mala Anand
Ankur Sharma
Elaine Chien
Shehzaad Nakhoda
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
Application granted granted Critical
Publication of DE69824879D1 publication Critical patent/DE69824879D1/de
Publication of DE69824879T2 publication Critical patent/DE69824879T2/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/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
    • 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
    • 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
    • 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/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Description

  • GEBIET DER ERFINDUNG
  • Diese Erfindung betrifft Server-Architekturen in vernetzten Computersystemen, und insbesondere eine verteilte Architektur, welche ein dynamisches Bedienen von Anwender-Anfragen über verschiedene Maschinen hinweg ermöglicht.
  • HINTERGRUND DER ERFINDUNG
  • Das Welt-Weit-Netz ("World-Wide-Web") enthält ein Netzwerk von Servern auf dem Internet, von denen jeder mit einer oder mehreren HTML- (Hypertext-Markier-Sprache, "Hypertext Markup Language")-Seiten assoziiert ist. Die mit einem Server assoziierten HTML-Seiten stellen Informationen und Hypertext-Querverbindungen ("links") zu anderen Dokumenten auf diesem beziehungsweise (üblicherweise) einem anderen Server bereit. Server kommunizieren mit Client-Programmen [Deutsch: "Client-Programm"] unter Verwendung des Hypertext-Transfer-Protokolls (HTTP). Die Server hören auf Anfragen von Client-Programmen nach ihren HTML-Seiten, und werden daher häufig auch als "Hörer" ("listeners") bezeichnet.
  • Anwender des World-Wide-Web verwenden ein als Browser bezeichnetes Client-Programm, um bei Hörern nach Informationen nachzufragen, diese zu dekodieren und darzustellen. Wenn der Anwender einen Querverweis ("link") auf eine HTML-Seite auswählt, sendet der Browser, der diese Seite darstellt, über das Internet eine Anfrage an den jeweiligen Hörer, der mit dem in diesem Link spezifizierten Universelle-Ressource-Lokalisierer ("Universal Resource Locator", URL) assoziiert ist. In Antwort auf die Anfrage überträgt der Hörer die angefragte Information zu dem Browser, der die Anfrage ausgegeben hatte. Der Browser empfängt die Information, präsentiert die empfangene Information dem Anwender, und wartet auf die nächste Anwender-Anfrage.
  • Traditionellerweise liegt die auf Hörern gespeicherte Information in Form statischer HTML-Seiten vor. Statische HTML-Seiten werden vor einer Anfrage eines Web-Browsers erzeugt und auf dem Hörer gespeichert. In Antwort auf eine Anfrage wird eine statische HTML-Seite einfach aus dem Speicher ausgelesen und zu dem anfragenden Browser übertragen. Es gibt zur Zeit einen Trend, Hörer zu entwickeln, welche auf Hörer-Anfragen mit Ausführen dynamischer Vorgänge antworten. Beispielsweise kann ein Hörer auf eine Anfrage durch Ausgeben einer Anfrage an eine Datenbank antworten, wobei er eine Web-Seite, welche die Ergebnisse der Anfrage enthält, dynamisch aufbaut, und die dynamisch aufgebaute HTML-Seite zu dem anfragenden Browser überträgt. Um dynamische Vorgänge auszuführen, muss die Funktionalität des Hörers verbessert oder vermehrt werden. Es sind verschiedene Ansätze entwickelt worden, um Hörer dahingehend zu erweitern, dass sie dynamische Vorgänge unterstützen.
  • Ein Ansatz, als Antwort auf Anfragen von Web-Browsern dynamische Vorgänge bereitzustellen, verwendet die Gemeinsame-Gateway-Schnittstelle ("Common Gateway Interface", CGI). CGI ist eine Spezifikation zum Übertragen von Information zwischen einem Hörer und einem CGI-Programm. Ein CGI-Programm ist ein Programm, welches dazu vorgesehen ist, Daten anzunehmen und Daten, welche die CGI-Spezifikation erfüllen, zurückzusenden. Das Programm könnte in irgendeiner Programmiersprache geschrieben sein, inklusive C, Perl, oder Visual Basic.
  • Der CGI-Ansatz leidet unter dem Nachteil, dass jedes Mal, wenn der Server die spezifizierte Anfrage empfängt, ein separater Prozess (eine separate Instanz des CGI-Programms) gestartet wird. Ferner werden CGI-Programme auf der gleichen Maschine ausgeführt wie der Hörer, welcher die Browser-Anfrage empfangen hat. Daher wird das Empfangen von tausend solchen Anfragen von verschiedenen Anwendern das Starten von tausend Prozessen auf der Maschine, auf welcher der Hörer läuft, nach sich ziehen, wodurch verwendbare Ressourcen auf dem Server verbraucht werden.
  • Ein zweiter Nachteil des CGI-Ansatzes ist, dass bei jeder Anfrage ein separater Prozess gestartet, ausgeführt und beendet wird. Wenn daher auf einen ersten Satz von zehn Anfragen ein zweiter Satz von zehn Anfragen folgt, wird für den ersten Satz von Anfragen ein erster Satz von zehn Prozessen gestartet und beendet werden, und für den zweiten Satz von zehn Anfragen wird ein zweiter Satz von zehn Prozessen gestartet und beendet werden. CGI erlaubt es nicht, die gleichen zehn Prozesse, welche für die ersten zehn Anfragen verwendet werden, zum Verarbeiten der zweiten zehn Anfragen zu verwenden, um mit dem Starten von Prozessen einhergehenden Mehraufwand zu vermeiden.
  • Ein alternativer Ansatz zum Bereitstellen dynamischer Antworten auf Anfragen beinhaltet das Verwenden von Einschub-Erweiterungen ("plug-in extensions"). Eine Einschub-Erweiterung fängt an einen Server gesendete Nachrichten in verschiedenen Stadien ab, um Anwendungsspezifisches Bearbeiten einer spezifischen Anwender-Anfrage auszuführen. Ein Server-seitiger Einschub wird im gleichen Adressraum wie der Hörer, und wie alle anderen Serverseitigen Einschübe ausgeführt. Daher muss ein Anwendungs-Entwickler, der einen Einschub entwickelt, mit Betriebs-Details niederer Ebene des Hörers vertraut sein. Darüber hinaus setzt das Ausführen von Einschüben im gleichen Adressraum wie den Hörer, den Hörer Sicherheits- und Stabilitäts-Risiken aus, wenn ein fehlerhafter Einschub andere Einschübe oder den Hörer selber abstürzen lassen, oder sich in einer unvorhergesehenen Weise verhalten lassen kann.
  • Ein zweites Problem mit dem Einschub-Ansatz ist, dass ähnlich dem CGI-Ansatz, alle Einschub-Vorgänge auf der gleichen Maschine ausgeführt werden, welche der Hörer ausführt. Da die durch die Einschub-Erweiterung ausgeführten Aufgaben ("tasks") nicht auf andere Maschinen ausgelagert ("off-loaded") werden können, ist die Skalierbarkeit des Einschub-Ansatzes wesentlich begrenzt.
  • Weitere Details zu dem Hintergrund und zu den durch Ausführungsformen der vorliegenden Erfindung gelösten Problemen sind in einem Artikel von Nigel Edwards und Owen Rees zu finden, welcher den Titel "High Security Web-Servers and Gateways" COMPUTER NETWORKS AND ISDN SYSTEMS, 29, (1997) 927-938 trägt.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es wird ein Verfahren und ein System zum Behandeln von Browser-Anfragen mit einem Verteilte-Web-Applikations-Server bereitgestellt. Die verteilte Umgebung ermöglicht es Prozessen (Kartusche-Instanzen, "cartridge instances"), welche die durch Browser-Spezifikationen spezifizierten Vorgänge ausführen, auf anderen Maschinen zu laufen als die Hörer, welche die Anfragen empfangen, und als die Browser, welche die Anfragen ausgeben. Da sich die Kartusche-Instanzen auf anderen Maschinen als die Hörer befinden, sind die Hörer besser gegenüber fehlerhaften Kartusche-Instanzen geschützt, wodurch die Zuverlässigkeit und Sicherheit des Systems erhöht wird. Darüber hinaus ist die Skalierbarkeit des Systems durch Verteilen der Verarbeitungs-Last über viele Maschinen, anstatt der einen Maschine, welche der Hörer ausführt, stark erhöht. Die Fähigkeit, Kartusche-Instanzen-Ausführung über verschiedene Maschinen zu verteilen, erlaubt das Anwenden vielfältiger Arten von Last-Ausgleichs-Techniken beim Entscheiden darüber, wann und wo neue Kartusche-Instanzen abgelegt werden.
  • Gemäß einem Aspekt der Erfindung wird ein Vorgang unter Verwenden eines auf einer ersten Maschine laufenden Versenders ("dispatcher") und eines auf einer zweiten Maschine laufenden Ressourcen-Managers ausgeführt. Eine erste Nachricht wird von dem Versender zu dem Ressourcen-Manager gesendet. Die erste Nachricht identifiziert eine spezielle Kartusche, welche geeignet ist, den Vorgang auszuführen. Eine zweite Nachricht wird vom Ressourcen-Manager zum Versender gesendet. Die zweite Nachricht identifiziert eine spezielle Instanz der speziellen Kartusche. Die spezielle Instanz läuft auf einer dritten Maschine.
  • Eine dritte Nachricht wird vom Versender zu der speziellen Instanz gesendet, um die spezielle Instanz zu veranlassen, den Vorgang auszuführen. Wenigstens zwei der ersten Maschine, zweiten Maschine und dritten Maschine sind separate Maschinen.
  • Gemäß einem anderen Aspekt der Erfindung wird ein System zum Durchführen von mit Browser-Anfragen einhergehenden Vorgängen bereitgestellt. Das System weist eine Mehrzahl von mit einer Mehrzahl von Web-Hörern verbundenen Versendern auf. Jeder Versender aus der Mehrzahl von Versendern empfängt von einem zugehörigen Web- Hörer aus der Mehrzahl von Web-Hörern Browser-Anfragen, welche von den zugehörigen Web-Hörern empfangen wurden.
  • Das System weist ferner einen virtueller-Pfad-Manager und einen Ressourcen-Manager auf. Der virtueller-Pfad-Manager ist mit der Mehrzahl von Versendern durch einen Inter-Maschine-Kommunikationsmechanismus verbunden. Der Virtueller-Pfad-Manager zeigt den Versendern an, welcher aus einer Mehrzahl von Kartuschen mit der Web-Browser-Anfrage assoziiert ist. Der Ressourcen-Manager ist mit der Mehrzahl von Versendern durch den Inter-Maschine-Kommunikations-Mechanismus verbunden. Der Ressourcen-Manager ist derart konfiguriert, dass er als Antwort auf das Empfangen einer Anforderung einer Instanz von dem Versender jedem Versender aus der Mehrzahl von Versendern eine Instanz einer Kartusche aus der Mehrzahl von Kartuschen zuordnet.
  • Die Mehrzahl von Versendern ist derart konfiguriert, dass sie durch den Inter-Maschine-Kommunikations-Mechanismus Nachrichten zu den Instanzen sendet, welche durch den Ressourcen-Manager den Versendern zugeordnet sind. Die Nachrichten veranlassen die Instanz zum Ausführen der mit den Browser-Anfragen assoziierten Vorgängen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird beispielhaft, aber nicht limitierend, durch die Figuren der begleitenden Zeichnungen illustriert, in denen gleiche Bezugszeichen sich auf ähnliche Elemente beziehen.
  • 1 ist ein Blockdiagramm eines Computersystems, auf welchem eine Ausführungsform der Erfindung implementiert werden kann;
  • 2 ist ein Blockdiagramm eines Verteilte-Anwendung-Servers gemäß einer Ausführungsform der Erfindung;
  • 3A ist ein Abschnitt eines Flussdiagramms, welches Schritte zum Behandeln einer Browser-Anfrage gemäß einer Ausführungsform der Erfindung zeigt;
  • 3B ist ein anderer Abschnitt des Flussdiagramms, welches Schritte zum Behandeln einer Browser-Anfrage gemäß einer Ausführungsform der Erfindung zeigt;
  • 4 ist ein Blockdiagramm einer Tabelle, welche von einem Versender gemäß einer Ausführungsform der Erfindung unterhaltene Informationen enthält;
  • 5 ist ein Blockdiagramm einer Tabelle, welche von einem Ressourcen-Manager gemäß einer Ausführungsform der Erfindung unterhaltene Informationen enthält.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
  • Ein Verfahren und eine Vorrichtung zum Durchführen von Vorgängen über ein Netzwerk werden beschrieben. In der folgenden Beschreibung sind zum Zwecke der Erklärung viele spezifische Details angegeben, um ein gründliches Verständnis der vorliegenden Erfindung zu erreichen. Es ist allerdings für einen Fachmann offensichtlich, dass die vorliegende Erfindung ohne diese speziellen Details ausgeführt werden kann. In anderen Fällen ("instances") sind wohlbekannte Strukturen und Vorrichtungen in Blockdiagramm-Form gezeigt, um ein unnötiges Verundeutlichen der vorliegenden Erfindung zu vermeiden.
  • HARDWARE-ÜBERSICHT
  • 1 ist ein Blockdiagramm, welches ein Computersystem 100 zeigt, auf welchem eine Ausführungsform der Erfindung implementiert werden kann. Computersystem 100 weist auf: einen Bus 102 oder einen anderen Kommunikations-Mechanismus, zum Kommunizieren von Informationen, und einen mit dem Bus 102 verbundenen Prozessor 104 zum Verarbeiten von Information. Computersystem 100 weist ferner einen Hauptspeicher 106, wie etwa einen Direktzugriffsspeicher ("random access memory", RAM) auf, oder eine andere, mit dem Bus 102 verbundene dynamische Speicher-Vorrichtung zum Speichern von Information und von vom Prozessor 104 auszuführendenden Befehlen. Der Hauptspeicher 106 kann ferner während dem Ausführen von durch Prozessor 104 auszuführenden Befehlen zum Speichern temporärer Variablen und anderer Zwischen-Informationen verwendet werden. Computersystem 100 weist ferner einen Nur-Lese-Speicher ("read only memory", ROM) 108 auf, oder eine andere, an Bus 102 gekoppelte Speicher-Vorrichtung zum Speichern von statischer Information und von Befehlen für Prozessor 104. Eine Speicher-Vorrichtung 110 wie eine magnetische Platte oder eine optische Platte, ist zum Speichern von Information und Befehlen bereitgestellt und mit Bus 102 verbunden.
  • Computersystem 100 kann über Bus 102 mit einer Anzeige 112 zum Anzeigen von Information für einen Computer-Anwender, wie etwa einer Kathodenstrahl-Röhre ("cathode ray tube", CRT) verbunden sein. Eine Eingabe-Vorrichtung 114, welche alphanumerische und andere Tasten aufweist, ist mit Bus 102 verbunden, um Information und Befehls-Auswahlen an Prozessor 104 zu übermitteln. Eine andere Art von Anwender-Eingabe-Vorrichtung ist Cursor-Kontrolle 116, wie etwa eine Maus, ein Trackball oder Cursor-Richtungs-Tasten zum Kommunizieren von Richtungs-Information und Befehls-Auswahlen an Prozessor 104 und zum Steuern von Cursor-Bewegung auf der Anzeige 112. Diese Eingabe-Vorrichtung weist üblicherweise zwei Freiheitsgrade in zwei Achsen auf, einer ersten Achse (beispielsweise x) und einer zweiten Achse (beispielsweise y), wodurch es der Vorrichtung möglich ist, Positionen in einer Ebene festzulegen.
  • Die Erfindung betrifft die Anwendung des Computersystems 100, um in Antwort auf Nachrichten von Browsern spezifische Vorgänge auszuführen. Gemäß einer Ausführungsform der Erfindung werden die Vorgänge von Computersystem 100 in Antwort auf das Ausführen von einer oder mehrerer Sequenzen von einem oder mehreren im Hauptspeicher 106 enthaltenen Befehlen durch Prozessor 104 ausgeführt. Solche Befehle können von einem anderen Computer-lesbaren Medium, wie etwa Speicher-Vorrichtung 110 in Hauptspeicher 106 eingelesen werden. Das Ausführen von Sequenzen von im Hauptspeicher 106 enthaltenen Befehlen veranlasst Prozessor 104 die hier beschriebenen Verfahrens-Prozess-Schritte auszuführen. Bei alternativen Ausführungsformen können hartverdrahtete Schaltungen anstelle von Software-Befehlen oder in Kombination damit verwendet werden, um die Erfindung zu implementieren. Daher sind die Ausführungsformen der Erfindung nicht auf irgendeine spezielle Kombination von Hardware-Schaltungstechnik und Software begrenzt.
  • Der Term "Computer-lesbares Medium", wie er hier verwendet wird, bezieht sich auf irgendein Medium, welches an der Bereitstellung von Befehlen zur Ausführung durch Prozessor 104 mitwirkt. Solch ein Medium kann viele Formen annehmen, inklusive nicht-flüchtigen Medien, flüchtigen Medien und Übertragungs-Medien, aber nicht auf diese beschränkt. Nicht-flüchtige Medien beinhalten beispielsweise optische oder magnetische Platten, wie etwa Speicher-Vorrichtung 110. Flüchtige Medien beinhalten dynamische Speicher, wie etwa Hauptspeicher 106. Übertragungs-Medien beinhalten Koaxialkabel, Kupferdraht und Faseroptiken, inklusive den Drähten, welche Bus 102 aufweisen. Übertragungsmedien können auch die Form von akustischen Wellen oder Lichtwellen annehmen, wie etwa diejenigen, welche bei Radiowellen- beziehungsweise Infrarot-Datenkommunikationen erzeugt werden.
  • Übliche Arten von Computer-lesbaren Medien beinhalten beispielsweise eine Floppy-Disk, eine flexible Platte, Festplatte, magnetisches Band oder irgendein anderes magnetisches Medium, eine CD-ROM, irgendein anderes optisches Medium, Lochkarten, Papierband oder irgendein anderes physisches Medium mit Mustern aus Löchern, ein RAM, ein PROM und EPROM, ein FLASH-EPROM, irgendeinem anderen Speicher-Schaltkreis oder Kartusche, eine Trägerwelle, wie nachfolgend beschrieben, oder irgendein anderes Medium, von welchem ein Computer lesen kann.
  • Es können verschiedene Formen von Computer-lesbaren Medien beteiligt sein, um eine oder mehrere Sequenzen von einem oder mehreren Befehlen an Prozessor 104 zur Ausführung zu übertragen. Beispielsweise können die Befehle ursprünglich auf einer magnetischen Platte eines entfernt angeordneten ("remote") Computer gehalten sein. Der entfernt angeordnete Computer kann die Befehle in seinen dynamischen Speicher laden und die Befehle mittels eines Modems über eine Telefonleitung senden. Ein an Computersystem 100 lokal vorhandenes Modem kann die Daten von der Telefonleitung empfangen und einen Infrarot-Übertrager verwenden, um die Daten in ein Infrarot-Signal zu übertragen. Ein an Bus 102 angeschlossener Infrarot- Detektor kann die mit dem Infrarotsignal übertragenen Daten empfangen und die Daten auf Bus 102 geben. Bus 102 trägt die Daten zu Hauptspeicher 106, von welchem Prozessor 104 die Befehle zurückgewinnt und ausführt. Die von Hauptspeicher 106 empfangenen Befehle können vor oder nach Ausführen durch Prozessor 104 auf Speichermedium 110 gespeichert werden.
  • Computersystem 100 enthält ferner eine mit Bus 102 verbundene Kommunikations-Schnittstelle 118. Kommunikations-Schnittstelle 118 stellt eine zwei-Wege-Datenkommunikationsverbindung bereit, welche mit einer Netzwerk-Verbindung ("network link") 120 verbindet, welche mit einem lokalen Netzwerk 122 verbunden ist. Beispielsweise kann die Kommunikations-Schnittstelle 118 eine "integrated services digital network"(ISDN)-Karte [Deutsch: "Dienste-integrierendes digitales Nachrichtennetz"] oder ein Modem zum Bereitstellen einer Datenkommunikations-Verbindung mit einem zugehörigen Typ von Telefonleitung sein. Als ein weiteres Beispiel kann Kommunikations-Schnittstelle 118 eine "local area network" (LAN)-Karte [Deutsch: "Lokal-Bereich-Netzwerk"] zum Bereitstellen einer Datenkommunikations-Verbindung mit einem kompatiblen LAN sein. Drahtlose Verbindungen ("links") können ebenfalls implementiert werden. Bei einer solchen Implementierung sendet beziehungsweise empfängt Kommunikations-Schnittstelle 118 elektrische, elektromagnetische oder optische Signale, welche Digital-Daten-Ströme tragen, welche vielfältige Arten von Information repräsentieren.
  • Netzwerk-Verbindung 120 stellt üblicherweise durch ein oder mehrere Netzwerke Datenkommunikation zu anderen Datendiensten bereit. Beispielsweise kann Netzwerk-Verbindung 120 durch das lokale Netzwerk 122 eine Verbindung zu einem Host-Computer 124 oder zu Daten-Ausrüstung herstellen, welche von einem "internet service provider" (ISP) 126 [Deutsch: "Internet-Dienste-Bereitsteller"] betrieben wird. ISP 126 stellt seinerseits Datenkommunikationsdienste durch das jetzt üblicherweise als das "Internet" 128 bezeichnete weltweite Paket-Datenkommunikations-Netzwerk bereit. Das lokale Netzwerk 122 und das Internet 128 verwenden beide elektrische, elektromagnetische oder optische Signale, welche digitale Datenströme tragen. Die Signale durch die verschiedenen Netzwerke und die über Netzwerk-Verbindung 120 und durch Kommunikations-Schnittstelle 118 laufenden Signale, welche die digitalen Daten zu Computersystem 100 und von diesem weg tragen, sind beispielhafte Formen von Trägerwellen, welche die Informationen tragen.
  • Computersystem 100 kann durch das/die Netzwerk(e), Netzwerk-Verbindung 120 und Kommunikations-Schnittstelle 118 Nachrichten versenden und Daten, inklusive Programm-Code, empfangen. Bei dem Internet-Beispiel könnte Server 130 einen für ein Anwendungs-Programm angefragten Code durch Internet 128, ISP 126, lokales Netzwerk 122 und Kommunikations-Schnittstelle 118 übertragen.
  • Der empfangene Code kann so wie er empfangen wurde durch Prozessor 104 ausgeführt werden und/oder in der Speichervorrichtung 110 oder einem anderen nicht-flüchtigen Speicher zum späteren Ausführen gespeichert werden. Auf diese Weise kann Computersystem 100 Anwendungs-Code in Form einer Trägerwelle erhalten.
  • FUNKTIONALE ÜBERSICHT ÜBER DEN APPLIKATIONS-SERVER
  • 2 ist ein Blockdiagramm eines gemäß einer Ausführungsform der Erfindung eingerichteten Systems 200.
  • System 200 weist eine Mehrzahl von Browsern 202, 204 und 206 auf, welche gemäß einem HTTP-Protokoll über das Internet 208 mit einer Mehrzahl von Hörern 210, 216 und 222 kommunizieren. In Antwort auf Anfragen der Browser veranlassen die Hörer einen Web-Applikations-Server 280, hier als Kartuschen bezeichnete Software-Module aufzurufen. In der beschriebenen Ausführungsform hat der Applikations-Server 280 die Ausführung von drei Kartuschen 230, 234 und 238 gestartet.
  • Der Web-Applikationsserver 280 ist aus mehreren Komponenten zusammengesetzt, inklusive Transport-Adaptern 212, 218 und 224, Versendern 214, 220 und 226, einem Authentifizierungs-Server 252, einem virtueller-Pfad-Manager 250, einem Ressourcen-Manager 254, einem Konfigurations-Bereitsteller 256 und einer Mehrzahl von Kartusche-Ausführwerkzeuge 228, 232 und 236. Die verschiedenen Komponenten des Web-Applikations-Servers 280 werden im Folgenden detaillierter beschrieben.
  • Im Wesentlichen kommunizieren die vielfältigen Komponenten des Web-Applikations-Servers 280 durch einen Inter-Maschine-Kommunikations-Mechanismus, wie etwa Objekt-Anfrage-Vermittler ("Object Request Broker") 282. Durch Verwenden eines Inter-Maschine-Kommunikations-Mechanismus können Kartusche-Instanzen, welche die in Browser-Anfragen spezifizierten Vorgänge ausführen, auf anderen Maschinen laufen, als die Hörer ("listeners"), welche die Anfragen empfangen, und als die Browser, welche die Anfragen ausgeben. Da die Kartusche-Instanzen sich auf anderen Maschinen als die Hörer befinden, sind die Hörer besser gegenüber fehlerhaften Kartusche-Instanzen isoliert, wodurch sich die Zuverlässigkeit und Sicherheit des Systems erhöht. Darüber hinaus wird die Skalierbarkeit des Systems wesentlich erhöht, indem die Bearbeitungs-Last des Ausführens der Kartusche-Instanzen auf mehrere Maschinen, anstatt nur auf die gleiche Maschine, welche den Hörer ausführt, verteilt wird. Die Möglichkeit, Kartusche-Instanzen-Ausführung über eine Mehrzahl von Maschinen zu verteilen, erlaubt bei der Entscheidung darüber, wann und wo neuen Kartusche-Instanzen abgelegt ("to spawn") werden, die Anwendung vielfältiger Arten von Lastausgleichs-Techniken.
  • Ein üblicher Vorgang innerhalb von System 200 weist im Allgemeinen die folgenden Stadien auf:
    Ein Browser überträgt eine Anfrage über das Internet 208.
    Ein Hörer empfängt die Anfrage, und reicht sie durch einen Transport-Adapter an einen Versender weiter.
  • Der Versender kommuniziert mit dem virtueller-Pfad-Manager 250, um die geeignete Kartusche zum Behandeln der Anfrage zu bestimmen.
  • Jetzt führt der Versender eine von zwei Vorgängen aus. Wenn der Versender von einer ungenutzten Instanz für diese Kartusche weiß, sendet der Versender die Anfrage zu dieser Instanz. Wenn es keine ungenutzten Kartusche-Instanzen für diese Kartusche gibt, beauftragt der Versender den Ressourcen-Manager 254, eine neue Kartusche-Instanz zu erzeugen. Nachdem die Instanz erfolgreich hochläuft, benachrichtigt die Kartusche den Ressourcen-Manager von ihrer Existenz. Der Ressourcen-Manager 254 benachrichtigt daraufhin den Versender von der neuen Instanz. Der Versender erzeugt eine auf der Browser-Anfrage basierende bearbeitete Anfrage, und sendet die bearbeitete Anfrage an die neue Instanz.
  • Die Kartusche-Instanz behandelt die bearbeitete Anfrage und sendet eine Antwort an den Versender.
  • Der Versender reicht die Antwort durch den Hörer zurück an den Client.
  • Diese Stadien werden im Folgenden detaillierter beschrieben.
  • KARTUSCHEN
  • Kartuschen sind Code-Module zum Ausführen spezieller Applikations- oder System-Funktionen. Eine Kartusche bildet die Basis-Verteilungs-Einheit im System 200. Gemäß einer Ausführungsform der Erfindung werden die Kartuschen unter Verwenden von Internet-Verweisadressen ("universal ressource locators", URLs) mit Namen versehen. Daher weist der Kartusche-Name zwei Teile auf: die IP-Adresse des Servers, auf welchem die Kartusche angeordnet ist und den virtuellen Pfad in der Server-Verzeichnis-Struktur des übersetzten ("compilierten") Kartusche-Codes. Da Kartuschen unter Verwenden von URLs benannt sind, ist der Kartusche-Namen-Raum global, und auf Kartuschen kann unter Verwenden der gleichen Benachrichtigungs-Techniken ("messaging techniques") zugegriffen werden, welche zum Zugriff auf andere Web-Ressourcen, wie etwa auf Dokumente, verwendet werden.
  • Gemäß einer Ausführungsform der Erfindung weist jede Kartusche eine Standard-Schnittstelle auf, welche eine gemeinsame Gesamt-Struktur für alle Kartuschen zur Verfügung stellt. Die Standard-Schnittstelle definiert die Schnittstelle aus Routinen, welche unter speziellen Bedingungen von Web-Applikations-Server 280 aufgerufen werden. Gemäß einer Ausführungsform ist die abstrakte Kartusche-Schnittstelle wie folgt definiert:
    Figure 00160001
  • Die init()-Routine ist für das Initialisieren der Kartusche-Instanz verantwortlich. Dies kann das Aufrufen der Konstruktoren von mehreren Unter-Objekten, das Vor-Verzweigen ("preforking") von Threads und das Verfügbarmachen aller anderen benötigten gemeinsam verwendeten Ressourcen beinhalten.
  • Die shutdown()-Routine ist für das Aufräumen ("cleaning up") aller Ressourcen und das Herunterfahren ("shutting down") der Kartusche-Instanz verantwortlich. Sobald die shutdown()-Routine für eine Kartusche-Instanz aufgerufen wird, wird sie sofort zum Bedienen nachfolgender Anfragen unerreichbar.
  • Die authenticate()-Routine validiert, ob der Client, welcher die Dienste der Kartusche anfragt, dazu autorisiert ist, diese Dienste zu verwenden.
  • Die exec()-Routine ist der übliche Weg, um alle Dienste-Anfragen der Kartusche abzufertigen.
  • BEISPIEL-KARTUSCHEN
  • Jede Kartusche ist entweder als eine Kartusche konfiguriert, welche eine wohldefinierte Funktion ausführt, oder als eine programmierbare Kartusche, welche als ein Interpreter agiert, oder als eine Routine-Umgebung für eine Applikation. Ein Beispiel einer programmierbaren Kartusche ist eine PL/SQL-Laufzeit, welche derart konfiguriert ist, dass sie Datenbank-Anfragen gemäß der Oracle-basierten Programmiersprache unter Verwendung ("structured query language ", (PL/SQL)) verarbeitet. Die PL/SQL-Laufzeit führt eine Browser-Anfrage durch, welche eine Datenbank-Anfrage enthält. Die PL/SQL-Laufzeit verarbeitet die Anfrage beispielsweise durch Zugreifen über eine Daten-Verbindung auf einen Datenbankserver in Kommunikation mit der Kartusche-Instanz.
  • Ein anderes Beispiel einer programmierbaren Kartusche ist ein JAVA-Laufzeit-Interpreter. Die JAVA-Laufzeit-Interpreter-Kartusche ermöglicht es Web-Applikations-Entwicklern, Server-seitige JAVA-Applikationen zum Verarbeiten von Browser-Anfragen zu schreiben. In ähnlicher Weise kann ein maßgeschneiderter Server als eine Kartusche konfiguriert werden, um dynamische Vorgänge, wie beispielsweise das Zugreifen auf Prozesse zu ermöglichen, welche von einem Drittanbieter-Server ausgeführt werden.
  • VERSENDER
  • Versender sind Software-Module, welche derart konfiguriert sind, dass sie die von Hörern empfangenen Anfragen zu den geeigneten Kartuschen zu verteilen ("to route"). Gemäß einer Ausführungsform der Erfindung sind Versender als Server-seitige Programm-Erweiterungen (das heißt Einschübe) implementiert. Als solche werden die Versender in den gleichen Adressraum geladen wie die Hörer, zu denen sie gehören, und auf diesen ausgeführt. Die Versender können beim Kompilieren mit dem Hörer-Code gelinkt werden, oder zur Laufzeit dynamisch geladen werden.
  • In der dargestellten Ausführungsform sind Versender 214, 220 und 226 Hörern 210, 216 beziehungsweise 222 zugeordnet. Versender 214, 220 und 226 verteilen selektiv von Hörern 210, 216 beziehungsweise 222 empfangene Browser-Anfragen zu Kartuschen.
  • Beispielsweise sei angenommen, dass Hörer 210 eine über das Internet 208 gesendete Browser-Anfrage in Form eines "Uniform Resource Locator" (URL) [Deutsch: "Internet-Verweisadresse"] empfängt. Die Browser-Anfrage dient als ein Identifizierer für ein Web-Objekt, beispielsweise eine HTML-Seite oder einen auszuführenden Vorgang. Der Hörer 210 reicht die Browser-Anfrage ohne irgendeinen Versuch, die Browser-Anfrage zu interpretieren, an Versender 214 weiter. Auf das Empfangen der Browser-Anfrage hin führt der Versender 214 durch:
    • (1) Kommunizieren mit dem Virtueller-Pfad-Manager 250, um die durch die Browser-Anfrage ausgewählte Kartusche zu identifizieren, und um zu ermitteln, ob die Kartusche Authentifizierung benötigt,
    • (2) falls die Kartusche Authentifizierung benötigt, Kommunizieren mit dem Authentifizierungs-Server 252, um zu bestimmen, ob dem Browser der Zugriff auf die ausgewählte Kartusche erlaubt ist.
    • (3) falls der Zugriff erlaubt ist, Kommunizieren mit dem Ressourcen-Manager, um die spezifische Instanz für die ausgewählte Kartusche zu bestimmen, zu welcher die Browser-Anfrage gesendet werden soll, und
    • (4) Erzeugen und Versenden einer bearbeiteten Browser-Anfrage zum Ausführen durch die spezifizierte Kartusche-Instanz der Kartusche.
  • Die bearbeitete Browser-Anfrage packt die in der Original-Browser-Anfrage empfangene Information neu. Die überarbeitete Browser-Anfrage kann beispielsweise ein Kontext-Objekt enthalten, welches für das ordnungsgemäße Arbeiten der Kartusche benötigte Daten enthält. Die für das ordnungsgemäße Arbeiten der Kartusche benötigten Daten können beispielsweise eine Transaktions-ID enthalten, welche eine Transaktion identifiziert, mit welcher die Browser-Anfrage assoziiert ist.
  • Wenn die Kartusche auf die Anfrage antwortet, sendet die Kartusche die Antwort zu dem Versender, und der Versender reicht die Antwort zum Übertragen an den Browser, der die Anfrage gestartet hat, an dem Hörer weiter.
  • KONFIGURATIONS-BEREITSTELLER
  • Gemäß einer Ausführungsform der Erfindung werden Kartuschen, welche zusammen mit Web-Applikations-Server 280 zu verwenden sind, zuerst bei Web-Applikations-Server 280 registriert. Während des Registrier-Prozesses wird Information über die Kartuschen an den Konfigurations-Bereitsteller 256 geliefert. Konfigurations-Bereitsteller 256 speichert die Information als Metadaten 258 zum späteren Zugriff durch die Komponenten des Web-Applikations-Servers 280.
  • Die Metadaten 258 können beispielsweise aufweisen:
    • (1) den Kartusche-Name;
    • (2) die Minimalzahl benötigter Instanzen;
    • (3) die Maximalzahl benötigter Instanzen;
    • (4) den Ort ("location") des Codes, welcher die Instanz implementiert;
    • (5) die von dem Kartusche-Ausführ-Werkzeug zum Ausführen der Rückruf-Funktionen ("callback functions") (Initialisieren, Anfrage-Behandler, Herunterfahren) verwendeten Programm-abhängigen Funktions-Namen;
    • (6) die Liste der Maschinen zum Ausführen der Kartusche;
    • (7) die Leerlauf-Zeit ("idle time") für die Kartusche (den Zeitraum, welchen Kartuschen im Leerlauf bleiben dürfen, bevor sie heruntergefahren werden);
    • (8) einen Objekt-Identifizierer; und
    • (9) Daten, welche den Typ des mit der Kartusche zu verwendenden Authentifikations-Dienstes angeben, falls ein solcher zu verwenden ist.
  • Der Objekt-Identifizierer spezifiziert die Daten, welche von einer Browser-Anfrage zum Anfordern des Ausführens eines Vorganges durch die zugehörige Kartusche zur Verfügung gestellt werden müssen. Der Objekt-Typ kann ein spezifisches Wort sein, eine URL, oder kann einen virtuellen Pfad enthalten, wie etwa "/java".
  • Sobald der Konfigurations-Bereitsteller 256 die Konfigurations-Information für eine spezifische Kartusche in den Metadaten 258 gespeichert hat, wird die Kartusche automatisch registriert, wenn Web-Applikations-Server 280 gestartet wird.
  • Nachdem die Kartusche beim Web-Applikations-Server 280 registriert ist, startet Ressourcen-Manager 254 die Minimalzahl von Instanzen für die Kartusche. Sobald die Minimalzahl von Instanzen gestartet ist, ist Web-Applikations-Server 280 darauf vorbereitet, Browser-Anfragen zu beantworten.
  • DER VIRTUELLER-PFAD-MANAGER
  • Wie oben angegeben, kommunizieren Versender mit dem Virtueller-Pfad-Manager 250, um zu bestimmen, wohin jede bearbeitete Browser-Anfrage geleitet wird. Insbesondere enthält jede Browser-Anfrage üblicherweise eine URL. Auf das Empfangen einer Browser-Anfrage hin sendet der Versender die URL aus der Anfrage zum Virtueller-Pfad- Manager 250. Der Virtueller-Pfad-Manager 250 antwortet durch Senden der Versender-Daten, welche die mit der URL assoziierte Kartusche – wenn es eine solche gibt – identifizieren.
  • Um die benötigte Information an Versender zu liefern, konsultiert der Virtueller-Pfad-Manager 250 die Metadaten 258, welche URLs an Kartuschen zuordnen. In Antwort auf das Empfangen einer Browser-Anfrage verwendet der Virtueller-Pfad-Manager 250 die Zuordnungs-Daten, um die Kartusche zu bestimmen, falls es eine solche gibt, welcher die in den Browser-Anfragen enthaltene URL zugeordnet ist.
  • Wenn beispielsweise die Browser-Anfrage eine mit dem virtuellen Pfad "/java" beginnende URL ist, kann die Zuordnung anzeigen, dass die JAVA-Interpreter-Kartusche konfiguriert ist, um Anfragen zu behandeln, welche den virtuellen Pfad "/java" aufweisen.
  • Gemäß einer Ausführungsform der Erfindung bestimmt der Virtueller-Pfad-Manager 250 auch, ob die mit der Kartusche assoziierte URL Authentifizierung benötigt. Falls die Kartusche Authentifizierung benötigt, zeigt der Virtueller-Pfad-Manager 250 in der Antwort an, dass der Virtueller-Pfad-Manager 250 dem Versender mitteilt, dass Authentifizierung benötigt wird. Wenn Authentifizierung nicht benötigt wird, erzeugt und sendet der Versender eine bearbeitete Browser-Anfrage an eine Instanz der Kartusche, ohne den Authentifizierungs-Server 252 aufzurufen. Wenn Authentifizierung benötigt wird, sendet der Versender die bearbeitete Anfrage erst dann an eine Instanz der Kartusche, wenn der Authentifizierungs-Server anzeigt, dass die bearbeitete Anfrage an eine Instanz der Kartusche übermittelt werden darf.
  • DER RESSOURCEN-MANAGER
  • Der Ressourcen-Manager 254 des Web-Applikations-Servers 280 steuert das Ausführen jeder der Kartuschen durch Starten einer vorbestimmten Minimalzahl von Instanzen für die Kartuschen, Last-Ausgleichen zwischen den Instanzen jeder Kartusche und, falls nötig, Starten neuer Kartusche-Instanzen der Kartuschen, bis zur vorbestimmten Maximalzahl von Instanzen für eine gegebene Kartusche.
  • Es sei beispielsweise angenommen, dass die Metadaten für eine spezielle Kartusche (C1) die folgende Information enthalten:
    Name=C1
    Instanzen-Minimalzahl=10
    Instanzen-Maximalzahl=50
    Host-Maschinen=M1, M2, M3
    Leerlauf-Zeit = 30 Sekunden
  • Wenn Kartusche C1 basierend auf diesen Metadaten erstmals registriert wird, wird der Ressourcen-Manager 254 zehn Instanzen von C1 starten. Ressourcen-Manager 254 wird die zehn Instanzen auf den mit den Markierungen ("labels") M1, M2 und M3 versehenen Maschinen starten.
  • Auf das Empfangen von Versender-Anfragen zum Zugriff auf C1 hin bestimmt Ressourcen-Manager 254, ob irgendeine existierende Instanz von C1 zum Verwenden verfügbar ist. Wenn beim Empfangen einer Anfrage keine Instanz von C1 verfügbar ist, bestimmt Ressourcen-Manager 254, ob bereits die Instanzen-Maximalzahl von C1 läuft. Wenn die Instanzen-Maximalzahl noch nicht läuft, startet der Ressourcen-Manager 254 eine neue Instanz von C1 auf einer der zur Verfügung stehenden Host-Maschinen, und übermittelt eine Nachricht, welche die neue Instanz gegenüber dem Versender identifiziert, welcher die Anfrage ausgegeben hatte. Wenn bereits die Maximalzahl von C1-Instanzen läuft, sendet Ressourcen-Manager 254 eine Nachricht an den Versender, der die Anfrage ausgegeben hatte, um anzuzeigen, dass die Anfrage derzeit nicht behandelt werden kann.
  • LAST-AUSGLEICHEN
  • Gemäß einer Ausführungsform der Erfindung wendet Ressourcen-Manager 254 einen Satz von Last-Ausgleich-Regeln an, um zu bestimmen, wo Instanzen zu starten sind, wenn es mehr als eine mögliche Host-Maschine gibt. In dem obigen Beispiel sind daher M1, M2 und M3 alle in der Lage, Instanzen von Kartusche C1 auszuführen. Wenn M1, M2 und M3 die gleiche Verarbeitungs-Kapazität aufweisen, kann es wünschenswert sein, die Instanzen gleichmäßig auf die drei Maschinen zu verteilen. Wenn allerdings M1 die zehnfache Verarbeitungs-Leistung wie M2 und M3 aufweist, kann es wünschenswert sein, alle Instanzen bis zu einem gewissen Punkt auf M1 zu starten, und dann zusätzliche Instanzen gleichmäßig über M1, M2 und M3 zu verteilen.
  • Um Ressourcen-Manager 254 beim Festlegen, wie der Last-Ausgleich zwischen möglichen Maschinen auszuführen ist, zu unterstützen, können die für jede Kartusche gespeicherten Metadaten zusätzliche Details enthalten. Beispielsweise können die Metadaten eine separate Minimum-Instanzenzahl und Maximum-Instanzenzahl für jede Maschine spezifizieren. Ressourcen-Manager 254 kann dann basierend darauf, welche Maschine das niedrigste Verhältnis zwischen aktuellen Instanzen und maximaler Instanzenzahl aufweist, neue Instanzen unter den Maschinen aufteilen.
  • Die Metadaten können auch eine Reihenfolge für die Maschinen spezifizieren, welche eine Kartusche laufen lassen können. Die Maschine an der Position (N+1) der Reihenfolge wird nur verwendet, um Instanzen der Kartusche auszuführen, wenn die Maschinen an der N-ten Position der Reihenfolge bereits ihre Instanzen-Maximalzahl ausführen.
  • STATUS-NACHVERFOLGUNG DER KARTUSCHE-INSTANZEN
  • Gemäß einer Ausführungsform der Erfindung unterhält Ressourcen-Manager 254 Status-Information, um die erzeugten Kartusche-Instanzen nachzuverfolgen. Die Status-Information enthält Daten, welche die Instanz identifizieren, die die Instanz ausführende Maschine identifizieren, und den Hörer identifizieren, dem die Instanz zugeordnet worden ist.
  • 5 zeigt eine Tabelle 500, welche vom Ressourcen-Manager 254 unterhalten werden kann, um diese Zustand-Information zu speichern. Tabelle 500 enthält eine Instanz-Spalte 502, eine Kartusche-Spalte 504, eine Hörer-Spalte 506 und eine Maschine-Spalte 508. Jede Zeile von Tabelle 500 korrespondiert zu einer gesonderten Kartusche-Instanz. Innerhalb der Zeile für eine gegebene Kartusche-Instanz identifiziert Kartusche-Spalte 504 die mit der Kartusche-Instanz assoziierte Kartusche, und Instanz-Spalte 502 zeigt die Instanz-Nummer der Kartusche-Instanz an. Beispielsweise korrespondiert Zeile 510 mit einer Instanz von Kartusche C1. Daher zeigt Kartusche-Spalte 504 von Zeile 510 Kartusche C1 an. Instanz-Spalte 502 von Zeile 510 zeigt an, dass die mit Zeile 510 assoziierte Kartusche-Instanz die Instanz 1 von Kartusche C1 ist.
  • Hörer-Spalte 506 bezeichnet den Hörer, welchem die mit einer Zeile assoziierte Kartusche-Instanz zugeordnet ist.
  • Maschinen-Spalte 508 bezeichnet die Maschine, auf der die mit einer Zeile assoziierte Kartusche-Instanz ausgeführt wird. Beispielsweise ist die mit Zeile 510 assoziierte Kartusche-Instanz dem Hörer 210 zugeordnet, und wird auf Maschine M1 ausgeführt.
  • Ähnlich zu Ressourcen-Manager 254 unterhält jeder Versender Status-Information über die Kartusche-Instanzen, welche dem Hörer zugeordnet sind, mit welchem der Versender verbunden ist. Solche Zustand-Information kann beispielsweise in einer Tabelle 400 unterhalten werden, wie sie in 4 gezeigt ist. Ähnlich zu Tabelle 500 enthält Tabelle 400 eine Instanz-Spalte 402 und eine Kartusche-Spalte 404, welche Instanz-Zahlen beziehungsweise Kartusche-Identifizierer halten. Während allerdings Tabelle 500 nur einen Eintrag für jede von Ressourcen-Manager 254 zugewiesene Kartusche-Instanz aufweist, enthält Tabelle 400 nur Einträge für Kartusche-Instanzen, welche einem speziellen Hörer zugeordnet worden sind. Beispielsweise enthält Tabelle 400 nur für diejenigen in Tabelle 500 aufgelistete Kartusche-Instanzen Einträge, die dem Hörer 210 zugeordnet worden sind.
  • Über Instanz-Spalte 402 und Kartusche-Spalte 404 hinaus enthält Tabelle 400 eine Status-Spalte 406. Für jede Zeile hält Status-Spalte 406 einen Wert, welcher den Status der mit der Zeile assoziierten Instanz anzeigt. Beispielsweise zeigt die Status-Spalte 406 von Zeile 408 an, dass Instanz 1 von Kartusche C1 derzeit beschäftigt ist. In der dargestellten Ausführungsform hält Status-Spalte 406 ein Flag, welches anzeigt, dass eine Kartusche-Instanz entweder BESCHÄFTIGT ("BUSY") oder FREI ("FREE") ist. Die Bedeutung des Kartusche-Status soll nun mit Bezug auf die Arbeitsweise des Ressourcen-Managers 254 und der Versender 214 und 220 beschrieben werden.
  • INTERAKTION ZWISCHEN VERSENDERN UND DEM RESSOURCEN-MANAGER
  • Wie oben beschrieben, kommunizieren die Versender mit Ressourcen-Manager 254, wenn sie eine überarbeitete Browser-Anfrage zu einer speziellen Kartusche senden müssen. Gemäß einer Ausführungsform der Erfindung bestimmen Versender zuerst, ob ihnen bereits eine Instanz der geeigneten Kartusche (1) zugewiesen worden ist, und (2) verfügbar ist, um die neue überarbeitete Anfrage zu bearbeiten. Wenn dem Versender bereits eine geeignete Kartusche-Instanz zugewiesen worden ist, und wenn diese derzeit verfügbar ist, um die neue, überarbeitete Browser-Anfrage zu verarbeiten, dann reicht der Versender die überarbeitete Browser-Anfrage an die Kartusche-Instanz weiter, ohne mit Ressourcen-Manager 254 weiter zu kommunizieren.
  • Es sei beispielsweise angenommen, dass Hörer 210 eine Browser-Anfrage empfängt, welche gemäß dem Virtueller-Pfad-Manager 250 von Kartusche C1 bearbeitet werden muss. Es sei ferner angenommen, dass Tabelle 400 die derzeitige Liste und den derzeitigen Status von dem Hörer 210 zugeordneten Kartusche-Instanzen wiedergibt.
  • Auf das Empfangen der Browser-Anfrage von Hörer 210 hin inspiziert Versender 214 die Tabelle 400, um eine FREI-Instanz von C1 zu lokalisieren. In der dargestellten Tabelle 400 gibt Zeile 410 an, dass Instanz 3 von Kartusche C1 derzeit FREI ist. Daher reicht Versender 214 eine bearbeitete Browser-Anfrage direkt an Instanz 3 von Kartusche C1 durch, ohne mit Ressourcen-Manager 254 weiter zu kommunizieren. In Antwort auf das Senden der bearbeiteten Browser-Anfrage ändert Versender 214 den Status-Wert in Status-Zeile 406 von Zeile 410 auf BESCHÄFTIGT ("BUSY").
  • Wenn einem Hörer noch keine geeignete, derzeit verfügbare Kartusche-Instanz zugewiesen worden ist, fordert der mit der Kartusche assoziierte Versender eine Kartusche-Instanz vom Ressourcen-Manager 254 an. Wenn der Ressourcen-Manager 254 feststellt, dass keine Instanz der benötigten Kartusche verfügbar ist, und wenn die Anzahl existierender Instanzen der benötigten Kartusche unter dem Maximum liegt, dann startet der Ressourcen-Manager 254 eine neue Kartusche. Auf das Starten einer neuen Kartusche hin fügt der Ressourcen-Manager 254 einen Eintrag für eine neue Kartusche-Instanz in Tabelle 500 ein.
  • Sei beispielsweise angenommen, dass Hörer 210 eine Browser-Anfrage empfängt, welche von Kartusche C3 verarbeitet werden muss. Sei ferner angenommen, dass Instanz 3 von Kartusche C3 noch nicht gestartet worden ist. Unter diesen Bedingungen sendet Versender 214 an Ressourcen-Manager 254 eine Anfrage nach einem Handle für eine Instanz von Kartusche C3. In Antwort auf diese Anfrage startet Ressourcen-Manager 254 Instanz 3 von Kartusche C3 auf Maschine M3. Darüber hinaus fügt Ressourcen-Manager 254 in Tabelle 500 den in Zeile 512 gefundenen Eintrag ein.
  • Nach Einsetzen von Zeile 512 für Instanz 3 von Kartusche C3 in Tabelle 500 sendet Ressourcen-Manager 254 ein Handle auf die neu erzeugte Instanz zurück an Versender 214. In Antwort auf das Empfangen dieses Handles fügt Versender 214 einen Eintrag (Zeile 412) für die neue Instanz in seine Status-Tabelle 400 ein. Der Versender 214 überträgt dann eine überarbeitete Browser-Anfrage zu Instanz 3 von Kartusche C3.
  • FREIGEBEN VON KARTUSCHE-INSTANZEN
  • Gemäß einer Ausführungsform der Erfindung geben Hörer nicht automatisch die Verfügungsberechtigung ("ownership") über Kartusche-Instanzen nach Beenden des Antwortens auf offenstehende Browser-Anfragen wieder frei. Beispielsweise sei angenommen, dass Instanz 3 von Kartusche C3 eine überarbeitete Browser-Anfrage empfängt, die überarbeitete Browser-Anfrage bearbeitet und eine Antwort an Versender 214 zurücksendet. Versender 214 reicht die Antwort zum Zurücksenden an den Browser, welcher die Browser-Anfrage ausgegeben hatte an Hörer 210 weiter.
  • Jetzt benötigt Hörer 210 die Verfügungsberechtigung über Instanz 3 von Kartusche C3 nicht länger. Allerdings ändert Versender 214 nur die Status-Zeile 406 von Zeile 412 von BESCHÄFTIGT in FREI, anstatt die Verfügungsberechtigung von Instanz 3 von Kartusche C3 an Ressourcen-Manager 254 zurück zu übertragen.
  • Wechseln des Wertes in Status-Spalte 406 von Zeile 412 in FREI zeigt an, dass Instanz 3 von Kartusche C3 nicht länger an einer Anfrage arbeitet, und daher bereit ist, nachfolgende Anfragen zu bearbeiten. Da allerdings Tabelle 400, welche anzeigt, dass Instanz 3 von Kartusche C3 verfügbar ist, von Versender 214 lokal gepflegt wird, ist Instanz 3 von Kartusche C3 nur für nachfolgende Browser-Anfragen, welche an Hörer 210 ankommen, verfügbar. Zeile 512 von der von Ressourcen-Manager 254 unterhaltenen Tabelle 500 zeigt weiterhin an, dass Hörer 210 verfügungsberechtigt über Instanz 3 von Kartusche C3 ist.
  • Da Hörer nicht automatisch Kartusche-Instanzen jedes Mal freigeben, wenn eine Anfrage bedient worden ist, wird mit Kommunikation zwischen dem Ressourcen-Manager 254 und den verschiedenen Versendern einhergehender Zusatzaufwand ("overhead") wesentlich reduziert. Sei beispielsweise angenommen, dass ein Hörer 210 zehn aufeinanderfolgende Anfragen empfängt, welche zu Kartusche C3 übertragen werden müssen. Anstatt mit Ressourcen-Manager 254 für jede der zehn Anfragen zu kommunizieren, kann Versender 214 mit Ressourcen-Manager 254 in Antwort auf die erste Anfrage kommunizieren. Die nachfolgenden neun Anfragen können von Versender 214 behandelt werden, ohne mit Ressourcen-Manager 254 zu kommunizieren, da der Versender 214 zum Bearbeiten der neun nachfolgenden Anfragen die gleiche Instanz C3 verwendet, welche die erste Anfrage verarbeitet.
  • Während das nicht-automatische Freigeben der Hörer-Verfügungsberechtigung von Kartusche-Instanzen nach Bedienen jeder Anfrage die Effizienz von Web-Applikations-Server 280 erhöhen kann, können Hörer die Verfügungsberechtigung über Kartusche-Instanzen nicht unendlich aufrechterhalten. Beispielsweise sollten Instanzen, welche er über lange Zeiträume nicht benutzt hat, an Ressourcen-Manager 254 zurücküberwiesen werden, so dass sie erneut de-allokiert werden können, um Ressourcen freizugeben. Es ist darüber hinaus für einen Hörer nicht effektiv, Verfügungsberechtigung über die Instanz einer Kartusche zu behalten, welche für eine relativ lange Zeit nicht verwendet worden ist, wenn andere Hörer-Instanzen diese Kartusche anfordern.
  • Konsequenterweise übermittelt Ressourcen-Manager 254 jedem Hörer eine maximale Leerlauf-Zeit für jede an den Hörer weitergegebene Kartusche-Instanz. Die maximale Leerlauf-Zeit gibt den maximalen Zeitraum an, über den eine Kartusche-Instanz ungenutzt bleiben kann, bevor der Hörer die Verfügungsberechtigung der Kartusche-Instanz freigeben muss. Sei beispielsweise angenommen, dass Ressourcen-Manager 254 dem Hörer 210 anzeigt, dass der maximale Leerlauf-Zeitraum für Instanz 3 von Kartusche C3 10 Minuten beträgt. Hörer 210 kann basierend auf dieser Information damit fortfahren, Instanz 3 von Kartusche C3 zu verwenden, um Browser-Anfragen von Kartusche C3 zu bearbeiten, solange Instanz 3 von Kartusche C3 nicht für länger als 10 Minuten im Leerlauf bleibt.
  • Wenn Instanz 3 von Kartusche C3 für mehr als 10 Minuten im Leerlauf bleibt, entfernt Versender 214 Zeile 412 aus Tabelle 400 und sendet eine Nachricht an Ressourcen-Manager 254, dass Hörer 210 die Verfügungsberechtigung über Instanz 3 von Kartusche C3 freigibt. In Antwort auf diese Mitteilung aktualisiert Ressourcen-Manager 254 Zeile 512, um anzuzeigen, dass kein Hörer eine Verfügungsberechtigung über Instanz 3 von Kartusche C3 hat, und dass diese daher einem anderen Hörer neu zugewiesen werden kann, oder dass sie beendet werden kann.
  • Bei einer alternativen Ausführungsform geben Versender nicht automatisch Kartusche-Instanzen frei, wenn die Leerlauf-Zeit für die Kartusche-Instanz überschritten ist. Stattdessen sendet der Versender eine Nachricht an Ressourcen-Manager 254 mit dem Angebot, die nicht mehr verwendete Instanz freizugeben. Ressourcen-Manager 254 kann auf das Angebot dadurch reagieren, dass er das Freigeben der Kartusche-Instanz durch den Hörer fordert, oder indem er dem Hörer erlaubt, die Verfügungsberechtigung über die ausgelaufene Kartusche-Instanz zu behalten.
  • Gemäß einer Ausführungsform der Erfindung unterhält Ressourcen-Manager 254 eine Warteschlange der Anfragen, welche nicht unmittelbar bedient werden können. Wenn es möglich wird, eine Warteschlangen-Anfrage zu bedienen, wird die Anfrage von der Warteschlange entfernt und bearbeitet. Sei beispielsweise angenommen, dass Hörer 222 eine Browser-Anfrage empfängt, welche von Kartusche C1 verarbeitet werden muss, und dass Hörer 222 keine Instanz von Kartusche C1 zugewiesen worden ist. Versender 226 sendet eine Anfrage nach einer C1-Instanz an Ressourcen-Manager 254. Sei ferner angenommen, dass ein Maximum von 50 C1-Instanzen erlaubt ist, und dass 50 C1-Instanzen an Hörer 210 zugewiesen worden sind. Unter diesen Bedingungen kann Ressourcen-Manager 254 die Anfrage von Hörer 222 nicht bedienen. Daher gibt Ressourcen-Manager 254 die Anfrage in eine Warteschlange. Sobald Hörer 210 eine Instanz von C1 freigibt, benachrichtigt Ressourcen-Manager 254 den Hörer 222, dass eine Instanz von C1 verfügbar ist.
  • Unter bestimmten Bedingungen kann Ressourcen-Manager 254 bevorrechtigterweise einen Hörer veranlassen, eine Kartusche-Instanz freizugeben. Beispielsweise kann Ressourcen-Manager 254 eine System-Überlastungs-Situation feststellen, und entweder vor oder nach Informieren der Hörer, welchen derzeit die Kartusche-Instanzen zugewiesen worden sind, dass die Kartusche-Instanzen beendet werden werden, durch Beenden eines Satzes von Kartusche-Instanzen beantworten.
  • Ressourcen-Manager 254 kann auch bevorrechtigterweise Hörer veranlassen, Kartusche-Instanzen freizugeben, um Fairness-Verfahrensweisen zwischen Hörern zu implementieren. Beispielsweise kann Ressourcen-Manager 254 einen Hörer, welcher die meisten Instanzen einer gegebenen Instanz hält veranlassen, eine Instanz der Kartusche freizugeben, wenn ein anderer Hörer auf eine Instanz der Kartusche für länger als einen bestimmten Schwell-Zeitraum gewartet hat. Wenn beispielsweise Hörer 210 von Kartusche C1 50 Instanzen zugewiesen bekommen hat, und wenn C1 ein Maximum von 50 Instanzen aufweist, dann kann Ressourcen-Manager 254 Hörer 210 veranlassen, eine Instanz von C1 zehn Sekunden nach Empfangen einer auf eine Instanz von C1 gerichteten Anfrage eines anderen Hörers freizugeben.
  • KARTUSCHE-AUSFÜHRWERKZEUGE
  • Gemäß einer Ausführungsform der Erfindung ist jede Instanz aus einem Kartusche-Ausführwerkzeug und einer Kartusche zusammengesetzt. Ein Kartusche-Ausführwerkzeug ist ein Code-Modul, welches Kartuschen gegenüber den Komplexitäten des Web-Applikations-Servers 280 und dem Inter-Modul-Kommunikationsmechanismus isoliert. Eine Kartusche wird einem Kartusche-Ausführwerkzeug durch Speichern von Zeigern auf die Kartusche-Funktionen in eine Funktions-Tabelle verfügbar gemacht. Gemäß einer Ausführungsform stellen alle Kartuschen die in der oben beschriebenen beispielhaften Kartusche-Schnittstelle spezifizierten Funktionen bereit. Indem alle Kartuschen die gleiche Schnittstelle unterstützen, kann mit allen Kartuschen ein einzelnes Standard-Kartusche-Ausführwerkzeug verwendet werden.
  • Gemäß einer Ausführungsform der Erfindung sind Kartuschen als gemeinsam genutzte Bibliotheken ("shared libraries") implementiert, und Kartusche-Ausführwerkzeuge sind ausführbare Programme, welche die Routinen in den gemeinsam verwendeten ("shared") Bibliotheken unter Verwendung der Standard-Kartusche-Schnittstellen aufrufen. Das Kartusche-Ausführwerkzeug stellt die Schnittstelle zwischen Kartuschen und dem Versender bereit, leitet den Kartusche-Steuer-Fluss, und stellt Dienste zum Verwenden durch Kartuschen bereit.
  • Wenn der Ressourcen-Manager 254 das Erzeugen einer neuen Kartusche-Instanz benötigt, veranlasst der Ressourcen-Manager 254 das Instanziieren eines Kartusche- Ausführwerkzeuges. Daraufhin veranlasst die dadurch erzeugte Instanz des Kartusche-Ausführwerkzeugs, dass die geeignete Kartusche instanziiert wird. Der Ressourcen-Manager 254 kann das Kartusche-Ausführwerkzeug veranlassen, instanziiert zu werden, beispielsweise durch Aufrufen einer "Kartusche-Ausführwerkzeug-Fabrik", welche auf der Maschine liegt, auf welcher die Kartusche auszuführen ist. Die Instanz des Kartusche-Ausführwerkzeugs kann das Instanziieren der Kartusche, beispielsweise durch Ausführen eines Aufrufes von einer der Routinen der gemeinsam verwendeten Bibliothek, welche die Kartusche bildet, veranlassen.
  • Wie in 2 gezeigt, weist der Web-Applikations-Server 280 Kartusche-Ausführwerkzeuge 228, 232 und 236 für jede der Kartuschen 230, 234 beziehungsweise 238 auf. Die Kartusche-Ausführwerkzeuge steuern das Ausführen von Instanzen der zugehörigen Kartuschen durch Ausführen von Kartusche-Aufrufen durch die Standard-Kartusche-Schnittstelle. Durch Etablieren von grundlegenden Rückruf-Funktionen ("callback functions") zwischen dem Kartusche-Ausführwerkzeug und einer Kartusche kann eine Kartusche in den Web-Applikations-Server 280 integriert werden, indem die Kartusche zum Antworten auf die Rückruf-Funktionen konfiguriert wird, und indem die Kartusche anschließend wie oben beschrieben in dem Konfigurations-Bereitsteller 256 registriert wird.
  • Wenn daher der Versender 214 feststellt, dass die PL/SQL-Laufzeit-Kartusche die geeignete Kartusche zum Bearbeiten einer Anfrage ist, sendet Versender 214 die Anfrage zu einer Kartusche-Instanz, welche ein mit der PL/SQL-Laufzeit-Kartusche assoziiertes Kartusche-Ausführwerkzeug aufweist. Wenn eine neue Instanz initiiert werden muss, erzeugt der Ressourcen-Manager 254 eine neue Instanz der PL/SQL-Laufzeit-Kartusche in einem separaten Adress-Raum und sendet die Anfrage zu dem Kartusche-Ausführwerkzeug 228 der neuen Instanz. Der zum Ausführen der Instanz des Programmes verwendete Adressraum kann innerhalb von Speicher des Computer-Systems liegen, auf welchem eine oder mehrere der Komponenten von Web-Applikations-Server 280 ausgeführt werden, oder auf einem anderen Computersystem.
  • In Antwort auf eine Nachricht von einem Versender gibt das Kartusche-Ausführwerkzeug eine Anfrage-Behandler-Rückruf-Funktion an die Kartusche, wodurch die Kartusche veranlasst wird, die Anfrage zu bearbeiten. Die die Anfrage bearbeitende Kartusche gibt das Ergebnis an das Kartusche-Ausführwerkzeug zurück, welches das Ergebnis zum Versender weiterreicht. Falls der Web-Applikations-Server 280 einen Fehler in dem Vorgang bemerkt, gibt das Kartusche-Ausführwerkzeug eine Herunterfahr-Funktion der Kartusche aus.
  • Daher stellt das Kartusche-Ausführwerkzeug eine Anwendungs-Programmier-Schnittstelle zum Web-Applikations-Server 280 bereit, welche vorbestimmte auszuführende Vorgänge spezifiziert. Das Verwenden der Standard-Kartusche-Schnittstelle ermöglicht es Programmierern von den Kartuschen, jede Kartusche unabhängig von den Protokollen, welche von dem betreffenden Web-Hörer, mit welchem die Kartusche verwendet werden wird, verwendet werden, für Hohe-Ebene Integration ("high level integration") in den Web-Applikatikons-Server 280 zu konfigurieren.
  • TRANSPORT-ADAPTER
  • Hörer ermöglichen das Verwenden von Server-seitigen Einschüben ("plug-ins") mittels Bereitstellen einer Programmier-Schnittstelle und eines Protokolls zum Verwenden durch solche Einschübe. Leider variieren die von Hörern bereitgestellen Programmier-Schnittstellen und Protokolle von Hörer zu Hörer. Beispielsweise sind Netscape Server Application Programming Interface(NSAPI), Internet Server Application Programming Interface (ISAPI) und Application Development Interface (ADI) drei Beispiele von derzeit von Hörern bereitgestellten unterschiedlichen Programmier-Schnittstellen.
  • Transport-Adapter isolieren Versender von den von Web-Hörern verwendeten Schutzrecht-geschützten Protokollen und Schnittstellen. Insbesondere ist jeder Transport-Adapter konfiguriert zum Erkennen der Protokolle der verchiedenen Hörer und zum Konvertieren von von Hörern empfangenen Browser-Anfragen in konvertierte Browser-Anfragen, welche ein Standard-Versender-Protokoll aufweisen, welches von dem Protokoll des Hörers unabhängig ist. In ähnlicher Weise konvertieren Transport-Adapter die Antworten von Versendern in das Transport-Protokoll der Hörer.
  • Daher ermöglicht der Transport-Adapter, dass der Web-Applikations-Server 280 von verschiedenen Anbietern verwendet wird. Darüberhinaus können Transport-Adapter dazu konfiguriert werden, verschiedene Server-Architekturen und Betriebssysteme zu aufzuweisen.
  • BETRIEB DES WEB-APPLIKATIONS-SERVERS
  • 3A und 3B sind ein Flussdiagramm, welches ein Verfahren zum Beantworten einer Browser-Anfrage gemäß einer Ausführungsform der Erfindung erläutert. Die Browser-Anfrage wird in Schritt 350 von einem Hörer empfangen. Zu Zwecken der Erklärung soll angenommen werden, dass die Browser-Anfrage von Browser 202 ausgegeben und von Hörer 210 empfangen wurde.
  • Auf das Empfangen der Browser-Anfrage hin reicht in Schritt 352 der Hörer 210 die Anfrage an Web-Applikations-Server 280 weiter. Insbesondere reicht Hörer 210 die Anfrage unter Verwendung der Schutzrecht-geschützten Programmier-Schnittstelle des Hörers 210 an den Transport-Adapter 212 weiter. Falls nötig, konvertiert Transport-Adapter 212 die Anfrage an Versender 214 unter Verwendung einer Standard-Versender-Programmier-Schnittstelle.
  • Versender 214 identifiziert in Schritt 354 basierend auf dem in der Browser-Anfrage spezifizierten virtuellen Pfad durch Kommunizieren mit dem virtueller-Pfad-Manager 250 den Anfrage-Objekt-Typ, welcher zu der Browser-Anfrage korrespondiert. Der Versender 214 bestimmt in Schritt 356, ob der Anfrage-Objekt-Typ zu einer identifizierbaren Kartusche korrespondiert. Falls der Anfrage-Objekt-Typ nicht zu einer identifizierbaren Kartusche korrespondiert, wird die Anfrage in Schritt 358 zum Hörer 210 zurückgegeben (siehe 3B). Falls in Schritt 358 der Hörer 210 die Anfrage als eine Anfrage nach einer statischen HTML-Seite erkennt, greift der Hörer auf die statische HTML-Seite zu und sendet in Schritt 360 die HTML-Seite an Browser 202. Falls die Browser-Anfrage von Hörer 210 nicht erkannt wird, wird in Schritt 360 die Antwort an Browser 202 gesendet, welche anzeigt, dass die Anfrage nicht erkennbar war.
  • Wenn in Schritt 356 der Versender 214 feststellt, dass (1) die Anfrage zu einer Kartusche gesendet werden muss, und (2) dass dem Hörer 210 keine derzeit FREI-en Instanzen dieser Kartusche zugewiesen worden sind, dann kommuniziert Versender 214 mit dem Ressourcen-Manager 254, um eine Instanz der Kartusche 230 zugewiesen zu bekommen, an welche eine Browser-Anfrage gesendet werden kann. Wie in 3B gezeigt, bestimmt in Schritt 362 der Ressourcen-Manager 254, ob eine Instanz der identifizierten Kartusche unter der existierenden Zahl von Instanzen verfügbar ist (mit noch freier Verfügungsberechtigung).
  • Für die Zwecke der Erklärung soll angenommen werden, dass die Anfrage mit Kartusche 230 assoziiert ist, und dass Kartusche 230 eine PL/SQL-Laufzeit-Kartusche ist.
  • Falls in Schritt 362 der Ressourcen-Manager eine verfügbare Instanz, beispielsweise Instanz 260 der PL/SQL-Laufzeit 230 identifiziert, informiert der Ressourcen-Manager 254 den Versender 214, dass die Anfrage an Instanz 260 gesendet werden sollte. Der Versender 214 erzeugt dann eine bearbeitete Browser-Anfrage, und sendet diese in Schritt 368 an Kartusche-Ausführwerkzeug 228 von Instanz 260, um die verfügbare Instanz 260 zu veranlassen, die Anfrage zu verarbeiten, wie unten beschrieben.
  • Falls allerdings in Schritt 362 keine Instanz der Kartusche 230 verfügbar ist, bestimmt in Schritt 364 der Ressourcen-Manager 254, ob die existierende Anzahl an Instanzen eine vorgeschriebene Maximalzahl überschreitet. Falls die existierende Anzahl von Instanzen die in Schritt 364 vorgeschriebene Zahl überschreitet, zeigt der Ressourcen-Manager 254 dem Versender 214 an, dass die Anfrage derzeit nicht bearbeitet werden kann. In Antwort hierauf gibt der Versender 214 die Anfrage in Schritt 358 an den Hörer 210 zurück, wonach der Web-Hörer 210 in Schritt 360 über das Netzwerk eine Antwort an Browser 202 sendet, um anzuzeigen, dass die Anfrage nicht bearbeitet wurde.
  • Alternativ hierzu kann, wenn derzeit keine Kartusche-Instanz verfügbar ist, um eine Anfrage zu behandeln, Hörer 210 die Anfrage auf eine Warte-Liste für diese Kartusche-Instanz setzen. Wenn eine Kartusche-Instanz verfügbar wird, wird die überarbeitete Browser-Anfrage von der Warteliste entfernt und an die Kartusche-Instanz weitergegeben. Falls die bearbeitete Browser-Anfrage für länger als einen vorbestimmten Zeitraum auf der Warteliste verbleibt, kann Hörer 210 die Anfrage von der Warteliste entfernen und eine Nachricht an Browser 202 senden, um anzuzeigen, dass die Anfrage nicht bearbeitet werden konnte.
  • Falls in Schritt 364 die existierende Instanzen-Anzahl nicht die vorgeschriebene Maximalzahl übersteigt, startet Ressourcen-Manager 254 eine neue Instanz des identifizierten Programms, und informiert den Versender 214, dass eine auf der Browser-Anfrage basierende bearbeitete Browser-Anfrage zu der neuen Instanz gesendet werden sollte. Der Versender 214 sendet dann eine bearbeitete Browser-Anfrage an das Kartusche-Ausführwerkzeug der neuen Instanz.
  • Beispielsweise sei angenommen, dass der Ressourcen-Manager 254 in Antwort auf die Browser-Anfrage Instanz 260 gestartet hat. Während der Initialisierung wird auf die gespeicherten Sequenzen von Anweisungen für die PL/SQL-Laufzeit zugegriffen, um in einem Adressraum, welcher von dem Adressraum, in dem der Versender 214 ausgeführt wird, verschieden ist, eine neue Instanz 260 der Kartusche 230 zu erzeugen. Gemäß einer Ausführungsform wird das Initialisieren aufgeführt durch Laden des Kartusche-Ausführwerkzeugs 228 und Veranlassen, dass das Kartusche-Ausführwerkzeug die Initialisier-Routine der Kartusche 230 aufruft.
  • Sobald die neue Instanz 260 läuft, sendet der Versender 214 in Schritt 368 die Anfrage zu dem mit der neuen Instanz 260 assoziierten Kartusche-Ausführwerkzeug 228.
  • Das Kartusche-Ausführwerkzeug 228 sendet zum Anfordern des Ausführens der Anfrage eine Rückruf-Nachricht ("callback message") zu der neuen Instanz 260. In der Rückruf-Nachricht reicht das Kartusche-Ausführwerkzeug 228 für die Instanz 260 zum Verarbeiten der Anfrage notwendige Parameter weiter. Solche Parameter können beispielsweise Passwörter, Datenbank-Such-Schlüssel oder andere Argumente für eine von der Instanz 260 ausgeführte dynamische Operation sein.
  • Die Instanz 260 verarbeitet dann die Anfrage. Während des Ausführens der Anfrage durch die Instanz in Schritt 368 beobachtet der Versender 214 in Schritt 370 die Instanz, um das Auftreten eines Fehlers festzustellen. Falls in Schritt 370 der Versender 214 einen Fehler entdeckt, ruft der Versender 214 in Schritt 372 das zugehörige Kartusche-Ausführwerkzeug 228 auf, um die fehlerhafte Instanz 260 zu beenden. Das zugehörige Kartusche-Ausführwerkzeug 228 gibt daraufhin einen Herunterfahr-Befehl über das API an die fehlerhafte Instanz. Die Instanz wird in Antwort auf den Herunterfahr-Befehl von dem Kartusche-Ausführwerkzeug 228 heruntergefahren, ohne irgendeinen anderen Prozess in irgendeinen anderem Adressraum zu beeinflussen.
  • Falls in Schritt 370 kein Fehler detektiert wird, empfängt in Schritt 374 der Versender 214 eine Antwort von der Instanz 260 bei Beenden der Ausführung. Der Versender 214 reicht in Schritt 376 die Antwort an den Hörer 210 weiter, welcher dem Browser mit der Antwort von der ausgeführten Instanz 260 antwortet. Nach dem Ausführen der Instanz 260 hält der Versender 214 in Schritt 378 die Instanz im Speicher, wie in Schritt 378 gezeigt, um das Bearbeiten einer nachfolgenden Anfrage zu ermöglichen.
  • VERTEILTE ARCHITEKTUR DES WEB-SERVERS
  • Im Wesentlichen kommunizieren die verschiedenen Komponenten des Web-Applikations-Servers 280 miteinander mittels eines Kommunikations-Mechanismus, welcher es nicht benötigt, dass die Komponenten im gleichen Adressraum oder sogar auf der gleichen Maschine ausgeführt werden. In der dargestellten Ausführungsform sind die Komponenten des Web-Applikations-Servers 280 dazu konfiguriert, durch einen Objekt-Anfrage-Vermittler ("Object Request Broker", ORB) 282 zu kommunizieren. Objekt-Anfrage-Vermittler sind in "Common Object Request Broker: Architecture and Specification (CORBA)" detailliert beschrieben. Dieses Dokument und andere Dokumente mit Bezug zu CORBA können im World-Wide-Web unter http://www.omg.org gefunden werden.
  • Während die Ausführungsformen der vorliegenden Erfindung mit Bezug auf Kommunikation durch einen CORBA-konformen ORB beschrieben werden, können andere plattformübergreifende Kommunikations-Mechanismen verwendet werden. Beispielsweise können als Alternative die Komponenten von Web-Applikations-Server 280 mittels "Remote Procedure Calls" (RPC) [Deutsch: "Entfernte-Prozedur-Aufrufe"], einer UNIX-Pipe oder Microsoft COM kommunizieren.
  • Da die verschiedenen Komponenten des Web-Applikations-Servers 280 miteinander mittels Maschine-unabhängigen Kommunikations-Mechanismen kommunizieren, gibt es keine inhärenten Beschränkungen bezüglich der Anordnung der Komponenten zueinander. Beispielsweise können die Hörer 210, 216 und 222 auf der gleichen Maschine ausgeführt werden, oder auf drei vollständig verschiedenen Maschinen, jede mit einem anderen Betriebssystem. In ähnlicher weise können der Authentizitäts-Server 252, der Virtueller-Pfad-Manager 250, der Ressourcen-Manager 254 und der Konfigurations-Bereitsteller 256 auf der gleichen Maschine oder auf vier verschiedenen Maschinen ausgeführt werden. Ferner ist es möglich, dass diese vier Maschinen keinerlei Überlapp mit den drei Maschinen aufweisen, welche die Hörer 210, 216 und 222 ausführen. Die Kartusche-Ausführwerkzeuge 228, 232 und 236 beinhalten die gesamte notwendige Logik, um durch den Objekt-Anfrage-Vermittler 282 mit den anderen Komponenten des Web-Applikations-Servers 280 zu kommunizieren. Daher ist der Ort der Kartusche-Instanzen selber nicht inhärent durch den Kommunikations-Mechanismus beschränkt. Daher kann Instanz 260 auf einer vollständig anderen Maschine und unter einem vollständig anderen Betriebssystem ausgeführt werden, als die Versender, von denen sie Anfragen erhält. In gleicher Weise kann Instanz 260 auf einer anderen Maschine und unter einem anderen Betriebssystem laufen als der Ressourcen-Manager 254 oder irgendeine der anderen Komponenten des Web-Applikations-Servers 280, inklusive Instanzen von anderen Kartuschen, welche von dem gleichen Web-Applikations-Server 280 gesteuert werden.
  • Im Wesentlichen wird die Ort-Unabhängigkeit, derer sich die von Web-Applikations-Server 280 verwendeten Kartuschen erfreuen, durch die Kommunikations-Logik des Kartusche-Ausführwerkzeugs erreicht, nicht durch irgendeine maßgeschneiderte Programmierung in den Kartuschen selber. Daher müssen die Kartuschen nicht speziell für ein Ausführen in einer verteilte-Anwendung-Server-Umgebung ausgelegt sein. Kartusche-Entwickler sind daher von den Komplexitäten eines verteilten Systems isoliert, und können ihre Bemühungen auf die mit den Aufgaben, für die die Kartuschen erzeugt wurden, verbundene Logik konzentrieren.
  • Wie oben beschrieben, ist ein Web-Applikations-Server 280 bereitgestellt, welcher mehrere Instanzen von verschiedenen Kartuschen steuert, um eine Vielzahl von Anwender-Anfragen zu bearbeiten. Jede Kartusche-Instanz wird in einem von dem Hörer getrennten Speicher-Raum ausgeführt, wodurch die mit Server-seitigen Einschüben einhergehende Sicherheits-Probleme vermieden werden. Ferner können die Kartusche-Instanzen, welche verwendet werden, um die von einem Hörer empfangenen Browser-Anfragen zu bearbeiten, auf vollständig anderen Maschinen als der Hörer ausgeführt werden. Daher erhöht sich die Skalierbarkeit des Systems, während die Belastung der einzelnen Maschinen reduziert wird.
  • Web-Applikations-Server 280 steuert darüber hinaus auch die Instanzenzahl für jede gegebene Kartusche. Serverseitige Ressourcen werden gesteuert, um sicherzustellen, dass eine große Zahl von Anfragen nicht irgendeine Maschine durch ein unkontrollierbares Erzeugen von Instanzen überlastet.
  • Ferner ist durch das Aufrechterhalten einer Minimalzahl von zum Ausführen bereiten Instanzen auch der Ausführ-Durchsatz ebenfalls verbessert. Zusätzliche Instanzen können gestartet werden und im Speicher aufrechterhalten werden, um nachfolgende Anfragen auszuführen, im Gegensatz zum Beenden einer Instanz nach einer einzelnen Ausführung und erneutem Laden der Kartusche in den Speicher zum erneuten Erzeugen einer Instanz zum Ausführen einer nachfolgenden Anfrage.
  • In der vorhergehenden Spezifikation wurde die Erfindung mit Bezug auf spezielle Ausführungsformen hiervon beschrieben. Es wird allerdings offensichtlich sein, dass vielfältige Modifikationen und Änderungen daran ausgeführt werden können, ohne von dem breiteren Schutzbereich der Erfindung abzuweichen. Die Spezifikation und die Zeichnungen sind daher in einem erläuternden Sinne, und nicht in einem einschränkenden Sinne zu verstehen.

Claims (27)

  1. Verfahren zum Ausführen eines Vorganges, das Verfahren aufweisend: Ausführen eines Versenders (214) auf einer ersten Maschine, wobei der Versender (214) eine Einheit ist, welche dazu konfiguriert ist, Anfragen von Clients zu erhalten, und die Anfragen an Kartuschen zu verteilen, welche geeignet sind, die Anfragen auszuführen, Ausführen eines Ressourcen-Managers (254) auf einer zweiten Maschine, Empfangen einer Anfrage am Versender (214) von einem Client, welcher auf einer Maschine ausgeführt wird, welche von der ersten Maschine verschieden ist, wobei das Verfahren gekennzeichnet ist durch: in Antwort auf das Empfangen der Anfrage durch den Versender (214) Senden einer ersten Nachricht vom Versender (214) zum Ressourcen-Manager (254), wobei die erste Nachricht einen speziellen Kartusche-Typ identifiziert, welcher geeignet ist, den Vorgang auszuführen; Senden einer zweiten Nachricht vom Ressourcen-Manager (254) zum Versender (214), wobei die zweite Nachricht eine spezielle Instanz der speziellen Kartusche identifiziert, wobei die spezielle Instanz auf einer dritten Maschine ausgeführt wird; und Senden einer dritten Nachricht von dem Versender (214) zu der speziellen Instanz, um die spezielle Instanz zu veranlassen, den Vorgang auszuführen; und wobei wenigstens zwei der ersten Maschine, der zweiten Maschine und der dritten Maschine separate Maschinen sind.
  2. Verfahren gemäß Anspruch 1, ferner aufweisend die Schritte: Senden einer Browser-Anfrage von einem Browser zu einem Hörer (210); Weiterleiten der Browser-Anfrage von dem Web-Hörer (210) zum Versender (214); wobei der Versender (214) die erste Nachricht in Antwort auf das Empfangen der Browser-Anfrage vom Web-Hörer (210) sendet.
  3. Verfahren gemäß Anspruch 1, wobei die erste Maschine und die zweite Maschine getrennte Maschinen sind; der Schritt des Sendens einer ersten Nachricht vom Versender (214) zum Ressourcen-Manager (254) durch Senden der ersten Nachricht vom Versender (214) zum Ressourcen-Manager (254) durch einen Objekt-Anfrage-Vermittler ausgeführt wird; und der Schritt des Sendens einer zweiten Nachricht vom Ressourcen-Manager (254) zum Versender (214) durch Senden der zweiten Nachricht vom Ressourcen-Manager (254) zum Versender (214) durch den Objekt-Anfrage-Vermittler ausgeführt wird.
  4. Verfahren gemäß Anspruch 1, wobei: die zweite Maschine und die dritte Maschine getrennte Maschinen sind; und das Verfahren den Schritt aufweist, dass in Antwort auf das Empfangen der ersten Nachricht durch den Ressourcen-Manager (254) der Ressourcen-Manager (254) die spezielle Instanz veranlasst, das Ausführen auf der dritten Maschine zu beginnen.
  5. Verfahren gemäß Anspruch 1, wobei der Ressourcen-Manager (254) festlegt, welche spezielle Instanz den Vorgang ausführen soll, indem in Antwort auf das Empfangen der ersten Nachricht die folgenden Schritte ausgeführt werden: Bestimmen, ob eine Instanz der speziellen Kartusche (260) derzeit ausgeführt wird und nicht zugewiesen ist; wenn eine Instanz der speziellen Kartusche (260) derzeit ausgeführt wird und nicht zugewiesen ist, dann Identifizieren einer derzeit laufenden und nicht zugewiesenen Instanz in der zweiten Nachricht; wenn keine Instanz der speziellen, in der ersten Nachricht identifizierten Kartusche (260) derzeit ausgeführt wird und nicht zugewiesen ist, dann Starten einer neuen Instanz der speziellen Kartusche und Identifizieren der neuen Instanz in der zweiten Nachricht.
  6. Verfahren gemäß Anspruch 5, wobei vor dem Starten der neuen Instanz der Ressourcen-Manager (254) die folgenden Schritte ausführt: Inspizieren von Metadaten (256) zum Bestimmen eines die dritte Maschine aufweisenden Satzes von Maschinen, welche geeignet sind, die spezielle Kartusche auszuführen; und Auswählen der dritten Maschine zum Ausführen der neuen Instanz der speziellen Kartusche.
  7. Verfahren gemäß Anspruch 1, ferner aufweisend die Schritte: Veranlassen, dass der Versender (214) eine Liste der Instanzen pflegt, welche dem Versender (214) zugewiesen worden sind; und in Antwort auf das Empfangen der zweiten Nachricht Veranlassen, dass der Versender (214) die Instanzen-Liste derart aktualisiert, dass diese einen Eintrag für die spezielle Instanz aufweist.
  8. Verfahren gemäß Anspruch 7, wobei die Instanzen-Liste Daten aufweist, welche angeben, ob die Instanzen in der Liste derzeit beschäftigt sind; der Versender (214) in Antwort auf das Senden der zweiten Nachricht in dem Eintrag für die spezielle Instanz anzeigt, dass die spezielle Instanz beschäftigt ist; das Verfahren ferner den Schritt aufweist, dass in Antwort auf die dritten Nachricht der Versender (214) eine vierte Nachricht von der speziellen Instanz empfängt; und der Versender (214) in Antwort auf das Empfangen der vierten Nachricht den Eintrag derart aktualisiert, dass er anzeigt, dass die spezielle Instanz derzeit nicht beschäftigt ist.
  9. Verfahren gemäß Anspruch 8, wobei der Schritt des Empfangens einer Anfrage am Versender (214) den Schritt aufweist, dass der Versender (214) eine erste Browser-Anfrage empfängt, welche einen ersten, von der Kartusche durchzuführenden Vorgang spezifiziert; das Verfahren ferner die Schritte aufweist, dass: der Versender (214) eine zweite Browser-Anfrage empfängt, welche einen von einer zweiten Kartusche durchzuführenden zweiten Vorgang spezifiziert; der Versender (214) die Instanzen-Liste inspiziert, um festzustellen, ob die Liste einen Eintrag für eine derzeit nicht beschäftigte Instanz der zweiten Kartusche enthält; falls die Liste einen Eintrag für eine derzeit nicht beschäftigte Instanz der zweiten Kartusche aufweist, Ausführen der Schritte, dass: der Versender (214) in Antwort auf die zweite Browser-Anfrage eine fünfte Nachricht an die spezielle Instanz sendet, um die spezielle Instanz zu veranlassen, den zweiten Vorgang auszuführen; und Aktualisieren des Eintrags, so dass dieser anzeigt, dass die spezielle Instanz derzeit beschäftigt ist; falls die Liste keinen Eintrag für eine derzeit nicht beschäftigte Instanz der zweiten Kartusche enthält, Senden einer sechsten Nachricht an den Ressourcen-Manager (254), um den Ressourcen-Manager (254) zu veranlassen, eine Instanz der zweiten Kartusche zum Ausühren des zweiten Vorgangs anzugeben.
  10. Verfahren gemäß Anspruch 8, ferner aufweisend die Schritte: Feststellen, wenn die spezielle Instanz für länger als einen vorbestimmen Zeitraum im Leerlauf gewesen ist; und dass der Versender (214) dem Ressourcen-Manager (254) die spezielle Instanz freigibt, wenn die spezielle Instanz für länger als einen vorbestimmen Zeitraum im Leerlauf gewesen ist.
  11. Computerlesbares Medium, welches eine oder mehrere Sequenzen von Befehlen zum Ausführen eines Vorganges aufweist, wobei das Computer-lesbare Medium Befehle aufweist: zum Ausführen eines Versenders (214) auf einer ersten Maschine, wobei der Versender (214) eine Einheit ist, welche derart konfiguriert ist, dass Sie Anfragen von Clients empfängt, und die Anfragen an Kartuschen verteilt, welche geeignet sind, die Anfragen auszuführen, zum Ausführen eines Ressourcen-Managers (254) auf einer zweiten Maschine, Empfangen einer Anfrage an dem Versender (214) von einem auf einer von der ersten Maschine verschiedenen Maschine laufenden Client (202), wobei das computerlesbare Medium gekennzeichnet ist durch Befehl zum Ausführen der Schritte, dass: der Versender (214) in Antwort auf das Empfangen von der Anfrage eine erste Nachricht vom Versender (214) zum Ressourcen-Manager (254) sendet, wobei die erste Nachricht einen speziellen Kartusche-Typ identifiziert, welcher geeignet ist, den Vorgang auszuführen; der Ressourcen-Manager (254) eine zweite Nachricht zum Versender (214) sendet, wobei die zweite Nachricht eine spezielle Instanz der speziellen Kartusche identifiziert, wobei die spezielle Instanz auf einer dritten Maschine ausgeführt wird; und der Versender (214) eine dritten Nachricht zu der speziellen Instanz sendet, um die spezielle Instanz zu veranlassen, den Vorgang auszuführen; und wobei wenigstens zwei der ersten Maschine, zweiten Maschine und der dritten Maschine getrennte Maschinen sind.
  12. Computerlesbares Medium gemäß Anspruch 11, ferner Befehle aufweisend zum Ausführen der Schritte, dass: ein Web-Hörer (210) eine von einem Browser empfangene Browser-Anfrage an einen Versender (214) weiterreicht; wobei der Versender (214) die erste Nachricht in Antwort auf das Empfangen der Browser-Anfrage von dem Web-Hörer (210) sendet.
  13. Computerlesbares Medium gemäß Anspruch 11, wobei: die erste Maschine und die zweite Maschine getrennte Maschinen sind; der Schritt des Sendens einer ersten Nachricht vom Versender (214) zum Ressourcen-Manager (254) durch Senden der ersten Nachricht vom Versender (214) zum Ressourcen-Manager (254) durch einen Objekt-Anfrage-Vermittler ausgeführt wird; und der Schritt des Sendens einer zweiten Nachricht vom Ressourcen-Manager (254) zum Versender (214) durch Senden der zweiten Nachricht vom Ressourcen-Manager (254) zum Versender (214) durch den Objekt-Anfrage-Vermittler ausgeführt wird.
  14. Computerlesbares Medium gemäß Anspruch 11, wobei: die zweite Maschine und die dritte Maschine getrennte Maschinen sind; und das computerlesbare Medium den Schritt aufweist, dass der Ressourcen-Manager (254) in Antwort auf das Empfangen der ersten Nachricht durch den Ressourcen-Manager (254) die spezielle Instanz veranlasst, die Ausführung auf der dritten Maschine zu beginnen.
  15. Computerlesbares Medium gemäß Anspruch 11, wobei der Ressourcen-Manager (254) in Antwort auf das Empfangen der ersten Nachricht durch Ausführen der folgenden Schritte ermittelt, welche spezielle Instanz den Vorgang ausführen soll: Bestimmen, ob irgendeine Instanz der speziellen Kartusche (260) derzeit ausgeführt wird und nicht zugewiesen ist; falls irgendeine Instanz der speziellen Kartusche (260) derzeit ausgeführt wird und nicht zugewiesen ist, dann Identifizieren einer Instanz, welche derzeit ausgeführt wird und nicht zugewiesen ist, in der zweiten Nachricht; falls keine Instanz der in der ersten Nachricht identifizierten speziellen Kartusche (260) derzeit ausgeführt wird und nicht zugewiesen ist, dann Starten einer neuen Instanz der speziellen Kartusche, und Identifizieren der neuen Instanz in der zweiten Nachricht.
  16. Computerlesbares Medium gemäß Anspruch 15, wobei vor dem Starten der neuen Instanz der Ressourcen-Manager (254) die folgenden Schritte ausführt: Inspizieren von Metadaten (256) zum Bestimmen eines Satzes von Maschinen, inklusive der dritten Maschine, welche geeignet sind, die spezielle Kartusche auszuführen; und Auswählen der dritten Maschine, um die neue Instanz der speziellen Kartusche auszuführen.
  17. Computerlesbares Medium gemäß Anspruch 11, ferner Befehle zum Ausführen der Schritte aufweisend: Veranlassen, dass der Versender (214) eine Liste der Instanzen unterhält, welche dem Versender (214) zugewiesen worden sind; und Veranlassen, dass der Versender (214) in Antwort auf das Empfangen der zweiten Nachricht die Instanzen-Liste derart aktualisiert, dass sie einen Eintrag für die spezielle Kartusche aufweist.
  18. Computerlesbares Medium gemäß Anspruch 17, wobei: die Instanzen-Liste Daten aufweist, welche anzeigen, ob die Instanzen in der Liste derzeit beschäftigt sind; der Versender (214) in Antwort auf das Senden der zweiten Nachricht in dem Eintrag für die spezielle Instanz anzeigt, dass die spezielle Instanz beschäftigt ist; das computerlesbare Medium ferner Befehle aufweist, welche den Versender (214) in Antwort auf die dritte Nachricht den Schritt des Empfangens einer vierten Nachricht von der speziellen Instanz ausführen lassen; und der Versender (214) in Antwort auf das Empfangen der vierten Nachricht den Eintrag dahingehend aktualisiert, dass dieser anzeigt, dass die spezielle Instanz derzeit nicht beschäftigt ist.
  19. Computerlesbares Medium gemäß Anspruch 18, wobei: der Schritt, dass der Versender (214) eine Anfrage empfängt, den Schritt aufweist, dass der Versender (214) eine erste Browser-Anfrage empfängt, welche einen ersten, von der Kartusche auszuführenden Vorgang spezifiziert; das computerlesbare Medium ferner Befehle aufweist zum Ausführen der Schritte, dass der Versender (214) eine zweite Browser-Anfrage empfängt, welche einen von einer zweiten Kartusche auszuführenden zweiten Vorgang spezifiziert; dass der Versender (214) die Liste von Instanzen inspiziert, um festzustellen, ob die Liste einen Eintrag für eine derzeit nicht beschäftigte Instanz der zweiten Kartusche aufweist; falls die Liste einen Eintrag für eine derzeit nicht beschäftigt Instanz der zweiten Kartusche aufweist, Ausführen der Schritte: dass der Versender (214) in Antwort auf die zweite Browser-Anfrage eine fünfte Nachricht an die spezielle Instanz sendet, um die spezielle Instanz zu veranlassen, den zweiten Vorgang auszuführen; und Aktualisieren des Eintrags, so dass er anzeigt, dass die spezielle Instanz derzeit beschäftigt ist; falls die Liste keinen Eintrag für eine derzeit nicht beschäftigte Instanz der zweiten Kartusche aufweist, Senden einer sechsten Nachricht an den Ressourcen-Manager (254), um den Ressourcen-Manager (254) zu veranlassen, eine Instanz der zweiten Kartusche zum Ausführen des zweiten Vorganges anzuzeigen.
  20. Computerlesbares Medium gemäß Anspruch 18, ferner aufweisend Befehle zum Ausführen der Schritte: Feststellen, wenn die spezielle Instanz für länger als einen vorbestimmten Zeitraum im Leerlauf gewesen ist; und dass der Versender (214) die spezielle Instanz dem Ressourcen-Manager (254) freigibt, wenn die spezielle Instanz für länger als einen vorbestimmten Zeitraum im Leerlauf gewesen ist.
  21. System zum Ausführen von mit Browser-Anfragen assoziierten Vorgängen, das System aufweisend eine Mehrzahl von Versendern, welche mit einer Mehrzahl von Web-Hörern verbunden sind, wobei jeder Versender aus der Mehrzahl von Versendern von einem zugehörigen Web-Hörer aus der Mehrzahl von Web-Hörern von dem zugehörigen Web-Hörer empfangene Browser-Anfragen empfängt, wobei das System dadurch gekennzeichnet ist dass: ein Ressourcen-Manager (254) an die Mehrzahl von Versendern durch einen Inter-Maschine-Kommunikations-Mechanismus gekoppelt ist, welcher es dem Ressourcen-Manager (254) ermöglicht, mit der Mehrzahl von Versendern zu kommunizieren, unabhängig von den Maschinen, auf welchen die Mehrzahl von Versendern angeordnet sind, wobei der Ressourcen-Manager (254) derart konfiguriert ist, dass er in Antwort auf das Empfangen einer Anfrage nach einer Instanz von dem Versender (214) jedem Versender der Mehrzahl von Versendern eine Instanz einer Kartusche (260) der Mehrzahl von Kartuschen zuweist, wobei die Anforderung einen speziellen Kartusche-Typ identifiziert, welcher zum Ausführen eines speziellen Vorganges geeignet ist; die Mehrzahl von Versendern derart konfiguriert ist, dass sie Nachrichten durch den Inter-Maschine-Kommunikations-Mechanismus zu den Instanzen sendet, welche durch den Ressourcen-Manager (254) den Versendern zugewiesen werden, wobei der Inter-Maschine-Kommunikations-Mechanismus es der Mehrzahl von Versendern ermöglicht, mit den Instanzen ohne Bezug auf die Maschinen zu kommunizieren, auf denen die Instanzen angeordnet sind, wobei die Nachrichten die Instanzen veranlassen, die mit den Browser-Anfragen assoziierten Vorgänge auszuführen.
  22. Verfahren gemäß Anspruch 21, ferner aufweisend einen mit der Mehrzahl von Versendern durch den Inter-Maschine-Kommunikations-Mechanismus gekoppelten Virtueller-Pfad-Manager (250), wobei der Virtueller-Pfad-Manager (250) den Versendern anzeigt, welche aus der Mehrzahl von Kartuschen mit den Browser-Anfragen assoziiert ist.
  23. Verfahren gemäß Anspruch 21, wobei der Inter-Maschine-Kommunikations-Mechanismus ein Objekt-Anfrage-Vermittler ist.
  24. Verfahren gemäß Anspruch 21, wobei der Ressourcen-Manager (254) ferner derart konfiguriert ist, dass er in Antwort auf Nachrichten von den Versendern neue Instanzen von Kartuschen startet.
  25. Verfahren gemäß Anspruch 24, wobei der Ressourcen-Manager (254) derart konfiguriert ist, dass er für jede Kartusche eine zwischen einem vorbestimmten Minimum und einem vorbestimmten Maximum liegende Anzahl von laufenden Instanzen aufrechterhält.
  26. Verfahren gemäß Anspruch 21, wobei jeder Versender aus der Mehrzahl von Versendern derart konfiguriert ist, dass er eine Liste der Instanzen unterhält, welche vom Ressourcen-Manager (254) dem Versender (214) zugewiesen worden sind.
  27. Verfahren gemäß Anspruch 21, wobei, wenn ein Versender (214) aus der Mehrzahl von Versendern eine mit einer speziellen Kartusche assoziierte Browser-Anfrage empfängt, und wenn die vom Versender (214) unterhaltene Instanzen-Liste anzeigt, dass eine Instanz der speziellen Kartusche (260) derzeit verfügbar ist, der Versender (214) dann eine Nachricht an die Instanz sendet, ohne eine Instanz für die Browser-Anfrage vom Ressourcen-Manager (254) anzufordern.
DE69824879T 1997-10-31 1998-10-26 Verteilter web- anwendungs- server Expired - Lifetime DE69824879T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US962485 1997-10-31
US08/962,485 US6247056B1 (en) 1997-02-03 1997-10-31 Method and apparatus for handling client request with a distributed web application server
PCT/US1998/022656 WO1999023784A2 (en) 1997-10-31 1998-10-26 Distributed web application server

Publications (2)

Publication Number Publication Date
DE69824879D1 DE69824879D1 (de) 2004-08-05
DE69824879T2 true DE69824879T2 (de) 2005-08-25

Family

ID=25505934

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69824879T Expired - Lifetime DE69824879T2 (de) 1997-10-31 1998-10-26 Verteilter web- anwendungs- server

Country Status (8)

Country Link
US (1) US6247056B1 (de)
EP (1) EP1027796B1 (de)
JP (1) JP3853592B2 (de)
AU (1) AU742156B2 (de)
CA (1) CA2308782C (de)
DE (1) DE69824879T2 (de)
HK (1) HK1029686A1 (de)
WO (1) WO1999023784A2 (de)

Families Citing this family (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6760746B1 (en) * 1999-09-01 2004-07-06 Eric Schneider Method, product, and apparatus for processing a data request
JP4634547B2 (ja) * 1998-06-30 2011-02-16 株式会社東芝 リアルタイム情報配信方法
US6163794A (en) 1998-10-23 2000-12-19 General Magic Network system extensible by users
US6353846B1 (en) * 1998-11-02 2002-03-05 Harris Corporation Property based resource manager system
US6691165B1 (en) * 1998-11-10 2004-02-10 Rainfinity, Inc. Distributed server cluster for controlling network traffic
US6687900B1 (en) * 1998-11-19 2004-02-03 X/Net Associates, Inc. Method and system for loading instructions into an executing process
US6631512B1 (en) * 1999-01-15 2003-10-07 Gillis E Onyeabor Method and system for database-driven, scalable web page development, deployment-download, and execution
US6463459B1 (en) * 1999-01-22 2002-10-08 Wall Data Incorporated System and method for executing commands associated with specific virtual desktop
US9141717B2 (en) 1999-03-22 2015-09-22 Esdr Network Solutions Llc Methods, systems, products, and devices for processing DNS friendly identifiers
US6801949B1 (en) 1999-04-12 2004-10-05 Rainfinity, Inc. Distributed server cluster with graphical user interface
US7346695B1 (en) 2002-10-28 2008-03-18 F5 Networks, Inc. System and method for performing application level persistence
US6970933B1 (en) 1999-07-15 2005-11-29 F5 Networks, Inc. Enabling application level persistence between a server and another resource over a network
US7287084B1 (en) 1999-07-15 2007-10-23 F5 Networks, Inc. Enabling encryption of application level persistence between a server and a client
AU2001257374A1 (en) * 2000-04-28 2001-11-12 Sheer Networks, Inc. Network management method and system
US6941362B2 (en) * 2000-04-28 2005-09-06 Sheer Networks Inc. Root cause analysis in a distributed network management architecture
US7337209B1 (en) 2000-04-28 2008-02-26 Sheer Networks, Inc. Large-scale network management using distributed autonomous agents
WO2001093038A2 (en) * 2000-05-30 2001-12-06 Compaq Computer Corporation Scalable java servers for network server applications
CN1278530C (zh) * 2000-07-24 2006-10-04 特伦迪乌姆有限公司 用于管理业务的网络、方法和系统
IL144709A (en) 2000-08-03 2010-11-30 Cisco Tech Inc Path discovery in a distributed network management architecture
US7032002B1 (en) * 2000-09-06 2006-04-18 Xanboo, Inc. Service broker for processing data from a data network
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
US7657590B2 (en) * 2001-02-07 2010-02-02 Ubs Ag Load balancing system and method
US7000008B2 (en) * 2001-04-16 2006-02-14 Sun Microsystems, Inc. Method, system, and program for providing data updates to a page including multiple regions of dynamic content
US20030208527A1 (en) * 2001-07-20 2003-11-06 Lino Lglesais Method for smart device network application infrastructure (SDNA)
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
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
US7430755B1 (en) 2002-09-03 2008-09-30 Fs Networks, Inc. Method and system for providing persistence in a secure network access
US7430616B2 (en) * 2002-09-16 2008-09-30 Clearcube Technology, Inc. System and method for reducing user-application interactions to archivable form
US7860957B1 (en) * 2002-12-20 2010-12-28 Cisco Technology, Inc. System and method for managing network services in a distributed system
US7171470B2 (en) * 2003-02-20 2007-01-30 International Business Machines Corporation Grid service scheduling of related services using heuristics
US7516195B2 (en) * 2003-04-29 2009-04-07 International Business Machines Corporation Method of handling a web service call
US7568025B2 (en) * 2003-06-27 2009-07-28 Bank Of America Corporation System and method to monitor performance of different domains associated with a computer system or network
US9525566B2 (en) * 2003-07-31 2016-12-20 Cloudsoft Corporation Limited Self-managed mediated information flow
US8307112B2 (en) 2003-07-31 2012-11-06 Cloudsoft Corporation Limited Mediated information flow
US7289989B2 (en) * 2003-11-12 2007-10-30 International Business Machines Corporation Pattern based web services
US7543041B2 (en) * 2003-11-12 2009-06-02 International Business Machines Corporation Pattern based web services using caching
US7404189B2 (en) 2003-12-30 2008-07-22 International Business Machines Corporation Scheduler supporting web service invocation
EP1569106B1 (de) 2003-12-30 2015-12-30 International Business Machines Corporation Webdienstaufrufe unterstützende Ablaufplanung
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
US7490105B2 (en) * 2004-09-15 2009-02-10 International Business Machines Corporation Externalized selection middleware for variability management
US20060080273A1 (en) * 2004-10-12 2006-04-13 International Business Machines Corporation Middleware for externally applied partitioning of applications
CA2586763C (en) 2004-11-08 2013-12-17 Cluster Resources, Inc. System and method of providing system jobs within a compute environment
US20060168268A1 (en) * 2004-12-02 2006-07-27 International Business Machines Corporation Specific method of setting transport-specific properties from transport-agnostic clients
US7711693B2 (en) * 2004-12-03 2010-05-04 Oracle International Corporation Deployment of life-cycle model for LDAP applications
WO2006059852A1 (en) * 2004-12-04 2006-06-08 Electronics And Telecommunications Research Institute Method and system for providing resources by using virtual path
US7971001B2 (en) 2004-12-28 2011-06-28 Sap Ag Least recently used eviction implementation
US8204931B2 (en) 2004-12-28 2012-06-19 Sap Ag Session management within a multi-tiered enterprise network
US20060143256A1 (en) 2004-12-28 2006-06-29 Galin Galchev Cache region concept
US8370448B2 (en) 2004-12-28 2013-02-05 Sap Ag API for worker node retrieval of session request
US7694065B2 (en) 2004-12-28 2010-04-06 Sap Ag Distributed cache architecture
US7539821B2 (en) 2004-12-28 2009-05-26 Sap Ag First in first out eviction implementation
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
US9075657B2 (en) 2005-04-07 2015-07-07 Adaptive Computing Enterprises, Inc. On-demand access to compute resources
US9015324B2 (en) 2005-03-16 2015-04-21 Adaptive Computing Enterprises, Inc. System and method of brokering cloud computing resources
CA2601384A1 (en) 2005-03-16 2006-10-26 Cluster Resources, Inc. Automatic workload transfer to an on-demand center
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
US20060224773A1 (en) * 2005-03-31 2006-10-05 International Business Machines Corporation Systems and methods for content-aware load balancing
US8782120B2 (en) 2005-04-07 2014-07-15 Adaptive Computing Enterprises, Inc. Elastic management of compute resources between a web server and an on-demand compute environment
US8589562B2 (en) 2005-04-29 2013-11-19 Sap Ag Flexible failover configuration
GB2426161A (en) * 2005-05-13 2006-11-15 Onshare Ltd Networking via a communication layer
US7689660B2 (en) 2005-06-09 2010-03-30 Sap Ag Application server architecture
US7966412B2 (en) 2005-07-19 2011-06-21 Sap Ag System and method for a pluggable protocol handler
US20070078927A1 (en) * 2005-09-12 2007-04-05 Microsoft Corporation Server-side service framework
US20070156907A1 (en) 2005-12-30 2007-07-05 Galin Galchev Session handling based on shared session information
US8707323B2 (en) 2005-12-30 2014-04-22 Sap Ag Load balancing algorithm for servicing client requests
WO2007144611A1 (en) 2006-06-12 2007-12-21 Enigmatec Corporation Self-managed distributed mediation networks
US8566452B1 (en) 2006-08-03 2013-10-22 F5 Networks, Inc. Intelligent HTTP based load-balancing, persistence, and application traffic management of SSL VPN tunnels
US8020149B2 (en) * 2006-08-04 2011-09-13 Apple Inc. System and method for mitigating repeated crashes of an application resulting from supplemental code
GB0619644D0 (en) * 2006-10-05 2006-11-15 Ibm Data processing system and method of handling requests
US8024396B2 (en) * 2007-04-26 2011-09-20 Microsoft Corporation Distributed behavior controlled execution of modeled applications
US8239505B2 (en) * 2007-06-29 2012-08-07 Microsoft Corporation Progressively implementing declarative models in distributed systems
US7970892B2 (en) * 2007-06-29 2011-06-28 Microsoft Corporation Tuning and optimizing distributed systems with declarative models
US8230386B2 (en) * 2007-08-23 2012-07-24 Microsoft Corporation Monitoring distributed applications
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US8225308B2 (en) * 2007-10-26 2012-07-17 Microsoft Corporation Managing software lifecycle
US8181151B2 (en) * 2007-10-26 2012-05-15 Microsoft Corporation Modeling and managing heterogeneous 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
US7974939B2 (en) * 2007-10-26 2011-07-05 Microsoft Corporation Processing model-based commands for distributed applications
US20090113292A1 (en) * 2007-10-26 2009-04-30 Microsoft Corporation Flexibly editing heterogeneous documents
US20090112932A1 (en) * 2007-10-26 2009-04-30 Microsoft Corporation Visualizing key performance indicators for model-based applications
US20090177986A1 (en) * 2008-01-07 2009-07-09 Microsoft Corporation Third party in-page application platform
US8112771B2 (en) * 2008-01-30 2012-02-07 Microsoft Corporation Managing component programs within a service application
TW201009698A (en) * 2008-08-19 2010-03-01 Arcadyan Technology Corp Method for improving the accessing efficiency of embedded web page
US8291418B2 (en) * 2008-10-02 2012-10-16 International Business Machines Corporation Sub-dispatching application server
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US8984109B2 (en) 2010-11-02 2015-03-17 International Business Machines Corporation Ensemble having one or more computing systems and a controller thereof
US9253016B2 (en) 2010-11-02 2016-02-02 International Business Machines Corporation Management of a data network of a computing environment
US8959220B2 (en) 2010-11-02 2015-02-17 International Business Machines Corporation Managing a workload of a plurality of virtual servers of a computing environment
US9081613B2 (en) 2010-11-02 2015-07-14 International Business Machines Corporation Unified resource manager providing a single point of control
US8966020B2 (en) 2010-11-02 2015-02-24 International Business Machines Corporation Integration of heterogeneous computing systems into a hybrid computing system
WO2019143808A1 (en) * 2018-01-18 2019-07-25 Bevara Technologies, Llc Browser navigation for facilitating data access
US11734058B2 (en) * 2020-10-27 2023-08-22 Salesforce, Inc. Systems and methods of a virtualized management operation engine of a distributed system

Family Cites Families (28)

* 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
EP0648354B1 (de) 1992-07-01 2000-10-18 Telefonaktiebolaget Lm Ericsson Verfahren und system für implementierung-unabhängige schnittstellenspezifikation
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
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
US5822585A (en) 1995-02-21 1998-10-13 Compuware Corporation System and method for cooperative processing using object-oriented framework
US5907675A (en) 1995-03-22 1999-05-25 Sun Microsystems, Inc. Methods and apparatus for managing deactivation and shutdown of a server
US5761684A (en) 1995-05-30 1998-06-02 International Business Machines Corporation Method and reusable object for scheduling script execution in a compound document
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
EP0894392A2 (de) 1996-04-19 1999-02-03 Intergraph Corporation Datenzugriffssystem und verfahren
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
EP1027796B1 (de) 2004-06-30
AU742156B2 (en) 2001-12-20
JP2001522113A (ja) 2001-11-13
JP3853592B2 (ja) 2006-12-06
US6247056B1 (en) 2001-06-12
WO1999023784A9 (en) 2000-07-20
DE69824879D1 (de) 2004-08-05
CA2308782A1 (en) 1999-05-14
HK1029686A1 (en) 2001-04-06
WO1999023784A3 (en) 1999-07-15
WO1999023784B1 (en) 1999-08-26
EP1027796A2 (de) 2000-08-16
WO1999023784A2 (en) 1999-05-14
AU1278999A (en) 1999-05-24
CA2308782C (en) 2009-06-23

Similar Documents

Publication Publication Date Title
DE69824879T2 (de) Verteilter web- anwendungs- server
DE69814900T2 (de) Verfahren und system zur unterstützung verteilter software- entwicklung ohne bewusstsein der verteilten charakteristik der software
DE69812899T2 (de) Webagent zur anforderung von mehreren prozessen
DE69533148T2 (de) Verfahren und Gerät zur Erzeugung und Verwendung kurzer Operationsidentifizierer in objektorientierten Systemen
DE69832354T2 (de) Netzwerkverwaltungsrahmenwerk
DE69327448T2 (de) Verfahren und Vorrichtung für Teilaufgaben in verteiltem Verarbeitungssystem
DE60133648T2 (de) System und verfahren zum führen von laufzeitdaten in einem server-netzwerk
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
DE69637436T2 (de) Objektorientiertes Kommunikationssystem mit Unterstützung für mehrere entfernte Maschinentypen
DE60211254T2 (de) Fernereignis Behandlung in ein Paketnetzwerk
DE60124440T2 (de) Namensverwaltungskonvention für verschiedene Gerätetypen, und Vorrichtung und Verfahren zur Anwendung dieser Namensverwaltungskonvention
DE69820566T2 (de) Verfahren, Vorrichtung, und Programmprodukt zum Zugriff auf einen Server-basierten Verwaltungsinformationsdienst
DE60126016T2 (de) Serverseitige Kontrollobjekte zur Verarbeitung von kundenseitigen Benutzerschnittstellenelementen
DE69938077T2 (de) Verfahren, Vorrichtung und Programmspeichereinrichtung für einen Klienten und ein adaptiver Synchronisierungs- und Transformierungsserver
DE19607515B4 (de) Computer mit Prozessverwalter
DE60019640T2 (de) Digitales Rechnersystem und Verfahren zur Beantwortung von über ein externes Netzwerk empfangenen Anfragen
DE69531513T2 (de) Vervielfältigungssystem
DE19882235B4 (de) Verwendung von Web-Technologie für Teilnehmerverwaltungsaktivitäten
DE60118487T2 (de) Kommunikationsystem auf Basis von WDSL Sprache
DE60003457T2 (de) Verfahren und system zur konfiguration von komponenten, ausgebbar in einem netzwerk
DE69734432T2 (de) Verfahren und Vorrichtung zur Absendung von Clientverfahrenanrufen in einem Server Rechnersystem
DE69930695T2 (de) Verfahren und Vorrichtung für ein Applikationsverteiler für eine Serverapplikation
DE4033336A1 (de) Verfahren zum erzeugen einer ausfallmeldung und mechanismus fuer ausfallmeldung
DE60316466T2 (de) Unterstüzung von mehreren nativen netzwerkprotokollimplementiurungen in einem einzigen system

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,