| |
1-50 Java zu abbildendem IDL, v1.3 September 2003 1 Wert Unmarshaling Wenn er einen RMI-Wert unmarshaling, muß der ORB-Strom den Wertumbau, codebase lesen (falls vorhanden) und Behälter Identifikation. Der ORB-Strom benennt Util.loadClass laden bewerteten die Kategorie und führten den Javakategoriennamen, der im RMI-Artbehälter Identifikation enthalten wurde und die codebasezeichenkette von der GIOP-kodierung des Wertes (wenn Geschenk) oder SendingContextRunTime halten Sie Kontext instand. Der ORB-Strom benennt ValueHandler.readValue den Zustand des Wertes lesen, den gegenwärtigen Stromversatz führend, ging die Kategorie durch Util.loadClass zurück Behälter Identifikation und SendingContext::RunTime des Absenders Gegenstandhinweis. Behälter Identifikation ist damit das ValueHandler erforderlich Gegenstand kann feststellen wenn die Kategorie überschritten innen strukturell identisch zur Kategorie, die durch den Absender marshal den Wert benutzt wird. Die ORB-Stromabkommen mit nulls, Umwege, Chunking und Endenumbauten. Das ValueHandler Gegenstand kann ein org.omg.CORBA.portable empfangen. IndirectionException vom ORB-Strom. Der ORB-Eingangsstrom wirft dieses Ausnahme, wenn er zu unmarshal ein Wert benannt wird, der als Umweg kodiert wird, der in ist Prozeß des Seins unmarshaled. Dieses kann auftreten, wenn der ORB-Strom benennt ValueHandler wenden Sie gegen unmarshal einen RMI-Wert ein dessen Zustand ein rekursives enthält Hinweis auf sich. Weil das erste ValueHandler.readValue Anruf hat nicht dennoch zurückgegangen ein Wert, enthält die des ORB-Umwegtabelle Stromes keine Eintragung für einen Gegenstand wenn der Stromversatz durch den Umwegumbau spezifiziert ist. Dieser Stromversatz wird innen zurückgebracht der Versatz der Ausnahme Feld. Wenn das ValueHandler Gegenstand empfängt ein IndirectionException ist er verantwortlich für das Sicherstellen, daß der korrekte Javagegenstandhinweis dem Wert zugewiesen ist Feld, das das Resultat zurückgebracht durch den ORB-Strom wenn gehalten haben würde IndirectionException war nicht aufgetreten. Die Weise, in der dieses getan wird (z.B., eifrig oder faul) wird nicht spezifiziert. Wenn der Versatz in einem IndirectionException nicht entsprechen Sie irgendwie versetzt vorher überschritten dem ValueHandler wenden Sie in a ein ValueHandler.readValue Methodenanruf, ValueHandler.readValue Methode wirft einen MARSHAL Ausnahme. Wenn die kundenspezifischen Daten RMI/IDL vom Eingangsstrom waren kodiertes Verwenden unmarshaled Stromformat 2, dann das ValueHandler Gegenstand muß benennen ValueInputStream.start_value und ValueInputStream.end_value Methoden des ORB-Stromes, der vorher und nachher die Daten spezifiziert durch Einzelteil 1d von liest Abschnitt 1,4,10, "kundenspezifisches Marshaling Format," auf Seite 1-39. Für Formatversion 2, wenn der ORB-Strom überschritt dem ValueHandler Gegenstand stützt nicht ValueInputStream Schnittstelle, dann a BAD_PARAM Ausnahme mit Standardminderjährigem Code 41 muß geworfen werden. Wenn die Formatversion durch das ValueHandler unmarshaled Gegenstand ist grösser als die maximale Version, die er stützt, dann ein MARSHAL Ausnahme mit kleinem Standardcode 7 muß geworfen werden. Wenn er Stromversion 2 verwendet, muß der ORB-Eingangsstrom einen MARSHAL werfen Ausnahme mit dem kleinen Standardcode 10 zum Signalisieren einer Unverträglichkeit zwischen die Gewohnheit Daten bezüglich der Leitung und der Lesevorgaenge vom ValueHandler wenden Sie bis ein end_value wird benannt. Dieses kann auftreten, wenn die Version eines Absenders einer Kategorie nicht schreiben Sie kundenspezifische Daten, aber die Versionsversuche des Empfängers, einen Lesevorgang durchzuführen. |  |
|
| |
|
|