Verarbeitung erfolgreicher Aufrufe Wenn ein Aufruf erfolgreich ist, wird die Ergebnisnachricht an das Ausgabeterminal
weitergegeben. Die Baumstruktur enthält ein Element der höchsten Ebene mit dem Namen
'InterfaceName.OperationNameResponse'.
Unter diesem Typ befinden sich der
Rückgabetyp der Operation (named _return) und alle Ein-/Ausgabe- oder Ausgabeparameter. Eingabeparameter
werden nicht weitergegeben, weil sie unverändert bleiben.
Eine Mischung aus Eingabe-, Ein-/Ausgabe- und Ausgabeparametern)
Hier eine IDL-Beispieldatei:
interface
ExampleOne {
string exampleOneOperation(Eingabezeichenfolge inparam, Ausgabezeichenfolge outparam, Ein/Ausgabezeichenfolge inoutparam);
}
Sie empfangen die Parameter
outparam und
inoutparam unter dem Element der höchsten Ebene
ExampleOne.exampleOneOperationResponse.
Hier ein XML-Beispiel:
<ExampleOne.exampleOneOperationResponse>
<_return>Rückgabewert der Operation</_return>
<outparam>Wert von CORBA-Anwendung</outparam>
</inoutparam>Ihr von der CORBA-Anwendung geänderter Wert<inoutparam>
</ExampleOne.exampleOneOperationResponse>
Ausgabet- und Ein-/Ausgabeparameter
Hier eine IDL-Beispieldatei:
interface
ExampleTwo {
string exampleTwoOperation(Ausgabezeichenfolge outparam, Ein-/Ausgabezeichenfolge inoutparam);
}
Die Entfernung der in-Parameter hat keine Auswirkung auf die von einem
CORBARequest-Knoten weitergegebene Nachricht, weil
Eingabeparameter nicht weitergegeben werden.
Hier ein XML-Beispiel:
<ExampleTwo.exampleTwoOperationResponse>
<_return>Rückgabewert der Operation</_return>
<outparam>Wert von CORBA-Anwendung</outparam>
</inoutparam>Ihr von der CORBA-Anwendung geänderter Wert<inoutparam>
</ExampleTwo.exampleTwoOperationResponse>
Nur Eingabeparameter oder keine Parameter
Wenn die Operation keine Parameter oder nur Eingabeparameter enthält, empfangen Sie den
'_return'-Wert unter dem Element der höchsten Ebene.
Hier eine IDL-Beispieldatei:
interface
ExampleThree {
string exampleThreeOperation(Eingabezeichenfolge inparam);
}
Hier ein XML-Beispiel:
<ExampleThree.exampleThreeOperationResponse>
<_return>Rückgabewert der Operation</_return>
</ExampleThree.exampleThreeOperationResponse>
Kein Rückgabetyp (void) und keine Ein-/Ausgabe- oder Ausgabeparameter
Wenn die Operation, die Sie aufrufen, keinen Rückgabetyp (void) und keine inout- oder
out-Parameter enthält, werden von der CORBA-Anwendung keine Werte zurückgegeben, die in der
Baumstruktur abgelegt werden müssen. In diesem Fall wird nur das Element der höchsten Ebene
erstellt.
Hier eine IDL-Beispieldatei:
interface
ExampleFour {
void exampleFourOperation(Eingabezeichenfolge inparam);
}
Hier ein XML-Beispiel:
<ExampleFour.exampleFourOperationResponse>
</ExampleFour.exampleFourOperationResponse>
Verarbeitung benutzerdefinierter Ausnahmebedingungen und CORBA-Systemausnahmen Wenn eine benutzerdefinierte CORBA-Ausnahmebedingung oder eine CORBA-Systemausnahme auftritt,
wird eine Nachricht an das Fehlerterminal (Error) weitergegeben. CORBA-Systemausnahmen haben eine
Standardform und sehen wie folgt aus:
In der IDL-Datei:
exception SystemException { // Fehlerbeschreibung
unsigned long; // Weitere Fehlerdetails CompletionStatus; // yes, no, maybe }
In der Baumstruktur:
<SystemException>
<minor>10</minor>
<completed>maybe</completed>
</SystemException>
Das Element der höchsten Ebene ist der Name der
CORBA-Systemausnahme, die ausgegeben wird. Die Struktur einer benutzerdefinierten Ausnahmebedingung
basiert auf der IDL für die Ausnahmebedingung. Hier ein Beispiel:
In der IDL-Datei:
exception BadRecord {
string why;
};
In der Nachricht:
<BadRecord>
<why>Ursachenbeschreibung</why>
</BadRecord>
Dieses Beispiel zeigt, dass die Struktur der Nachricht auf einer
Ausnahmebedingung basiert und nicht von der aufgerufenen Operation bestimmt wurde.