Las operaciones CORBA pueden tener parámetros que el servidor puede modificar.
Las operaciones CORBA pueden tener parámetros in, out e inout. Los parámetros in e inout dictan el aspecto del árbol bajo el dominio DataObject cuando se va a un nodo CORBARequest. En el tipo de retorno, los parámetros inout y out dictan el aspecto del árbol cuando se deja un nodo CORBARequest.
El mensaje de entrada se encuentra en el elemento interfaceName.operationName y necesita un elemento para cada parámetro in o inout. Si la interfaz está contenida en un módulo, el nombre se califica con el nombre del módulo. Si el módulo está anidado en otros módulos, se indican todos los nombres de módulo; por ejemplo: moduleNameA.moduleNameB.interfaceName.operationName. Los parámetros out no son necesarios porque el cliente no envía ningún valor para estos parámetros. Estos elementos deben estar en el mismo orden que los parámetros del archivo IDL.
El mensaje de salida del nodo CORBARequest se encuentra en el elemento interfaceName.operationNameResponse. Si la interfaz está contenida en un módulo, el nombre se califica con el nombre del módulo. El mensaje de salida tiene un elemento para el tipo de retorno, denominado _return, y un elemento para cada parámetro inout y out.
interface exampleInterface {
string outsideModuleOperation(in string one, out string two, inout string three);
};
El mensaje de
entrada puede ser parecido al del siguiente ejemplo: <exampleInterface.outsideModuleOperation>
<one>something</one>
<three>something</three>
</exampleInterface.outsideModuleOperation>
El mensaje de
salida puede ser parecido al del siguiente ejemplo: <exampleInterface.outsideModuleOperationResponse>
<_return>something</_return>
<two>something</two>
<three>something</three>
</exampleInterface.outsideModuleOperationResponse>
El mensaje
de entrada requiere todos los parámetros in e inout, por lo que one y three
se especifican. La salida tiene estos elementos: Las excepciones se propagan al terminal de error bajo el dominio DataObject; la estructura del mensaje depende de la excepción.
exception BadRecord {
string why;
};
interface SomeInterface {
long bar(in float pi) raises (BadRecord);
};
La operación bar puede emitir
la excepción BadRecord. Si se emite esta excepción, el
siguiente mensaje se propaga al terminal de error. <BadRecord>
<why>texto del motivo</why>
</BadRecord>
interface exampleInterface {
string exampleOne();
void exampleTwo(in string one);
};
Mensaje de entrada: ç el mensaje de entrada es irrelevante, porque el nodo CORBARequest no busca el cuerpo del mensaje.
<exampleInterface.exampleOneResponse>
<_return>something</_return>
</exampleInterface.exampleOneResponse>
<exampleInterface.exampleTwo>
<one>something</one>
</exampleInterface.exampleTwo>
<exampleInterface.exampleTwoResponse>
</exampleInterface.exampleTwoResponse>