Bueno, ya hemos alcanzado la parte f�cil. La implementaci�n de la interfaz IDL es tan sencilla como implementar una interfaz que no fuera CORBA. Aqu� va el c�digo:
// ============================================================
// = Ejemplo de CORBA
// ============================================================
// Implementacion utilizando POA
public class CalculatorImpl extends CalculatorPOA
{
/**
* Operaci�n add
*/
public float add(float nb1, float nb2)
{
System.out.println("Suma = "+nb1+" + "+nb2);
return nb1 + nb2;
}
/**
* Operaci�n div
*/
public float div(float nb1, float nb2)
throws DivisionByZero
{
System.out.println("Division = "+nb1+" / "+nb2);
if ( nb2 == 0 )
throw new DivisionPorCero(nb1,nb2);
return nb1 / nb2;
}
}
De este implementaci�n lo �nico que hay que destacar es que el objeto CalculatorImpl hereda del objeto CalculatorPOA. Esto lo que provoca es que a CalculatorImpl se le a�ada todo el skeleton (esqueleto) utilizando herencia lo que permite que sea accedido el objeto a trav�s de CORBA. Recordemos que este esqueleto se generaba de forma autom�tica de la interfaz OMG/IDL utilizando el compilador java2idl.
Para nosotros como desarrolladores nos vale con saber que debemos de heredar de CalculatorPOA para que nuestro objeto pueda ser accedido por CORBA. Nos podemos olvidar de que existe CORBA a partir de ese momento y trabajar como si todo el sistema fuera local. De hecho, se puede tener un especialista en CORBA dentro del proyecto y que todos los demas desarrolladores no sepan que por debajo se est� utilizando CORBA.
�Ampliando el ejemplo
Si quisieramos completar la interfaz de nuestra calculadora y a�adir las operaciones de resta y multiplicaci�n ser�a muy sencillo.
- Lo primero que har�amos ser�a editar el fichero IDL Calculator.idl y a�adir dentro de las llaves de interface Calculator {..}:
float resta ( in float nb1, in float nb2 ); float mult ( in float nb1, in float nb2 );
Como ninguna de las dos levanta excepciones no hace falta utilizarlas.
- Una vez hecho esto volvemos a pasar el compilador idl2java para regenerar los cabos y esqueletos.
- Por �ltimo basta con implementar estas dos operaciones dentro de CalculatorImpl y ya podr�an ser utilizadas por cualquier cliente CORBA.
Vemos con que facilidad se pueden ampliar las interfaces IDL, y vemos que estos cambios no afectan para nada al servidor de CORBA. Y el cliente CORBA solo se ve afectado en el caso de que se elimine alguna operaci�n de la interfaz que el utilice.
Esta facilidad para ampliar las interfaces y el hecho de que los implementadores de las interfaces de IDL no tenga porque saber nada de CORBA son dos caracter�sticas fundamentales de CORBA.
�Conclusiones del desarrollo
Como conclusi�n de este desarrollo CORBA podemos destacar los siguientes puntos de la arquitectura CORBA.
- Facilidad de implementaci�n de las interfaces.
- C�digo espec�fico CORBA muy parecido siempre.
- Facilidad de ampliaci�n de funcionalidad.
- Transparencia total respecto a la distribuci�n (incluso excepciones).
- Potencial enorme: multilenguaje, multiarquitetcura, multiprotocolo.