DE69615978T2 - Verfahren und Vorrichtung zum Verpackung und Entpackung von Daten in objectreferenzspezifischen Datenformaten anhand generischen Stubs - Google Patents

Verfahren und Vorrichtung zum Verpackung und Entpackung von Daten in objectreferenzspezifischen Datenformaten anhand generischen Stubs

Info

Publication number
DE69615978T2
DE69615978T2 DE69615978T DE69615978T DE69615978T2 DE 69615978 T2 DE69615978 T2 DE 69615978T2 DE 69615978 T DE69615978 T DE 69615978T DE 69615978 T DE69615978 T DE 69615978T DE 69615978 T2 DE69615978 T2 DE 69615978T2
Authority
DE
Germany
Prior art keywords
orb
code
program
code mechanism
call
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 - Fee Related
Application number
DE69615978T
Other languages
English (en)
Other versions
DE69615978D1 (de
Inventor
Graham Hamilton
Peter B. Kessler
Swee Boon Lim
Jeffrey D. Nisewanger
Sanjay R. Radia
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Application granted granted Critical
Publication of DE69615978D1 publication Critical patent/DE69615978D1/de
Publication of DE69615978T2 publication Critical patent/DE69615978T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Description

  • Die vorliegende Erfindung betrifft die Bereiche verteilte Rechnersysteme, Client-Server-Rechner und objektorientierte Programmierung.
  • Die vorliegende Erfindung betrifft insbesondere ein Verfahren und eine Vorrichtung zum Bereitstellen von Programmmechanismen, mit denen generische Stubs Daten in Objektreferenz-spezifischen Datenformaten marshalieren und zurückmarshalieren.
  • Ein Hauptproblem in modernen objektorientierten verteilten Verarbeitungssystemen besteht darin, es Objektanwendungen zu erlauben, mit einem neuen Object Request Broker ("ORB") zu kommunizieren, der sein eigenes individuelles Datenformat hat, mit nur geringfügigen Modifikationen an den unterstützenden Codemechanismen. Ebenso sollten Client-Anwendungen und -Stubs in der Lage sein, nahtlos mit verschiedenen ORBs in einem System zu kommunizieren, das mit einer Vielzahl von ORBs kommunizieren kann, wobei jeder der ORBs sein eigenes individuelles Datenformat hat.
  • So ist beispielsweise die Object Management Group (OMG) eine Industriestandard-Organisation, die Multivendor-Normen für verteilte objektorientierte Programmierung schafft. Einer der Ecksteine der OMG-Arbeit war die Definition einer gemeinsamen Interface Definition Language, IDL genannt, die heute weitverbreitet standardmäßig für die Definition von Schnittstellen zu Netzwerkobjektene unabhängig von den jeweiligen verwendeten Netzwerkprotokollen oder der jeweiligen; von den Clients und Servers verwendeten Programmiersprache eingesetzt wird.
  • Die IDL-Sprache ist objektorientiert und unterstützt mehrfache Vererbung. Sie weist einen reichhaltigen Satz an eingebauten primitiven Typen (wie z. B. Task- Intervalle, boolesche Verknüpfungen usw.) auf und definiert auch einen Satz strukturierter Typen wie z. B. Structs, Vereinigungen und Sequenzen.
  • Die Object Management Group standardisierte die IDL- Schnittstellendefinitionssprache als einheitliche Art und Weise der Definition von Schnittstellen zu Netzwerkobjekten. Die OMG ließ jedoch zunächst das On-the-Wire- Protokoll und die Datenformate undefiniert. In Folge dessen implementierten unterschiedliche Vendoren ORBs mit verschiedenen Protokollen und Datenformaten.
  • Die OMG hat sich kürzlich auf ein gemeinsames ORB- Interoperabilitätsprotokoll geeinigt, das Universal Networked Objects (UNO) Protokoll. Dies wird jedoch vornehmlich als Gateway-Protokoll für die Verbindung von Objektsystemen von verschiedenen Vendoren angesehen. Es scheint, dass verschiedene Vendoren wenigstens kurzfristig ihre existierenden Protokolle zur Erhöhung der Leistungen innerhalb ihrer eigenen Objektsysteme wahrscheinlich weiter verwenden und UNO-Gateways niedrigerer Leistung zu anderen ORBs unterstützen. Somit besteht derzeit der Bedarf, es Objektanwendungen zu erlauben, auf transparente Weise mit diesen ORBs mit verschiedenen Protokollen und Datenformaten zu kommunizieren.
  • Eine weitergehende Beschreibung der objektorientierten Design- und Programmierungstechniken befindet sich in "Object-oriented Software Construction" von Bertrand Meyer, Prentice-Hall 1988. Weitere Informationen über OMG, CORBA, ORBs und IDL siehe "Common Object Request Broker: Architecture and Specification", Revision 2.0, Juli 1955.
  • Momentan sind Internet-Browser im Hinblick auf ihre Fähigkeit, mit Netzwerk-Servern zu interagieren, sehr begrenzt. Ein Browser wie beispielsweise Mosaic lädt gewöhnlich ein HTML-Dokument herunter und wartet dann passiv, bis ein menschlicher Benutzer entweder ein anderes Dokument wählt oder Informationen im HTML-Format eingibt, die dann zurück zum Server geleitet werden.
  • Zwei neue Entwicklungen sehen vielversprechend aus, um das Internet zu einer dynamischeren Umgebung zu machen. Die erste ist die Unterstützung für Skriptsprachen in Internet-Browsern (wie z. B. die nachfolgend beschriebene JAVA- Sprache von Sun Microsystems, Inc. (SUN), so dass ein Browser interaktive Skripte herunterladen und ausführen kann. Damit sind dann Browser nicht mehr nur passive Betrachter, sondern sie werden zu dynamischen Agenten, die mit dem Internet für einen Benutzer interagieren und sich rasch ändernde Informationen anzeigen können. Die zweite Entwicklung ist die weit verbreitete Übernahme der verteilten Objektschnittstellen auf der Basis der IDL-Schnittstellendefinitionssprache der Object Management Group. Dies ergibt eine Standardmöglichkeit für Netzwerk-Server, um Dienste wie "Netzwerkobjekte" in einer sprach- und vendorunabhängigen Weise zu exportieren. So wird es weitaus leichter, Netzwerkdienste zu erstellen, auf die transparent von verschiedenen Client-Umgebungen aus zugegriffen werden kann.
  • Die EP-0604010 offenbart eine Vorrichtung und ein Verfahren, umfassend ein Logikmodul mit der Bezeichnung Subcontract, das die Aufgabe hat, die Basismechanismen von Objektaufruf und Argumentweiterleitung zu steuern, die in verteilten Systemen am Wichtigsten sind, und zwar auf eine Weise, die es Objektimplementoren erleichtert, einen existierenden Subcontract auszuwählen und zu verwenden, und die es den Anwendungsprogrammierern erlaubt, keine Kenntnis über die spezifischen Subcontracts zu haben, die für bestimmte Objekte verwendet werden.
  • Dazu gehört ein neuer Objekttyp, als "Spring-Objekt" bezeichnet, der eine Methodentabelle, einen Subcontract-Mechanismus und eine Datenstruktur beinhaltet, die den lokalen Privatzustand des Subcontracts repräsentiert.
  • Jeder Subcontract enthält einen clientseitigen Teil und einen zugehörigen serverseitigen Teil. Jeder Objekttyp hat einen assoziierten Subcontract. Der clientseitige Teil eines Subcontracts hat die Fähigkeit, ein neues Spring-Objekt zu erzeugen, ein Spring-Objekt zu löschen, Informationen über sein assoziiertes Objekt in einen Kommunikationspuffer zu marshalieren, Daten in einem Kommunikationspuffer, der ein assoziiertes Objekt repräsentiert, zurückzumarshalieren, einen Kommunikationspuffer zu seinem assoziierten serverseitigen Subcontract zu senden, was entweder das Senden eines Objekts von einem Ort zum anderen oder das Senden einer Kopie eines Objekts von einem Ort zum anderen beinhaltet. Der serverseitige Teil des Subcontract-Mechanismus beinhaltet die Fähigkeit, ein Spring-Objekt zu schaffen, Unterstützung für die Verarbeitung eingehender Rufe und zugehöriger Kommunikationspuffer sowie Unterstützung für die Revokation eines Objekts bereitzustellen.
  • Hierzu gehören auch Methoden für die Verwendung von Subcontracts zum Verarbeiten von Objektaufrufen, einschließlich des Weiterleitens von Argumenten, wobei diese Argumente an sich Objekte sein können, in einem verteilten Computersystem, wobei sich die Client-Anwendungen auf anderen Computern als die Objektimplementationen befinden können.
  • Die EP-0643349 offenbart eine Vorrichtung und ein Verfahren, umfassend Logikmodule, die als clientseitige Stubgeneratoren bezeichnet werden, eine Datenbank für komprimierten clientseitigen Stub-Ausführungscode und einen clientseitigen Stub-Interpreter, die die Aufgabe haben, den von clientseitigen Stubs benötigten Speicherraum zu minimieren und gleichzeitig das Design von Stubs zu behalten, um die Steuerung der Basismechanismen von Objektaufruf und Argumentweiterleitung bereitzustellen, die in verteilten Systemen am Wichtigsten sind, so dass Anwendungsprogrammierer die spezifischen Stubs nicht zu kennen brauchen, die für bestimmte Objekte verwendet werden.
  • Der zum Reduzieren dieses Speicherraums verwendete Mechanismus umfasst einen Stub-Generator ("CONTOCC" genannt) zum Erzeugen einer Datenbank aus komprimierten clientseitigen Stub-Beschreibungsdateien, die im Computerspeicher gespeichert sind, und einen Stub-Interpreter, der weiß, wie diese clientseitigen Stub- Beschreibungsdateien zu lesen sind. CONTOCC liest Dateien in der Schnittstellendefinitionssprache ("IDL") und erzeugt entsprechende C++ Dateien. CONTOCC hat die Fähigkeit, die IDL-Daten zu lesen und entweder unkomprimierte C++ Stub-Dateien oder die speziellen komprimierten clientseitigen Stub-Interpreter- Dateien zu erzeugen, die nur diejenigen Daten enthalten, die für das in der Bytekodierten Form beteiligte jeweilige Stub-Verfahren individuell sind.
  • Das Stub-Interpreter-Logikmodul empfängt ein Zielobjekt, Argumente in Bezug auf das jeweilige aufgerufene Stub-Verfahren sowie einen Zeiger auf die komprimierten Byte-Code-Repräsentationen des Stub-Codes in der Datenbank von komprimierten clientseitigen Stub-Beschreibungsdateien, die im Computerspeicher gespeichert sind, und fährt mit der Ausführung von Objektaufruf, Marshalieren oder Zurückmarshalieren von Rückgabemeldungen nach Bedarf fort.
  • Java
  • Java ist eine stark typisierte objektorientierte Sprache mit einer C-ähnlichen Syntax. Der Java-Compiler und die Laufzeit-Code-Mechanismen gewährleisten Typensicherheit, so dass es keine Wild-Pointers oder anderen Referenzen gibt, die das Typensystem der Sprache verletzen. So gibt es beispielsweise kein "Void*" (Leerstellen), und alle Casts werden in Laufzeit validiert.
  • Die Java-Sprache wird typischerweise in maschinenunabhängige Byte-Codes kompiliert, danach interpretiert eine virtuelle Java-Maschine diese Byte-Codes, um das Java-Programm auszuführen. Java kann in Netzwerk-HTML-Browser integriert werden, so dass im Rahmen des Betrachtens eines Dokumentes ein Satz von Java- Byte-Codes heruntergeladen und dann auf der Client-Maschine ausgeführt werden kann. Da Java vollständig typensicher ist, kann der Client-Browser sicher sein, dass das Java-Programm sicher ausgeführt werden kann, ohne dass Sicherheit oder Integrität des Clients gefährdet werden. Java ist ausführlicher in "The Java Language Specification", Release 1.0 Alpha3, von Sun Microsystems, Inc. vom 11. Mai 1995 beschrieben.
  • Skriptsprachensysteme wie Java erzeugen Java-Programme, die portabel entwickelt sind und in einer Reihe verschiedener Umgebungen eingesetzt werden können. Es ist daher wünschenswert, dass Java-Programme verschiedene ORBs verwenden können, ohne dass das Java-Programm auf irgendeine Weise geändert werden müßte. Da die erzeugten Stubs Teil des Java-Programms sind, ist es notwendig, dass die Stubs ORB-unabhängig sind, so dass das Java-Programm und seine assoziierten Stubs in beliebigen aus einer Vielzahl von ORBs verwendet werden können.
  • Die vorliegende Offenbarung beschreibt eine Lösung für das Grundproblem durch Erzeugen einer generischen Schnittstelle zwischen den Stubs und ORB- spezifischen Datenmechanismen. Diese ORB-spezifischen Datenmechanismen beinhalten ein oder mehrere MarshalBuffer-Objekte, die Methoden zum Marshalieren und Zurückmarshalieren von einem oder mehreren bestimmten ORB-bezogenen On- the-Wire-Datenformaten haben, sowie ein Verfahren und eine Vorrichtung zum Verwenden einer Objektreferenz (Objref), um das jeweilige MarshalBuffer-Objekt für die Verwendung für diesen bestimmten Objektaufruf anzuzeigen.
  • Die vorliegende Erfindung stellt eine elegante und einfache Möglichkeit bereit, um Mechanismen für den Aufruf von Objekten durch Client-Anwendungen sowie für Argumentweiterleitungen zwischen Client-Anwendungen und Objektimplementationen bereitzustellen, ohne dass die Client-Anwendung oder das Betriebssystem die Einzelheiten der Arbeitsweise dieser Mechanismen kennt. Darüber hinaus arbeiten diese Mechanismen in einer verteilten Computer-Umgebung mit ähnlicher Leichtigkeit und Effizienz, wobei Client-Anwendungen ein Computer- Knoten und Objektimplementationen aufeinander sein können.
  • In einem Aspekt der Erfindung wird ein Computersystem mit einem Prozessor, einem Speicher, einem Anzeigegerät, einem Ein-Ausgabegerät und einem Betriebssystem (OS) zum Verarbeiten von Aufrufen von Programmcodemechanismen bereitgestellt, die an einen aus einer Vielzahl von ortsfernen Objekt Request Brokern (ORBs) gerichtet sind, dadurch gekennzeichnet, dass das Computersystem ferner folgendes umfasst:
  • eine ORB-unabhängige Schicht von Codemechanismen einschließlich Programmanwendungen und zugehörigen Stubs; und
  • eine ORB-abhängige Schicht von Codemechanismen, die mit der ORB- unabhängigen Schicht gekoppelt ist, wobei die ORB-abhängige Schicht folgendes umfasst:
  • Programmcodemechanismen, die ORB-spezifisch und so konfiguriert sind, dass sie einen Marshal-Codemechanismus zum Marshalieren (Einsortieren) von Daten in einem von dem ORB benötigten Format zu erzeugen, und
  • Programmcodemechanismen, die so konfiguriert sind, dass sie einen spezifischen Netzwerkprotokollcode verwenden, so dass ein Programmanwendungscode-Mechanismus von der ORB-unabhängigen Schicht einen Aufruf an einen ortsfernen Implementationsprogrammcode-Mechanismus einleiten kann, und die ORB-spezifischen Programmcodemechanismen in der ORB-abhängigen Schicht einen geeigneten Marshal-Codemechanismus ermitteln, um Daten in einem vom ORB benötigten Format zu marschalieren;
  • so dass ein Computersystem entsteht, das mit einer Vielzahl von ORBs kommunizieren kann, wobei jeder ORB ein spezielles Datenformat verlangt. In einem weiteren Aspekt der Erfindung wird ein Verfahren zum Betreiben eines Computersystems mit einem Prozessor, einem Speicher, einem Display, einem Ein-Ausgabemechanismus, einem Betriebssystem und wenigstens einem Client- Anwenderprogramm, einem oder mehreren Stub-Programmen in Bezug auf die Client-Anwendung bereitgestellt, wobei das mit dem Computer durchgeführte Verfahren durch die folgenden Schritte gekennzeichnet ist:
  • Einleiten eines Aufrufs an einen Programmimplementationscode- Mechanismus, wobei der Aufruf durch eine Client-Anwendung erfolgt, wobei der Aufruf eine Referenz auf den Programmimplementationscode-Mechanismus beinhaltet;
  • Verwenden eines Stubprogrammcode-Mechanismus, der sich auf die Client- Anwendung zum Empfangen des Aufrufs bezieht, wobei der Stubprogrammcode- Mechanismus das Format nicht kennt, das zum Marshalieren von Daten benötigt wird, die von der Client-Anwendung in Verbindung mit der Aufrufeinleitung bereitgestellt werden;
  • Aufrufen eines ersten spezifischen Programmcodemechanismus durch den Stubprogrammcode-Mechanismus, Anfordern des ersten spezifischen Programmcodemechanismus zur Bereitstellung eines MarshalBuffer- Codemechanismus, der weiß, wie von der Client-Anwendung bereitgestellte Daten in Verbindung mit dem Aufruf formatiert werden;
  • Marshalieren der von der Client-Anwendung bereitgestellten Daten in Verbindung mit dem Aufruf, wobei die Marshalierung vom Stubprogrammcode- Mechanismus mit Hilfe des MarshalBuffer-Codemechanismus erfolgt; und Senden des Aufrufs zu einem Server, der den Programmimplementationscode- Mechanismus enthält, der das Ziel des Rufs ist.
  • In einem weiteren Aspekt der Erfindung wird ein Computerprogrammprodukt bereitgestellt, umfassend: ein in einem Computersystem benutzbares Speichermedium, in dem rechnerlesbarer Code eingebettet ist, mit dem veranlasst werden kann, dass ein Computersystem Programmcodemechanismus-Aufrufe verarbeitet, die an einen aus einer Vielzahl von ortsfernen Object Request Brokern (ORBs) gerichtet sind, wobei das Computerprogrammprodukt gekennzeichnet ist durch:
  • einen ersten rechnerlesbaren Programmcodemechanismus, der so konfiguriert ist, dass er eine ORB-unabhängige Schicht von Codemechanismen umfasst, einschließlich Client-Anwendungen und zugehörigen Stubprogrammcode- Mechanismen; und
  • einen zweiten rechnerlesbaren Programmcodemechanismus, der so konfiguriert ist, dass er eine ORB-abhängige Schicht von Codemechanismen umfasst, die mit der ORB-unabhängigen Schicht gekoppelt sind, wobei die ORB-abhängige Schicht Programmcodemechanismen umfasst, die ORB-spezifisch und so konfiguriert sind, dass sie einen Marshal-Codemechanismus zum Marshalieren von Daten in einem vom ORB benötigten Format erzeugt, und Programmcodemechanismen, die so konfiguriert sind, dass sie einen spezifischen Netzwerkprotokollcode benutzen, so dass ein Programmanwendungscode-Mechanismus von der ORB-unabhängigen Schicht einen Ruf auf einem ortsfernen Implementationsprogrammcodemechanismus einleiten kann, und die ORB-spezifischen Programmcodemechanismen in der ORB- abhängigen Schicht einen geeigneten Marshal-Codemechanismus zum Marshalieren von Daten in einem vom ORB benötigten Format bestimmen, so dass ein Computersystem bereitgestellt wird, das in der Lage ist, mit einer Vielzahl von ORBs zu kommunizieren, wobei jeder ORB Daten in einem bestimmten Format verlangt.
  • Die vorliegende Erfindung wird nachfolgend beispielhaft unter Bezugnahme auf die Begleitzeichnungen näher beschrieben. Dabei zeigt:
  • Fig. 1 die Konfiguration eines typischen Computerhardwaresystems, das mit und im Rahmen der vorliegenden Erfindung eingesetzt wird;
  • Fig. 2 die Beziehung von Client- und Server-Anwendungen des Standes der Technik zu Stubs und Netzsoftware;
  • Fig. 3 ein System, das Java ORB-Klassen illustriert;
  • Fig. 4 die Beziehung zwischen Stub-Objekten, ORB-spezifischen Code/Subcontract-Mechanismen sowie Server-Anwendungsobjekten in einem einzelnen ORB-System;
  • Fig. 5 Fern-Objektaufruf mit ORB-spezifischen Code/Subcontracts, ORB- spezifischen MarshallBuffer-Mechanismen in einem Multi-ORB-System;
  • Fig. 6 einen beispielhaften MarshallBuffer-Codemechanismus;
  • Fig. 7 einen spezifischeren Fernobjektaufruf mit ORB-spezifischen Code/Subcontracts, ORB-spezifischen MarshallBuffer-Mechanismen in einem Multi- ORB-System.
  • NOTATIONEN UND NOMENKLATUR
  • Die nachfolgenden ausführlichen Beschreibungen können im Sinne von Programmprozeduren dargestellt werden, die auf einem Computer oder einem Netzwerk von Computern ausgeführt werden. Diese Prozedurbeschreibungen und - darstellungen sind das Mittel, mit dem die Fachperson die Substanz ihrer Arbeit anderen Fachpersonen auf effektivste Weise übermittelt.
  • Eine Prozedur wird hier und allgemein als eine in sich einheitliche Sequenz von Schritten angesehen, die zu einem gewünschten Ergebnis führen. Diese Schritte sind diejenigen, die physikalische Manipulationen physikalischer Quantitäten erfordern. Diese Quantitäten haben gewöhnlich, aber nicht unbedingt, die Form von elektrischen oder magnetischen Signalen, die gespeichert, übertragen, kombiniert, verglichen und auf andere Weise manipuliert werden können. Es ist zuweilen praktisch, hauptsächlich aus Gründen des allgemeinen Gebrauchs, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu bezeichnen. Es ist jedoch zu bemerken, dass alle diese und ähnliche Terme mit den entsprechenden physikalischen Quantitäten assoziiert werden müssen und lediglich praktische Bezeichnungen für diese Quantitäten sind.
  • Ferner werden die durchgeführten Manipulationen häufig mit Begriffen bezeichnet, wie z. B. Addieren oder Vergleichen, die allgemein mit mentalen Vorgängen assoziiert werden, die von einem menschlichen Operator ausgeführt werden. Es ist keine solche Fähigkeit eines menschlichen Operators in den hier beschriebenen Vorgängen, die Teil der vorliegenden Erfindung darstellen, notwendig oder in den meisten Fällen auch nur wünschenswert; die Vorgänge sind Maschinenvorgänge. Nützliche Maschinen für die Durchführung der Vorgänge der vorliegenden Erfindung beinhalten universelle digitale Computer oder ähnliche Geräte.
  • Die vorliegende Erfindung bezieht sich auch auf eine Vorrichtung zum Ausführen dieser Vorgänge. Diese Vorrichtung kann speziell für die gewünschten Zwecke konstruiert werden oder sie kann einen Universalcomputer umfassen, der selektiv von einem im Computer gespeicherten Computerprogramm aktiviert oder umkonfiguriert wird. Die hierin dargestellten Prozeduren beziehen sich nicht automatisch auf einen bestimmten Computer oder eine andere bestimmte Vorrichtung. Verschiedene Universalmaschinen können mit Programmen verwendet werden, die gemäß den hierin gegebenen Lehren geschrieben wurden, oder es kann sich als praktischer erweisen, spezialisiertere Vorrichtungen zu konstruieren, die die gewünschten Verfahrensschritte ausführen. Die benötigte Struktur für eine Auswahl dieser Maschinen geht aus der nachfolgenden Beschreibung hervor.
  • Die nachfolgende Offenbarung beschreibt Lösungen für die Probleme, denen Designer von objektorientierten Systemen bei dem Versuch begegnen, Schemata für Objektaufrufe und Argumentweiterleitungen in verteilten Systemen zu implementieren, wobei die Argumente Objekte sein können, auf Arten und Weisen, die das objektorientierte Basissystem nicht an Methoden binden, die sich später schwer ändern lassen. Darüber hinaus beschreibt die offenbarte Erfindung einen "MarshalBuffer-Mechanismus", der Vorgänge (im objektorientierten Programmierjargon als "Methoden" bezeichnet) zum Marshalieren von Daten für einen spezifischen ORB enthält; ein "Multi-ORB-Marshalierungssystem", das es einer Client-Anwendung und dem zugehörigen Stub erlaubt, einen Vorgang an einem Zielobjekt aufzurufen, ohne zu wissen oder berücksichtigen zu müssen, welchen ORB dieses Zielobjekt benutzt oder welches Datenformat der ORB für die Argumente des aufgerufenen Vorgangs erfordert; und ein "Computersystem für Multi-ORB- Kommunikationen", umfassend eine ORB-unabhängige Schicht, die Client- Anwendungen und Stubs enthält; eine ORB-abhängige, OS-unabhängige Schicht, die ORB-abhängige Code/Subcontract-Codemechanismen sowie ORB-spezifische MarshalBuffers für eine Vielzahl von ORBs enthält; und eine Betriebssystem-(OS) Schicht. Der in der vorliegenden Erfindung zur Anwendung kommende "ORB- abhängige Codemechanismus" ist analog zu dem "Subcontract Mechanismus", der mit jedem Objekt assoziiert und in der EP-A-0604010 beschrieben ist.
  • In der nachfolgenden Beschreibung werden zu Erläuterungszwecken spezifische Daten und Konfigurationen dargelegt, um ein tiefgreifendes Verständnis der vorliegenden Erfindung zu vermitteln. Die hierin beschriebene bevorzugte Ausgestaltung wird im Rahmen des objektorientierten Betriebssystems SPRING- DISTRIBUTION implementiert, das von Sun Microsystems®, Inc. entwickelt wurde (Sun Microsystems ist ein eingetragenes Markenzeichen der Sun Microsystems, Inc.). Für die Fachperson ist es jedoch offensichtlich, dass die vorliegende Erfindung auch ohne die spezifischen Einzelheiten ausgeführt und in verschiedenen Computersystemen und verschiedenen Konfigurationen sowie in Marken und Modellen von eng gekoppelten Prozessoren oder in verschiedenen Konfigurationen von lose gekoppelten Multi-Prozessor-Systemen implementiert werden kann. Das objektorientierte Betriebssystem Spring-Distribution ist in "A Spring Collection" beschrieben, einer Sammlung von Artikeln über das verteilte objektorientierte Betriebssystem von Spring, veröffentlicht im September 1994 von Sun Microsystems, Inc.
  • Betriebsumgebung
  • Die Umgebung, in der die vorliegende Erfindung zur Anwendung kommt, umfasst das allgemeine verteilte Computersystem, bei dem universelle Computer, Workstations oder Personal Computer über Kommunikationsverbindungen verschiedener Typen in einer Client-Server-Anordnung verbunden sind, in der Programme und Daten, viele in der Form von Objekten, von verschiedenen Teilen des Systems für die Ausführung und den Zugriff durch andere Elemente des Systems verfügbar gemacht werden. Einige der Elemente eines universellen Workstation- Computers sind in Fig. 1 dargestellt, in der ein Prozessor 1 mit einem Ein-Ausgabeteil ("E/A") 2, einer Zentraleinheit ("CPU") 3 und einem Speicherteil 4 gezeigt ist. Der E/A-Teil 2 ist mit einer Tastatur S. einem Display 6, einer Plattenspeichereinheit 9 und einem CD-ROM Laufwerk 7 verbunden. Das CD-ROM Gerät 7 kann ein CD- ROM Medium 8 lesen, das typischerweise Programmcode-Mechanismen 10 und Daten enthält.
  • Stubs
  • Techniken zum Bereitstellen eines Furniers auf Sprachebene für Fernbetrieb (z. B. "Fernprozeduraufrufe") werden seit vielen Jahren verwendet. Sie haben gewöhnlich die Form, dass eine Fernschnittstelle in einer Sprache definiert ist. Dann wird ein Paar Stubs von dieser Schnittstelle erzeugt. Der Client-Stub läuft auf einer Maschine und stellt eine Schnittstelle auf Sprachebene dar, die von der Fernschnittstelle abgeleitet wird. Der Server-Stub läuft auf einer anderen Maschine und ruft eine Schnittstelle auf Sprachebene auf, die von der Fernschnittstelle abgeleitet ist. Gemäß Fig. 2 ruft zur Ausführung eines Fernbetriebs eine Client- Anwendung 12 auf einer Maschine 11 den Client-Stub 14 auf, der die Argumente in Bezug auf den Aufruf in (einen) Netzwerkpuffer marshaliert und sie zum Server-Stub 22 auf der Fernmaschine 18 sendet, die die Argumente von dem/den Netzwerkpuffer(n) zurückmarshaliert und die Server-Anwendung 24 aufruft. Ebenso werden, wenn die Server-Anwendung 24 eine Antwort zurücksendet, die Ergebnisse vom Server-Stub 22 hinaufmarshaliert und zum Client-Stub 14 zurückgegeben, der die Ergebnisse zurückmarshaliert und sie zur Client-Anwendung 12 zurückgibt. Die gesamte Mechanik von Argument- und Ergebnisübertragung sowie von Fernobjektaufruf wird in den Stubs ausgeführt. Sowohl Client-Anwendung als auch Server-Anwendung arbeiten nur im Sinne von konventionellen Schnittstellen auf Sprachebene.
  • Wenn die Argumente oder Ergebnisse einfach Werte wie z. B. ganze Zahlen oder Strings sind, dann sind die Vorgänge von Marshalieren und Zurückmarshalieren recht einfach. Die Stubs setzen normalerweise einfach den buchstäblichen Wert des Arguments in den Netzwerkpuffer. In Sprachen, die abstrakte Datentypen oder Objekte unterstützen, wird das Marshalieren jedoch weitaus komplexer. Eine Lösung besteht darin, dass Stubs die internen Datenstrukturen des Objekts marshalieren und diese Daten dann in ein neues Objekt zurückmarshalieren. Dies hat mehrere ernsthafte Mängel. Zunächst stellt dies eine Verletzung des "Abstraktions"-Prinzips der objektorientierten Programmierung dar, da Stubs das Innenleben von Objekten nicht zu kennen brauchen. Zweitens ist es notwendig, dass Server- und Client- Implementationen des Objektes dasselbe interne Layout für ihre Datenstrukturen verwenden. Drittens kann dies das Marshalieren von großen Mengen unnötiger Daten beinhalten, weil nicht unbedingt der gesamte interne Zustand des Objekts zu der anderen Maschine übertragen zu werden braucht. Eine alternative Lösung ist die, dass beim Marshalieren eines Objektes nichts von seinem internen Zustand übertragen wird. Stattdessen wird eine Identifikationsmarke für das Objekt erzeugt, und diese Marke wird übertragen. So werden beispielsweise im Eden-System Objekten Namen zugeordnet, und wenn ein Objekt marshaliert wird, dann wird nur dieser Name anstatt der eigentlichen Darstellung marshaliert. Demzufolge müssen Fernmaschinen, wenn sie an diesem Objekt arbeiten wollen, den Namen benutzen, um den ursprünglichen Ort des Objekts zu ermitteln, und ihre Aufrufe zu diesem Ort senden. Dieser Mechanismus ist für schwerwiegende Objekte wie z. B. Dateien oder Datenbanken geeignet, ist aber häufig für leichte Abstraktionen wie z. B. ein Objekt ungeeignet, das ein kartesisches Koordinatenpaar repräsentiert, wo es weitaus besser gewesen wäre, den echten Zustand des Objektes zu marshalieren. Schließlich bieten einige objektorientierte Programmiersysteme das Mittel für eine Objektimplementation, um zu steuern, wie seine Argumente marshaliert und zurückmarshaliert werden. So können beispielsweise im Argus-System Objektimplementoren Funktionen bereitstellen, um zwischen ihrer internen Darstellung und einer spezifischen, konkreten externen Darstellung abzubilden. Die Argus-Stubs rufen die entsprechenden Abbildungsfunktionen beim Marshalieren und Zurückmarshalieren von Objekten auf, so dass die externe Darstellung anstatt einer bestimmten internen Darstellung gesendet wird. Diese verschiedenen Lösungen legen entweder eine einzelne standardmäßige Marshalierungsstrategie für alle Objekte auf oder sie erfordern es, dass individuelle Objektimplementoren die Verantwortung für die Einzelheiten der Marshalierung übernehmen. Ein weiterentwickelter Objektmarshalierungsprozess wird in der oben erwähnten EP-A-0604010 beschrieben, die "Subcontracts" beschreibt.
  • Zusammenfassung des derzeitigen Problems Spezifisches Problem für derzeitige objektorientierte Systeme
  • Das spezifische Problem besteht hier darin, dass verschiedene ORBs unterschiedliche On-the-Wire-Datenformate haben. So könnte beispielsweise ein ORB Bytes in Little-Endian-Reihenfolge, ein anderer in Big-Endian-Reihenfolge usw. marshalieren. Verschiedene ORBs haben unterschiedliche On-the-Wire-Formate für Arrays, Strings, Vereinigungen usw.
  • Es ist somit wünschenswert, ORB-unabhängige Stubs zu haben, die ihre Daten auf verschiedene Weise marshalieren können, wenn sie mit verschiedenen Objekten kommunizieren. So könnte man beispielsweise ein DEC-Datenformat beim Kommunizieren mit einem DEC-Objekt und ein Sun-Datenformat bei der Kommunikation mit einem Sun-Objekt verwenden. Und es wäre wünschenswert, dass ein einzelner Stub-Satz gleichzeitig mit verschiedenen ORBs verwendet werden kann.
  • Vorgeschlagene Lösung für das Problem
  • Die Lösung lautet:
  • (1) Definieren einer generischen Schnittstelle für die Marshalierung. Diese generische Schnittstelle ergibt Verfahren zum Marshalieren und Zurückmarshalieren von ganzen Zahlen (Ints), Kurzzeichen (Shorts), Bytes, Zeichen und Strings. Es gibt jedoch keinen Hinweis darauf, wie diese Verfahren implementiert werden.
  • (2) Verschiedene ORBs implementieren ihre generische MarshalBuffer- Schnittstelle selbst. Diese ORB-spezifischen Marshalklassen unterstützen nicht nur die generischen Marshalierungs- und Zurückmarshalierungsmethoden, sondern sie stellen auch zusätzliche Methoden zum Marshalieren von ORB-spezifischen Daten bereit. So stellt beispielsweise die MarshalBuffer-ORB-Implementation von Spring Methoden zum Marshalieren und Zurückmarshalieren von Spring-Türen bereit.
  • (3) Jede Objektreferenz (Objref) enthält einen Zeiger auf einen Satz von ORB- Laufzeitmaschinen, der zu dem ORB gehört, der das Objekt implementiert. In der bevorzugten Implementation ist dies ein Zeiger auf den clientseitigen ORB- abhängigen Code-Mechanismus/Subcontract für das Objekt.
  • (4) Die in (3) beschriebenen ORB-Laufzeitmaschinen unterstützen ein Verfahren für den Erhalt eines MarshalBuffer-Objekts. Die Laufzeitmaschinen geben ein MarshalBuffer-Objekt zurück, das die korrekte Marshalierung und Zurückmarshalierung für diesen ORB implementiert.
  • (5) Die generischen Stubs arbeiten vollkommen im Sinne der generischen MarshalBuffer-Schnittstelle.
  • (6) Zu Beginn jedes Rufs rufen die generischen Stubs die ORB-spezifischen Laufzeit-Codemechanismen in Verbindung mit der Objektreferenz, um ein geeignetes MarshalBuffer-Objekt zu erhalten. Die Stubs verwenden dann die generischen Marshalierungs- und Zurückmarshalierungsschnittstellen, um Daten zu und von diesem MarshalBuffer-Objekt zu marshalieren und zurückzumarshalieren. Da die Implementationen dieser Marshalierungs- und Zurückmarshalierungsmethoden ORB- spezifisch sind, bedeutet dies, dass die Daten auf eine ORB-spezifische Weise marshaliert und zurückmarshaliert werden.
  • In der derzeit bevorzugten Ausgestaltung beinhaltet der generische MarshalBuffer zusätzliche Fähigkeiten für die Handhabung von Unterschieden in mehreren bekannten ORBs. Z. B.:
  • (a) über die Methoden zum Marshalieren und Zurückmarshalieren von einfachen Datentypen hinaus, stellt der generische MarshalBuffer eine Möglichkeit zum Marshalieren von Array-Deskriptoren bereit. Dieses Verfahren nimmt die Grenzen der Array und marshaliert einen Array-Deskriptor auf eine ORB-spezifische Weise. So marshaliert beispielsweise der DOE ORB Code die Länge der Array. Aber der ORB-Code von Spring marshaliert die Untergrenze und die Obergrenze; und (b) stellt auf ähnliche Weise Mechanismen zum Zurückmarshalieren eines Array- Deskriptors bereit.
  • UMSETZUNG UND ANWENDUNG DER ERFINDUNG Eine portable ORB-Implementation
  • Eines der Ziele der bevorzugten Ausgestaltung der vorliegenden Erfindung ist es, dass die Java ORB Implementation direkt mit einer Vielzahl verschiedener On-the- Wire-Protokollen und Datenformaten arbeiten kann. Insbesondere muss ein einzelnes Java-Programm in der Lage sein, gleichzeitig Objektreferenzen zu verwenden, die sich auf Objekte in verschiedenen ORBs beziehen. Das Internet ist eine äußerst heterogene Umgebung, und es ist wünschenswert, dass sie Java IDL Clients nicht auf die Arbeit mit nur jeweils einem einzigen Server beschränkt.
  • Insbesondere muss die Java-ORB-Implementation der bevorzugten Ausgestaltung in der Lage sein, direkt mit der Distributed Objekt Environment (DOE) von Sun und dem verteilten Betriebssystem von Spring zu kommunizieren. Es ist auch wünschenswert, den Java-ORB-Kern so auszulegen, dass er mit UNO-Gateways oder mit Objektsystemen auf DCE-Basis kommunizieren könnte.
  • Portabilitätsfaktoren
  • Portabilität ist ein Faktor auf mehreren verschiedenen Ebenen.
  • Auf der untersten Ebene wird die Socket-Klasse von Java verwendet, um Maschinen- und OS-unabhängigen Zugang zur IP-Protokollfamilie zu erhalten.
  • In der nächsthöheren Ebene verwenden verschiedene ORBs unterschiedliche Low-Level-Netztransportprotokolle. So arbeiten beispielsweise die DOE-Systeme von Sun mit ONC RPC, das Spring-System verwendet ein optimiertes sequenziertes Paketprotokoll, UNO arbeitet mit TCP/IP, einige andere Vendoren mit DCE RPC usw. Dies mag vielleicht wie ein recht bedeutender Unterschied auszusehen, es ist aber tatsächlich vergleichsweise leicht, verschiedene Low-Level-Transportprotokolle einzustecken.
  • Leider haben auch die verschiedenen Transportprotokolle unterschiedliche Datenformate für einfache Datentypen. So müssen beispielsweise ganzzahlige Werte in einer Big-Endian Byte-Reihenfolge für einen ONC ORB und in einer Little-Endian Byte-Reihenfolge für einen DCE ORB übertragen werden. Dies beeinflusst die Art und Weise, in der Argumente von den Marshal-Puffern marshaliert und zurückmarshaliert werden können.
  • In der nächsthöheren Ebene können zwei ORBs selbst dann, wenn sie sich auf ein Standardformat für einfache Datentypen einigen, möglicherweise uneinig darüber sein, wie die IDL-strukturierten Datentypen gehandhabt werden. So benutzen beispielsweise sowohl der Spring ORB als auch der DOE ORB das ONC XDR Format für einfache Datentypen; wenn sie aber einen Array-Deskriptor senden, dann sendet der DOE ORB einfach eine ganze Zahl, die die Länge vorgibt, während der Spring-ORB zwei ganze Zahlen sendet, von denen die eine die Untergrenze und die andere die Obergrenze der Array vorgibt. Dies bedeutet, dass, wenn Stubs gewünscht werden, die zwischen verschiedenen ORBs verwendet werden können, die Stubs nicht direkt Gegenstände wie Array-Deskriptoren marshalieren können, sondern stattdessen einen ORB-spezifischen Code rufen müssen.
  • Schließlich wird es wahrscheinlich verschiedene Formate für die verschiedenen Arten von IDL-bezogenen Meta-Daten wie z. B. Objektreferenzen, Methodenkennungen, Ausnahmenkennungen und Typenkennungen geben. So verwendet beispielsweise Spring ganze Zahlen als Methodenkennungen. Andere ORBs senden entweder einen einfachen Methodennamen eines vollqualifizierten Schnittstellennamens plus einer Methodennamenkombination.
  • Die Portabilitätsstrategie
  • In der bevorzugten Ausgestaltung bestand die allgemeine Strategie darin, Stabs zu erzeugen, die ORB-unabhängig sind, und die ORB-Abhängigkeiten innerhalb der individuellen Objektreferenzen zu verbergen. Dies hat den großen Vorteil, dass ein einziger Java-Stubs-Compiler verwendet werden kann, der Stubs erzeugen kann, die mit jedem beliebigen ORB verwendet werden können. Dies bedeutet jedoch, dass Schnittstellen zwischen den Stubs und der Objektreferenz benötigt werden, die es den Stubs erlauben, Argumente zu marshalieren und Fernvorgänge auf eine ORB-unabhängige Weise aufzurufen.
  • Erfahrungen mit der Verwendung des Subcontract-Mechanismus im Spring- System wurden bei der Entwicklung der Trennung zwischen den Stubs und der ORB- spezifischen Schicht genutzt. Spring lässt es zu, dass verschiedene Objektreferenzen verschiedene Formate und verschiedene Aufrufmechanismen haben, damit Dinge wie Replikation und Daten-Caching unterstützt werden können. Dies erfolgt durch Assoziieren eines Software-Moduls mit der Bezeichnung Subcontract mit jeder Objektreferenz. Wenn die Spring-Stubs eine Objektreferenz marshalieren oder aufrufen wollen, dann rufen sie den Subcontract in Verbindung mit der Objektreferenz auf, so dass die Marshalierung oder der Objektaufruf auf eine Weise erfolgt, die für diesen Subcontract geeignet ist.
  • In der JAVA ORB Implementation der bevorzugten Ausgestaltung wurde eine zusätzliche abstrakte Schnittstelle hinzugefügt, so dass ein einzelner Stub-Satz mit mehreren ORBs kommunizieren könnte. Eine abstrakte MarshalBuffer-Schnittstelle kam hinzu, und die Erzeugung von MarshalBuffers wurde von den Stubs zu den Subcontracts verlegt, so dass verschiedene ORBs unterschiedliche MarshalBuffer- Subklassen bereitstellen könnten, die Daten im richtigen Format für diesen ORB marshalieren und zurückmarshalieren. Fig. 3 zeigt eine Darstellung der Java-ORB- Klassen. In Fig. 3 verwendet eine Java-Anwendung 70 einen Satz von Stubs 68, um mit einem Satz von Fernobjekten (nicht dargestellt) zu kommunizieren. Diese Stubs und Anwendungen umfassen eine "ORB-unabhängige" Schicht 69, die allgemein mit der "OS-unabhängigen/ORB-abhängigen" Schicht 61 Verbindung hat. Eine beispielhafte "OS-unabhängige/ORB-abhängige" Schicht 61 umfasst beispielsweise zwei verschiedene Spring-Subcontract-Mechanismen 66, 64, die denselben MarshalBuffer 60 und denselben Spring-Netzprotokoll-Codemechanismus 56 verwenden, um mit dem Fernobjekt (nicht dargestellt) zu kommunizieren. Es wird ein ORB-abhängiger Codemechanismus 62 für die Verwendung durch den DOE ORB von Sun dargestellt, der einen DOE MarshalBuffer 58 benutzt, der wiederum den DOE-Netzprotokoll-Codemechanismus 54 verwendet. In diesem Beispiel verwenden sowohl der Spring-Netzprotokoll-Codemechanismus 56 als auch der DOE- Netzprotokoll-Codemechanismus 54 den Java-Netz-"Socket"-Codemechanismus 52. (Die Java-"Socket"-Klasse bietet Zugang zu TCP/IP und UDP Funktionalität auf eine Weise, die etwa den Socket-Schnittstellen ähnlich ist, die in den Berkeley UNIX Distributionen bereitgestellt wird.) Dieser Java-Netz- "Socket"-Codemechanismus 52 verwendet Betriebssystem-(OS) Dienste 51 von dem jeweiligen OS, auf dem er läuft.
  • Die MarshalBuffer-Schnittstelle
  • In der bevorzugten Ausgestaltung wurde die Schnittstelle zwischen den Stubs und der MarshalBuffer-Schnittstelle so definiert, dass die Stubs nicht nur einfache primitive Typen wie Zeichen und Länge marshalieren, sondern auch die Kontrolle darüber erhalten, wie strukturierte IDL-Datentypen marshaliert werden. Dies bedeutet die Bereitstellung generischer MarshalBuffer-Methoden zum Marshalieren und Zurückmarshalieren von Array-Headern und Vereinigungsdiskriminatoren.
  • Zusammensetzen des Puzzles
  • Im Kontext der vorliegenden Erfindung können verschiedene Anwendungen Objekte aufrufen oder Daten zu Objekten senden, die Implementationen haben, die mit verschiedenen ORBs assoziiert sind, aber in diesem Fall mit ORB-unabhängigen Code/ Subcontract-Mechanismen, um den Ziel-ORB zu bestimmen, um einen MarshalBuffer zu finden, der weiß, wie die Daten für die Zielimplementation zu marshalieren sind, und um mit der Maschine zu kommunizieren, die die Zielimplementation enthält. Gemäß Fig. 5 gibt die Client-Anwendung 112 wieder den Aufruf an Stub 112 aus. In diesem Fall sendet jedoch der Stub 112 den Aufruf an einen ORB-spezifischen Code/Subcontract-Mechanismus 212, der in der bevorzugten Ausgestaltung von einer Anzeige in objref bestimmt wird. (Eine alternative Ausgestaltung würde einen ORB-ID-Mechanismus zum Identifizieren des ORB- spezifischen Codemechanismus beinhalten, der von einem spezifischen Objektaufruf benötigt wird, wobei dieser ORB-ID-Mechanismus vorgegeben werden könnte, wenn die Objektimplementation erzeugt wird, und bei jedem nachfolgenden Aufruf dieses Objektes verwendet werden könnte. Die Fachperson wird erkennen, dass es viele verschiedenen Möglichkeiten gibt, den von einer Objektreferenz benötigten ORB- spezifischen Code zu identifizieren.) Dieser ORB-spezifische Code/Subcontract- Mechanismus 212 bestimmt, welches Format vom Ziel-ORB benötigt wird, und stellt ein MarshalBuffer-Objekt 210 bereit, das in der Lage ist, die richtige Marshalierung durchzuführen und den Client-Stub 114 darüber zu informieren, welches MarshalBuffer-Objekt 210 verwendet werden soll. Der Client-Stub 114 marshaliert mit diesem MarshalBuffer-Objekt 210 die Daten und sendet sie wie zuvor zum Netzsoftware-Codemechanismus/Gerät 116. Auf der Serverseite 118 weiß der ORB- spezifische Codemechanismus 214 des Ziels, wie er die Daten zurückmarshalieren muss, und leitet sie zum Zurückmarshalierungspuffer 216 weiter, der bei einer Java- Übertragung eine virtuelle Maschine sein kann, um die Byte-Code-Daten für die Ausführung durch die Server-Maschine zu interpretieren.
  • In der bevorzugten Ausgestaltung stellen wir für jede IDL-Objektreferenz des Typs FOO eine Java-Stub-Klasse FOO bereit, die aus einem Satz von Stub-Methoden und einem Zeiger auf ein Subcontract-Objekt besteht, das Informationen enthält, die das Serverobjekt identifizieren. Jedes Objekt der Stub-Klasse zeigt auf ein anderes Subcontract-Objekt, und diese Subcontract-Objekte können verschiedene Implementationen haben, so dass sie mit verschiedenen ORBs kommunizieren können. Wenn die Stub-Methoden einen Objektaufruf vornehmen möchten, dann fordern sie den Subcontract auf, ihnen ein geeignetes MarshalBuffer-Objekt zu geben, und benutzen dann diesen MarshalBuffer, um die Objekte zu marshalieren und die Ergebnisse zurückzumarshalieren. Ein beispielhafter MarshalBuffer ist in Fig. 6 dargestellt. Die in Fig. 6 gezeigte MarshalBuffer-Schnittstelle repräsentiert eine klare Trennung zwischen der Funktionalität des ORB-abhängigen Codes beim Marshalieren und Zurückmarshalieren von Daten. Die Stubs verstehen den jeweiligen Satz von Argumenten oder Ergebnissen, die für einen bestimmten IDL-Ruf benötigt werden. Die Stubs rufen dann den ORB-abhängigen Codemechanismus, der die MarshalBuffer-Schnittstelle implementiert, um jedes Datenelement, das in den Argumenten oder Ergebnissen enthalten ist, zu marshalieren (oder zurückzumarshalieren). Der ORB-abhängige Codemechanismus weiß nichts über die IDL-Schnittstelle, sondern marshaliert einfach die einzelnen Datenelemente im richtigen Format für diesen Ziel-ORB. Die wichtigsten Konzepte in der bevorzugten Ausgestaltung sind: (1) die MarshalBuffer-Schnittstelle wie die in Fig. 6 gezeigt ist eine Schnittstelle, für die verschiedene ORBs ihre eigene Implementation bereitstellen können, und (2) der ORB-abhängige Code stellt das MarshalBuffer-Objekt zu den Stubs bereit.
  • So könnte beispielsweise, bezugnehmend auf Fig. 7, eine Objektreferenz vom IDL-Typ FOO 404, die auf einen Spring-Server (nicht illustriert) zeigt, einen Singleton-Subcontract 408 von Spring benutzen. Wenn die Stubs für FOO 406 einen Aufruf an eine der FOO-Methoden vornehmen, dann fordern sie zunächst den Subcontract 408 auf, ihnen einen MarshalBuffer zu geben. Der Singleton-Subcontract 408 gibt einen Spring MarshalBuffer 410 zurück, der den On-the-Wire-Datenformaten von Spring entspricht. Die Stubs 406 marshalieren dann die Methodenargumente zum MarshalBuffer 410. Wenn die Stubs 406 alle Argumente marshaliert haben, dann rufen sie den Subcontract 408 und fordern ihn auf, tatsächlich den Methodenaufruf zum Server zu senden. Der Singleton-Subcontract 408 verwendet die Spring- Netzprotokoll-Handler 412, um die Anforderung an den Spring-Server zu senden und die Ergebnisse zu holen. Die Stubs 406 können dann die Ergebnisse vom MarshalBuffer 410 zurückmarshalieren und sie zur Client-Anwendung 402 zurückgeben.
  • In der bevorzugten Ausgestaltung wird ein Stub-Compiler contojava verwendet, der komplette Java-Client-Stubs für IDL-Schnittstellen erzeugt.
  • Darüber hinaus wird eine funktionsfähige Java ORB Implementation verwendet, die mit DOE- und Spring-Servern kommunizieren kann. Der Code für die Kommunikation mit Spring beinhaltet zwei Subcontracts (Caching und Singleton) sowie eine Java-Implementation des Proxy-Proxy-Protokolls von Spring. Der Code für die Kommunikation mit DOE beinhaltet einen einzelnen Subcontract (für den Basic Object Adapter (BOA)) und Code zum Suchen und Aktivieren von DOE BOA Objekten. Der gesamte ORB-Code ist in Java geschrieben und ist zwischen verschiedenen Java-Umgebungen portabel. Man ist der Ansicht, dass dieser ORB- Kern leicht mit Subcontracts erweitert werden kann, die mit UNO oder ORBs kommunizieren könnten, die von anderen Vendoren implementiert werden.

Claims (16)

1. Computersystem mit einem Prozessor (3), einem Speicher (4), einem Anzeigegerät (6), einem Ein-Ausgabegerät (2) und einem Betriebssystem (OS) zum Verarbeiten von Aufrufen von Programmcodemechanismen (10), die an einen aus einer Vielzahl von ortsfernen Object Request Brokern (ORBs) gerichtet sind, dadurch gekennzeichnet, dass das Computersystem ferner folgendes umfasst:
eine ORB-unabhängige Schicht von Codemechanismen (69) einschließlich Programmanwendungen und zugehörigen Stubs; und
eine ORB-abhängige Schicht von Codemechanismen (61), die mit der ORB- unabhängigen Schicht gekoppelt ist, wobei die ORB-abhängige Schicht folgendes umfasst:
Programmcodemechanismen, die ORB-spezifisch (212) und so konfiguriert sind, dass sie einen Marshal-Codemechanismus (210) zum Marshalieren (Einsortieren) von Daten in einem von dem ORB benötigten Format zu erzeugen, und
Programmcodemechanismen, die so konfiguriert sind, dass sie einen spezifischen Netzwerkprotokollcode (116) verwenden, so dass ein Programmanwendungscode-Mechanismus von der ORB-unabhängigen Schicht einen Aufruf an einen ortsfernen Implementationsprogrammcode-Mechanismus einleiten kann, und die ORB-spezifischen Programmcodemechanismen in der ORB-abhängigen Schicht (61) einen geeigneten Marshal-Codemechanismus ermitteln, um Daten in einem vom ORB benötigten Format zu marschalieren;
so dass ein Computersystem entsteht, das mit einer Vielzahl von ORBs kommunizieren kann, wobei jeder ORB ein spezielles Datenformat verlangt.
2. Computersystem nach Anspruch 1, bei dem die ORB-unabhängige Schicht von Codemechanismen (69) mit Programmanwendungen und zugehörigen Stubs Objektanwendungen und zugehörige Stubs umfassen.
3. Computersystem nach Anspruch 1 oder 2, bei dem der Marshal- Codemechanismus (210) zum Marshalieren von Daten in einem vom ORB benötigten Format, der sich in der ORB-abhängigen Schicht (61) befindet, ein MarshalBuffer- Objekt ist, das so konfiguriert ist, dass es Vorgänge zum Marshalieren von Daten in einem ORB-spezifischen Format ausführt.
4. Computersystem nach Anspruch 1, 2 oder 3, bei dem der Programmcode- Mechanismus, der so konfiguriert ist, dass er einen spezifischen Netzwerkprotokollcode (116) verwendet, mit einem Servercomputer (118) kommuniziert, der folgendes umfasst:
einen Empfangsprogrammcode-Mechanismus (120), der ORB-abhängigen Code umfasst, der so konfiguriert ist, dass er einen Objektaufruf von einem ortsfernen
Computersystem (110) empfängt; und
eine ORB-unabhängige Serveranwendung, so dass der Empfangsprogrammcode-Mechanismus in die ORB-unabhängige Serveranwendung (214) hineinruft und einen MarshalBuffer einbringt, so dass die Serveranwendung Argumente zurückmarshalieren (aussortieren) und Ergebnisse marshalieren kann, ohne wissen zu müssen, von welchem ORB ein Anruf stammte.
5. Computersystem nach Anspruch 1, 2, 3 oder 4, bei dem die ORB-abhängige Schicht (61) auch von der Betriebssystem-Schicht (OS) unabhängig ist.
6. Verfahren zum Betreiben eines Computersystems mit einem Prozessor (3), einem Speicher (4), einem Display (6), einem Ein-Ausgabemechanismus (2), einem Betriebssystem und wenigstens einem Client-Anwenderprogramm (112), einem oder mehreren Stub-Programmen (114) in Bezug auf die Client-Anwendung, wobei das mit dem Computer durchgeführte Verfahren durch die folgenden Schritte gekennzeichnet ist:
Einleiten eines Aufrufs an einen Programmimplementationscode- Mechanismus, wobei der Aufruf durch eine Client-Anwendung erfolgt, wobei der Aufruf eine Referenz auf den Programmimplementationscode-Mechanismus beinhaltet;
Verwenden eines Stubprogrammcode-Mechanismus, der sich auf die Client- Anwendung zum Empfangen des Aufrufs bezieht, wobei der Stubprogrammcode- Mechanismus das Format nicht kennt, das zum Marshalieren von Daten benötigt wird, die von der Client-Anwendung in Verbindung mit der Aufrufeinleitung bereitgestellt werden;
Aufrufen eines ersten spezifischen Programmcodemechanismus (212) durch den Stubprogrammcode-Mechanismus, Anfordern des ersten spezifischen Programmcodemechanismus (212) zur Bereitstellung eines MarshalBuffer- Codemechanismus (210), der weiß, wie von der Client-Anwendung bereitgestellte Daten in Verbindung mit dem Aufruf formatiert werden;
Marshalieren der von der Client-Anwendung bereitgestellten Daten in Verbindung mit dem Aufruf, wobei die Marshalierung vom Stubprogrammcode- Mechanismus mit Hilfe des MarshalBuffer-Codemechanismus erfolgt; und
Senden des Aufrufs zu einem Server (118), der den Programmimplementationscode-Mechanismus enthält, der das Ziel des Rufs ist.
7. Verfahren nach Anspruch 6, umfassend den zusätzlichen Schritt des Zurückmarshalierens (216) von Ergebnissen vom MarshalBuffer, wobei die Ergebnisse vom Programmimplementationscode-Mechanismus geliefert werden, der mit dem Aufruf gerufen wurde.
8. Verfahren nach Anspruch 6 oder 7, bei dem der erste spezifische Programmcode-Mechanismus (212), der vom Stubprogrammcode-Mechanismus gerufen wurde, ein für einen Object Request Broker (ORB) spezifischer Codemechanismus ist.
9. Verfahren nach Anspruch 6, 7 oder 8, bei dem der Stubprogrammcode- Mechanismus, der den ORB-spezifischen Codemechanismus (212) ruft, den ORB nicht kennt, der den Ruf verarbeitet.
10. Verfahren nach Anspruch 6, 7, 8 oder 9, bei dem der Objekt Request Broker (ORB) ein ORB ist, der mit einem Common Object Request Broker (CORBA) gemäß der Object Management Group (OMG) kompatibel ist.
11. Verfahren nach Anspruch 6, 7, 8, 9 oder 10, umfassend die folgenden zusätzlichen Schritte:
Empfangen eines Objektaufrufs von einem ortsfernen Computersystem (110) auf einem serverseitigen ORB-abhängigen Codemechanismus (120); und
Ausgeben eines Rufs in eine ORB-unabhängige Serveranwendung (214), wobei der Ruf durch den serverseitigen ORB-abhängigen Codemechanismus erfolgt, der einen MarshalBuffer einbringt, der es zulässt, dass die Serveranwendung Argumente zurückmarshaliert und Ergebnisse marshaliert, ohne wissen zu müssen, von welchem ORB ein Ruf stammt.
12. Computerprogrammprodukt, umfassend ein in einem Computersystem benutzbares Speichermedium (9), in dem rechnerlesbarer Code eingebettet ist, mit dem veranlasst werden kann, dass ein Computersystem Programmcodemechanismus- Aufrufe verarbeitet, die an einen aus einer Vielzahl von ortsfernen Object Request Brokern (ORBs) gerichtet sind, wobei das Computerprogrammprodukt gekennzeichnet ist durch:
einen ersten rechnerlesbaren Programmcodemechanismus, der so konfiguriert ist, dass er eine ORB-unabhängige Schicht (69) von Codemechanismen umfasst, einschließlich Client-Anwendungen (112) und zugehörigen Stubprogrammcode- Mechanismen (114); und
einen zweiten rechnerlesbaren Programmcodemechanismus, der so konfiguriert ist, dass er eine ORB-abhängige Schicht (61) von Codemechanismen umfasst, die mit der ORB-unabhängigen Schicht (69) gekoppelt sind, wobei die ORB- abhängige Schicht Programmcodemechanismen umfasst, die ORB-spezifisch und so konfiguriert sind, dass sie einen Marshal-Codemechanismus (210) zum Marshalieren von Daten in einem vom ORB benötigten Format erzeugt, und Programmcodemechanismen (116), die so konfiguriert sind, dass sie einen spezifischen Netzwerkprotokollcode benutzen, so dass ein Programmanwendungscode-Mechanismus von der ORB-unabhängigen Schicht einen Ruf auf einem ortsfernen Implementationsprogrammcodemechanismus (120) einleiten kann, und die ORB-spezifischen Programmcodemechanismen in der ORB-abhängigen Schicht einen geeigneten Marshal-Codemechanismus zum Marshalieren von Daten in einem vom ORB benötigten Format bestimmen, so dass ein Computersystem bereitgestellt wird, das in der Lage ist, mit einer Vielzahl von ORBs zu kommunizieren, wobei jeder ORB Daten in einem bestimmten Format verlangt.
13. Computerprodukt nach Anspruch 12, bei dem die ORB-unabhängige Schicht (69) von Codemechanismen mit Programmanwendungen (112) und zugehörigen Stubs (114) Objektanwendungen und zugehörige Stubs umfassen.
14. Computerprogrammprodukt nach Anspruch 12 oder 13, bei dem der Marshal- Codemechanismus zum Marshalieren von Daten in einem vom ORB benötigten Format, der sich in der ORB-abhängigen Schicht (61) befindet, ein MarshalBuffer Object (210) ist, das so konfiguriert ist, dass es Vorgänge zum Marshalieren von Daten in einem ORB-spezifischen Format ausführt.
15. Computerprogrammprodukt nach Anspruch 12, 13 oder 14, bei dem der Programmcodemechanismus, der so konfiguriert ist, dass er einen spezifischen Netzwerkprotokollcode (116) benutzt, der sich in der ORB-abhängigen Schicht (61) befindet, so konfiguriert ist, dass er einen Netzwerkprotokollcode-Mechanismus benutzt, der ausgewählt ist aus einer Gruppe bestehend aus Spring- Netzwerkprotokollcode und DOE-Netzwerkprotokollcode.
16. Computerprogrammprodukt nach Anspruch 12, 13, 14 oder 15, bei dem der Marshal-Codemechanismus zum Marshalieren von Daten in einem vom ORB benötigten Format, die sich in der ORB-abhängigen Schicht (61) befinden, ebenfalls konfiguriert ist, um an ihn zurückgegebene Ergebnisse zurückzumarshalieren.
DE69615978T 1995-09-28 1996-07-25 Verfahren und Vorrichtung zum Verpackung und Entpackung von Daten in objectreferenzspezifischen Datenformaten anhand generischen Stubs Expired - Fee Related DE69615978T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/534,966 US5737607A (en) 1995-09-28 1995-09-28 Method and apparatus for allowing generic stubs to marshal and unmarshal data in object reference specific data formats

Publications (2)

Publication Number Publication Date
DE69615978D1 DE69615978D1 (de) 2001-11-22
DE69615978T2 true DE69615978T2 (de) 2002-04-11

Family

ID=24132257

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69615978T Expired - Fee Related DE69615978T2 (de) 1995-09-28 1996-07-25 Verfahren und Vorrichtung zum Verpackung und Entpackung von Daten in objectreferenzspezifischen Datenformaten anhand generischen Stubs

Country Status (4)

Country Link
US (1) US5737607A (de)
EP (1) EP0766172B1 (de)
JP (1) JPH09231076A (de)
DE (1) DE69615978T2 (de)

Families Citing this family (174)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6038395A (en) * 1994-12-16 2000-03-14 International Business Machines Corporation System and method for implementing proxy objects in a visual application builder framework
US6009464A (en) * 1995-09-20 1999-12-28 Sun Microsystems, Inc. Method and apparatus for enabling application programs to communicate with network clients and servers
US6078308A (en) 1995-12-13 2000-06-20 Immersion Corporation Graphical click surfaces for force feedback applications to provide user selection using cursor interaction with a trigger position within a boundary of a graphical object
US5887172A (en) * 1996-01-10 1999-03-23 Sun Microsystems, Inc. Remote procedure call system and method for RPC mechanism independent client and server interfaces interoperable with any of a plurality of remote procedure call backends
US6173332B1 (en) 1996-03-06 2001-01-09 Paul L. Hickman Method and apparatus for computing over a wide area network
US7100069B1 (en) * 1996-02-16 2006-08-29 G&H Nevada-Tek Method and apparatus for controlling a computer over a wide area network
US9094384B2 (en) * 1996-02-16 2015-07-28 Reference Ltd., Limited Liability Company TCP/IP protocol network with satellite nodes
US6075863A (en) * 1996-02-28 2000-06-13 Encanto Networks Intelligent communication device
US7080127B1 (en) * 1996-03-06 2006-07-18 Hickman Paul L Method and apparatus for computing within a wide area network
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6578044B1 (en) 1997-11-17 2003-06-10 Sun Microsystems, Inc. Method and system for typesafe attribute matching
US6438614B2 (en) 1998-02-26 2002-08-20 Sun Microsystems, Inc. Polymorphic token based control
US6598094B1 (en) 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects in a distributed system
US6182083B1 (en) 1997-11-17 2001-01-30 Sun Microsystems, Inc. Method and system for multi-entry and multi-template matching in a database
US6446070B1 (en) * 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6560656B1 (en) 1998-02-26 2003-05-06 Sun Microsystems, Inc. Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
US6247026B1 (en) 1996-10-11 2001-06-12 Sun Microsystems, Inc. Method, apparatus, and product for leasing of delegation certificates in a distributed system
US6708171B1 (en) 1996-04-23 2004-03-16 Sun Microsystems, Inc. Network proxy
US6237024B1 (en) 1998-03-20 2001-05-22 Sun Microsystem, Inc. Method and apparatus for the suspension and continuation of remote processes
US6466947B2 (en) 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6138238A (en) 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US6226746B1 (en) 1998-03-20 2001-05-01 Sun Microsystems, Inc. Stack-based system and method to combine security requirements of methods
US6272559B1 (en) * 1997-10-15 2001-08-07 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading for event notification in a distributed system
US6463446B1 (en) 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based distributed system
US6185611B1 (en) * 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US5991823A (en) * 1996-06-26 1999-11-23 Sun Microsystems, Inc. Low overhead object adaptor
US6032199A (en) * 1996-06-26 2000-02-29 Sun Microsystems, Inc. Transport independent invocation and servant interfaces that permit both typecode interpreted and compiled marshaling
US6189048B1 (en) * 1996-06-26 2001-02-13 Sun Microsystems, Inc. Mechanism for dispatching requests in a distributed object system
US6044409A (en) * 1996-06-26 2000-03-28 Sun Microsystems, Inc. Framework for marshaling and unmarshaling argument object references
US6260078B1 (en) * 1996-07-03 2001-07-10 Sun Microsystems, Inc. Using a distributed object system to find and download java-based applications
US20020032803A1 (en) * 1996-07-15 2002-03-14 Paul Marcos Method and apparatus for dynamically brokering object messages among object models
US6102965A (en) * 1996-09-23 2000-08-15 National Instruments Corporation System and method for providing client/server access to graphical programs
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
US6553428B1 (en) * 1996-11-18 2003-04-22 International Business Machines Corporation Distributed object instantiation of native objects in java
US6401109B1 (en) * 1996-11-18 2002-06-04 International Business Machines Corp. Virtual socket for JAVA interprocess communication
US6710786B1 (en) 1997-02-03 2004-03-23 Oracle International Corporation Method and apparatus for incorporating state information into a URL
US6247056B1 (en) 1997-02-03 2001-06-12 Oracle Corporation Method and apparatus for handling client request with a distributed web application server
US6845505B1 (en) 1997-02-03 2005-01-18 Oracle International Corporation Web request broker controlling multiple processes
US6225995B1 (en) 1997-10-31 2001-05-01 Oracle Corporaton Method and apparatus for incorporating state information into a URL
US6026404A (en) * 1997-02-03 2000-02-15 Oracle Corporation Method and system for executing and operation in a distributed environment
US6112183A (en) * 1997-02-11 2000-08-29 United Healthcare Corporation Method and apparatus for processing health care transactions through a common interface in a distributed computing environment
US7203769B2 (en) * 1997-03-14 2007-04-10 International Business Machines Corporation Bootstrapping technique for distributed object client systems
US6189046B1 (en) * 1997-03-27 2001-02-13 Hewlett-Packard Company Mechanism and method for merging cached location information in a distributed object environment
US6282581B1 (en) * 1997-03-27 2001-08-28 Hewlett-Packard Company Mechanism for resource allocation and for dispatching incoming calls in a distributed object environment
US5999988A (en) * 1997-03-31 1999-12-07 Sun Microsystems, Inc. Method and apparatus for generating and employing a run-time generated stub to reference an object in object oriented systems
JP3490256B2 (ja) 1997-06-12 2004-01-26 三菱電機株式会社 エージェント方式
US6374305B1 (en) * 1997-07-21 2002-04-16 Oracle Corporation Web applications interface system in a mobile-based client-server system
EP0915419A3 (de) 1997-10-06 2003-11-12 Sun Microsystems, Inc. Zugriff auf Fernobjekte
US6253256B1 (en) * 1997-10-15 2001-06-26 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading in a distributed system
US6957427B1 (en) * 1997-10-15 2005-10-18 Sun Microsystems, Inc. Remote object activation in a distributed system
US6334114B1 (en) 1997-10-31 2001-12-25 Oracle Corporation Method and apparatus for performing transactions in a stateless web environment which supports a declarative paradigm
US6516354B2 (en) 1997-12-18 2003-02-04 Sun Microsystems, Inc. Method and apparatus for efficient representation of variable length identifiers in a distributed object system
US6510460B1 (en) * 1997-12-18 2003-01-21 Sun Microsystems, Inc. Method and apparatus for enforcing locking invariants in multi-threaded systems
US6249803B1 (en) 1997-12-18 2001-06-19 Sun Microsystems, Inc. Method and apparatus for executing code during method invocation
US6405264B1 (en) 1997-12-18 2002-06-11 Sun Microsystems, Inc. Marshaling and unmarshaling framework for supporting filters in a distributed object system
US6167565A (en) * 1998-01-08 2000-12-26 Microsoft Corporation Method and system of custom marshaling of inter-language parameters
EP1058883A2 (de) 1998-02-26 2000-12-13 Sun Microsystems, Inc. Verfahren und vorrichtung für spezifisches hashen zum identifizieren von entfernten verfahren
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
US6298391B1 (en) * 1998-03-13 2001-10-02 Microsoft Corporation Remote procedure calling with marshaling and unmarshaling of arbitrary non-conformant pointer sizes
US7028312B1 (en) * 1998-03-23 2006-04-11 Webmethods XML remote procedure call (XML-RPC)
US6195685B1 (en) * 1998-05-22 2001-02-27 International Business Machines Corporation Flexible event sharing, batching, and state consistency mechanisms for interactive applications
US6490623B1 (en) * 1998-08-24 2002-12-03 International Business Machines Corporation System, method and computer readable code for encapsulating system, language and device independent communications socket functionality in a lightweight uniform communications object model
US6631515B1 (en) 1998-09-24 2003-10-07 International Business Machines Corporation Method and apparatus to reduce code size and runtime in a Java environment
US6847987B2 (en) 1998-09-30 2005-01-25 International Business Machines Corporation System and method for extending client-server software to additional client platforms for servicing thin clients requests
US6385661B1 (en) * 1998-10-19 2002-05-07 Recursion Software, Inc. System and method for dynamic generation of remote proxies
SE521114C2 (sv) * 1998-10-20 2003-09-30 Corus Technologies Ab Anordning och förfarande för integrering av ett antal datoriserade väsentligen godtyckliga klientsystem
US6421739B1 (en) * 1999-01-30 2002-07-16 Nortel Networks Limited Fault-tolerant java virtual machine
JP2000242587A (ja) * 1999-02-24 2000-09-08 Pfu Ltd オブジェクト処理装置及びそのプログラム記憶媒体
US6901518B1 (en) 1999-04-08 2005-05-31 Sun Microsystems, Inc. Method and system for establishing trust in downloaded proxy code
US20060034275A1 (en) 2000-05-03 2006-02-16 At&T Laboratories-Cambridge Ltd. Data transfer, synchronising applications, and low latency networks
US6877163B1 (en) 1999-06-14 2005-04-05 Sun Microsystems, Inc. Method and system for dynamic proxy classes
US6845393B1 (en) 1999-06-14 2005-01-18 Sun Microsystems, Inc. Lookup discovery service in a distributed system having a plurality of lookup services each with associated characteristics and services
US6611817B1 (en) 1999-06-17 2003-08-26 International Business Machines Corporation Automated technique for code generation of datastream mappings
US6412010B1 (en) * 1999-06-18 2002-06-25 Hewlett-Packard Company Apparatus and method for implementing a network protocol that supports the transmission of a variable number of application-usable object over a network as a single network transmittable container object and the re-creation of those application-usable object therefrom
US6742015B1 (en) 1999-08-31 2004-05-25 Accenture Llp Base services patterns in a netcentric environment
US6640244B1 (en) 1999-08-31 2003-10-28 Accenture Llp Request batcher in a transaction services patterns environment
US6606660B1 (en) * 1999-08-31 2003-08-12 Accenture Llp Stream-based communication in a communication services patterns environment
US6640249B1 (en) 1999-08-31 2003-10-28 Accenture Llp Presentation services patterns in a netcentric environment
US6477580B1 (en) * 1999-08-31 2002-11-05 Accenture Llp Self-described stream in a communication services patterns environment
US7289964B1 (en) 1999-08-31 2007-10-30 Accenture Llp System and method for transaction services patterns in a netcentric environment
US6601234B1 (en) 1999-08-31 2003-07-29 Accenture Llp Attribute dictionary in a business logic services environment
US6571282B1 (en) 1999-08-31 2003-05-27 Accenture Llp Block-based communication in a communication services patterns environment
US6615253B1 (en) 1999-08-31 2003-09-02 Accenture Llp Efficient server side data retrieval for execution of client side applications
US6715145B1 (en) 1999-08-31 2004-03-30 Accenture Llp Processing pipeline in a base services pattern environment
US6549949B1 (en) 1999-08-31 2003-04-15 Accenture Llp Fixed format stream in a communication services patterns environment
US6954220B1 (en) 1999-08-31 2005-10-11 Accenture Llp User context component in environment services patterns
US6842906B1 (en) 1999-08-31 2005-01-11 Accenture Llp System and method for a refreshable proxy pool in a communication services patterns environment
US6578068B1 (en) 1999-08-31 2003-06-10 Accenture Llp Load balancer in environment services patterns
US6640238B1 (en) 1999-08-31 2003-10-28 Accenture Llp Activity component in a presentation services patterns environment
US6636242B2 (en) 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
US6601192B1 (en) 1999-08-31 2003-07-29 Accenture Llp Assertion component in environment services patterns
US6947965B2 (en) * 1999-11-30 2005-09-20 Recursion Software, Inc. System and method for communications in a distributed computing environment
US6678743B1 (en) 1999-11-30 2004-01-13 Recursion Software, Inc. Method for moving objects in a distributed computing environment
US6629128B1 (en) * 1999-11-30 2003-09-30 Recursion Software, Inc. System and method for distributed processing in a computer network
EP1122644A1 (de) * 2000-01-14 2001-08-08 Sun Microsystems, Inc. Verfahren und Vorrichtung zur dynamischen Versendung von Funktionsanrufen von einer ersten zu einer zweiten Ausführungsumgebung
EP1117033A1 (de) * 2000-01-14 2001-07-18 Sun Microsystems, Inc. Dynamische Sendefunktion
EP1117220A1 (de) 2000-01-14 2001-07-18 Sun Microsystems, Inc. Verfahren und Vorrichtung zur Protokollübersetzung
US6678700B1 (en) * 2000-04-27 2004-01-13 General Atomics System of and method for transparent management of data objects in containers across distributed heterogenous resources
US6970869B1 (en) 2000-05-09 2005-11-29 Sun Microsystems, Inc. Method and apparatus to discover services and negotiate capabilities
US6918084B1 (en) 2000-05-09 2005-07-12 Sun Microsystems, Inc. Spawning new repository spaces using information provided in advertisement schema messages
US7016966B1 (en) * 2000-05-09 2006-03-21 Sun Microsystems, Inc. Generating results gates in a distributed computing environment
US7188251B1 (en) 2000-05-09 2007-03-06 Sun Microsystems, Inc. System and method for secure message-based leasing of resources in a distributed computing environment
US7080078B1 (en) 2000-05-09 2006-07-18 Sun Microsystems, Inc. Mechanism and apparatus for URI-addressable repositories of service advertisements and other content in a distributed computing environment
US7370091B1 (en) 2000-05-09 2008-05-06 Sun Microsystems, Inc. Method and apparatus for obtaining space advertisements
US7395333B1 (en) 2000-05-09 2008-07-01 Sun Microsystems, Inc. Method and apparatus to obtain negotiated service advertisement
US6973493B1 (en) 2000-05-09 2005-12-06 Sun Microsystems, Inc. Mechanism and apparatus for security of newly spawned repository spaces in a distributed computing environment
US6862594B1 (en) 2000-05-09 2005-03-01 Sun Microsystems, Inc. Method and apparatus to discover services using flexible search criteria
US6643650B1 (en) 2000-05-09 2003-11-04 Sun Microsystems, Inc. Mechanism and apparatus for using messages to look up documents stored in spaces in a distributed computing environment
US6868447B1 (en) 2000-05-09 2005-03-15 Sun Microsystems, Inc. Mechanism and apparatus for returning results of services in a distributed computing environment
US7577834B1 (en) 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
US8001232B1 (en) 2000-05-09 2011-08-16 Oracle America, Inc. Event message endpoints in a distributed computing environment
US6792466B1 (en) 2000-05-09 2004-09-14 Sun Microsystems, Inc. Trusted construction of message endpoints in a distributed computing environment
US6850979B1 (en) 2000-05-09 2005-02-01 Sun Microsystems, Inc. Message gates in a distributed computing environment
US6950875B1 (en) 2000-05-09 2005-09-27 Sun Microsystems, Inc. Message conductors in a distributed computing environment
US7065574B1 (en) 2000-05-09 2006-06-20 Sun Microsystems, Inc. Messaging system using pairs of message gates in a distributed computing environment
US6917976B1 (en) 2000-05-09 2005-07-12 Sun Microsystems, Inc. Message-based leasing of resources in a distributed computing environment
US6789077B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Mechanism and apparatus for web-based searching of URI-addressable repositories in a distributed computing environment
US6898618B1 (en) 2000-05-09 2005-05-24 Sun Microsystems, Inc. Client-specified display services in a distributed computing environment
US6789126B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Addressing message gates in a distributed computing environment
US7243356B1 (en) 2000-05-09 2007-07-10 Sun Microsystems, Inc. Remote method invocation with secure messaging in a distributed computing environment
US7072967B1 (en) 2000-05-09 2006-07-04 Sun Microsystems, Inc. Efficient construction of message endpoints
US7716492B1 (en) 2000-05-09 2010-05-11 Oracle America, Inc. Method and apparatus to obtain service capability credentials
US7200848B1 (en) 2000-05-09 2007-04-03 Sun Microsystems, Inc. Migrating processes using data representation language representations of the processes in a distributed computing environment
US7260543B1 (en) 2000-05-09 2007-08-21 Sun Microsystems, Inc. Automatic lease renewal with message gates in a distributed computing environment
US7010573B1 (en) * 2000-05-09 2006-03-07 Sun Microsystems, Inc. Message gates using a shared transport in a distributed computing environment
US8082491B1 (en) 2000-05-09 2011-12-20 Oracle America, Inc. Dynamic displays in a distributed computing environment
US8135796B1 (en) 2000-05-09 2012-03-13 Oracle America, Inc. Mechanism and apparatus for accessing and addressing services in a distributed computing environment
US6854115B1 (en) 2000-06-02 2005-02-08 Sun Microsystems, Inc. Process persistence in a virtual machine
US6941410B1 (en) 2000-06-02 2005-09-06 Sun Microsystems, Inc. Virtual heap for a virtual machine
US6760815B1 (en) 2000-06-02 2004-07-06 Sun Microsystems, Inc. Caching mechanism for a virtual heap
US6957237B1 (en) 2000-06-02 2005-10-18 Sun Microsystems, Inc. Database store for a virtual heap
US6865657B1 (en) 2000-06-02 2005-03-08 Sun Microsystems, Inc. Garbage collector for a virtual heap
US6763440B1 (en) 2000-06-02 2004-07-13 Sun Microsystems, Inc. Garbage collection using nursery regions for new objects in a virtual heap
US20030005407A1 (en) * 2000-06-23 2003-01-02 Hines Kenneth J. System and method for coordination-centric design of software systems
FR2810755B1 (fr) * 2000-06-27 2003-01-17 Cit Alcatel Procede de gestion d'informations en java
US6769123B1 (en) * 2000-09-07 2004-07-27 Cisco Technology, Inc. Method and apparatus of using a single computer program source code base to provide a program that is operable in either a client-server mode or a standalone mode
US7543304B2 (en) * 2000-12-14 2009-06-02 Borland Software Corporation Method for efficient location of corba objects based on an unmarshaled object key in a request
US7082116B2 (en) * 2000-12-28 2006-07-25 Nortel Networks Limited Methods and systems implementing mobility support in a packet-based wireless access network
US7296275B2 (en) 2001-01-04 2007-11-13 Sun Microsystems, Inc. Method and system for passing objects in a distributed system using serialization contexts
US20020178141A1 (en) * 2001-05-25 2002-11-28 Kushnirskiy Igor Davidovich Method and apparatus for remote inter-language method calling
US7660887B2 (en) * 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
US20030051029A1 (en) * 2001-09-07 2003-03-13 Reedy Dennis G. Dynamic provisioning of sevice components in a distributed system
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US20030144970A1 (en) * 2001-12-10 2003-07-31 Coyne Patrick J. Project management database and method of managing project related information
US8935297B2 (en) * 2001-12-10 2015-01-13 Patrick J. Coyne Method and system for the management of professional services project information
US7464384B2 (en) * 2002-03-14 2008-12-09 International Business Machines Corporation Method for inter-object communication
US20040006653A1 (en) * 2002-06-27 2004-01-08 Yury Kamen Method and system for wrapping existing web-based applications producing web services
US7151830B2 (en) * 2002-12-24 2006-12-19 International Business Machines Corporation Method, system, program product and state machine representation for encrypting and decrypting a message
US7523169B1 (en) 2003-02-28 2009-04-21 Verizon Data Services Llc Method and system for mapping network data for network database access
US7331049B1 (en) 2003-04-21 2008-02-12 Borland Software Corporation System and methodology providing typed event and notification services
JP2005038076A (ja) * 2003-07-17 2005-02-10 Fujitsu Ltd プログラムテスト用会話型スタブ装置およびスタブプログラム記憶媒体
US7260216B2 (en) * 2003-08-20 2007-08-21 International Business Machines Corporation State machine representation for encrypting and decrypting a set of data values and method for protecting the same
WO2005038650A1 (en) * 2003-10-14 2005-04-28 Live Media Pty Ltd A computep, system and methods therefor
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
US7810077B2 (en) * 2005-04-18 2010-10-05 Oracle America Inc. Reifying generic types while maintaining migration compatibility
US7533388B1 (en) * 2005-04-28 2009-05-12 Sun Microsystems, Inc. Method and apparatus for dynamic Stubs and Ties in RMI-IIOP
US7735070B2 (en) * 2005-06-30 2010-06-08 Oracle America, Inc. Allowing non-generified methods to override generified methods
US20070299863A1 (en) * 2006-04-27 2007-12-27 Qualcomm Incorporated Portable object serialization
US20080201481A1 (en) * 2007-02-20 2008-08-21 Microsoft Corporation Remote interface marshalling
US8239877B2 (en) * 2007-08-28 2012-08-07 International Business Machines Corporation Pre-population of meta data cache for resolution of data marshaling issues
US20090100439A1 (en) * 2007-10-12 2009-04-16 Mcneil Donald H Information engine
US20100269104A1 (en) * 2009-04-16 2010-10-21 International Business Machines Corporation System and Methods for Generic Data Marshalling without Object Modification
US8589867B2 (en) 2010-06-18 2013-11-19 Microsoft Corporation Compiler-generated invocation stubs for data parallel programming model
US20110314256A1 (en) * 2010-06-18 2011-12-22 Microsoft Corporation Data Parallel Programming Model
US9069804B2 (en) * 2010-07-07 2015-06-30 Fujitsu Limited System and a method for generating database model for analysis of applications
US8584105B1 (en) * 2011-12-12 2013-11-12 Google Inc. Javascript application programming interfaces for independently compiled javascript binaries
US9176712B2 (en) * 2013-03-14 2015-11-03 Oracle International Corporation Node Grouped Data Marshalling
US9830135B2 (en) * 2014-01-29 2017-11-28 Dell Products L.P. Declarative and pluggable business logic for systems management

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5280610A (en) * 1990-08-14 1994-01-18 Digital Equipment Corporation Methods and apparatus for implementing data bases to provide object-oriented invocation of applications
US5327529A (en) * 1990-09-24 1994-07-05 Geoworks Process of designing user's interfaces for application programs
DE69126857T2 (de) * 1991-01-18 1998-01-08 Ibm Objektorientierte Programmierungsplattform
DE69228621T2 (de) * 1991-02-25 1999-07-22 Hewlett-Packard Co., Palo Alto, Calif. Objektorientiertes verteiltes Rechnersystem
JP3489123B2 (ja) * 1992-04-15 2004-01-19 株式会社日立製作所 アプリケーション結合方法
US5526491A (en) * 1992-09-22 1996-06-11 International Business Machines Corporation System and method for calling selected service procedure remotely by utilizing conditional construct switch statement to determine the selected service procedure in common stub procedure
JPH09502547A (ja) * 1992-11-13 1997-03-11 マイクロソフト コーポレイション 遠隔手続き呼び出しのためのインターフェイスポインタをマーシャリングする方法及びシステム
DE69327448T2 (de) * 1992-12-21 2004-03-04 Sun Microsystems, Inc., Mountain View Verfahren und Vorrichtung für Teilaufgaben in verteiltem Verarbeitungssystem
US5377350A (en) * 1993-04-30 1994-12-27 International Business Machines Corporation System for cooperative communication between local object managers to provide verification for the performance of remote calls by object messages
EP0643349B1 (de) * 1993-09-10 2000-10-18 Sun Microsystems, Inc. Kundenseitiger Stubinterpretor
US5404523A (en) * 1993-11-10 1995-04-04 Digital Equipment Corporation Method of managing requests in a transaction processing system
US5548723A (en) * 1993-12-17 1996-08-20 Taligent, Inc. Object-oriented network protocol configuration system utilizing a dynamically configurable protocol stack

Also Published As

Publication number Publication date
US5737607A (en) 1998-04-07
JPH09231076A (ja) 1997-09-05
DE69615978D1 (de) 2001-11-22
EP0766172A1 (de) 1997-04-02
EP0766172B1 (de) 2001-10-17

Similar Documents

Publication Publication Date Title
DE69615978T2 (de) Verfahren und Vorrichtung zum Verpackung und Entpackung von Daten in objectreferenzspezifischen Datenformaten anhand generischen Stubs
DE69331440T2 (de) Verfahren und system zur durchführung von fernprozeduranrufen in einem verteilten rechnersystem.
DE69622144T2 (de) Allgemeines Fernprozeduraufrufsystem und allgemeines Fernprozeduraufrufverfahren
DE69719620T2 (de) Vorrichtung und Verfahren zur Bestimmung von Server-Cluster-Topologien
DE69309485T2 (de) Verfahren zur verteilung von schnittstellenzeigern fur fernprozeduranrufe
DE69617509T2 (de) Vorrichtung und Verfahren zur Feststellung von Objekttypen in einem verteilten Objektsystem
DE69329577T2 (de) Verfahren und system für implementierung-unabhängige schnittstellenspezifikation
DE60126016T2 (de) Serverseitige Kontrollobjekte zur Verarbeitung von kundenseitigen Benutzerschnittstellenelementen
DE69429686T2 (de) Transaktionsverwaltung in objektorientiertem System
DE69327448T2 (de) Verfahren und Vorrichtung für Teilaufgaben in verteiltem Verarbeitungssystem
DE69425318T2 (de) Verfahren und System für Fernausführung von Codes
DE69832354T2 (de) Netzwerkverwaltungsrahmenwerk
DE69129479T2 (de) Verteiltes Rechnersystem
DE69820566T2 (de) Verfahren, Vorrichtung, und Programmprodukt zum Zugriff auf einen Server-basierten Verwaltungsinformationsdienst
DE69630480T2 (de) Verfahren, Vorrichtung und Datenstrukturen zur Objektverwaltung
DE60115240T2 (de) Automatisierte werkzeugverwaltung in einer umgebung mit mehreren protokollen
DE69727933T2 (de) Verfahren und gerät zum beschreiben einer definierten schnittstelle, einer operation und eines datentyps in einer schnittstellendefinitionssprache
DE69730690T2 (de) Verfahren und apparat zum dynamischen austausch von objekt-nachrichten zwischen objekt-modellen
DE69032191T2 (de) Anordnung und Verfahren zur Realisierung von Hochleistungskommunikation zwischen Softwareprozessen
DE69801816T2 (de) Vorrichtung und verfahren zur aktualisierung und zur synchronisierung von informationen zwischen einem klient und einem server
DE69921474T2 (de) Methode-referenzierung in objektbasierter programmierung
DE69734175T2 (de) Transportunabhängige Anruf- und Dienstschnittstellen, die die Marshalling von integrierten Type-Codes sowie kompilierten Code erlauben
DE60031370T2 (de) Tokenbasierte verknüpfung
DE69406013T2 (de) Objektorientiertes netz-protokoll-konfigurationssystem
DE69628965T2 (de) Verfahren und Gerät zum Verwalten von Beziehungen zwischen Objekten in einer verteilten Objektumgebung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee