Professional Documents
Culture Documents
Este comando resulta en varios archivos de cdigo fuente de Java en el que se basa la aplicacin real. Los archivos generados son Hello.java, HelloHelper.java, HelloHolder.java, HelloOperations.java, HelloPOA.java y _HelloStub.java, Todo lo generado en un directorio con el nombre hola.
El Hello_impl clase de implementacin debe heredar de la clase generada HelloPOA. Al igual que con la implementacin en C + +, el mtodo decir_hola simplemente imprime "Hello World!" en la salida estndar. Guardar esta clase para el archivo Hello_impl.java en el directorio hola. Tambin tenemos que escribir una clase que posee principal del servidor () y ejecutar () mtodos. Llamamos a este servidor de clase, salvo que el archivo Server.java en el directorio hola:
// Java 2 package hello;
3 4 public class Server 5 { 6 public static void main(String args[]) 7 { 8 java.util.Properties props = System.getProperties(); 9 props.put("org.omg.CORBA.ORBClass", 10 11 12 13 14 15 16 17
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
orb = org.omg.CORBA.ORB.init(args, props); status = run(orb); } catch(Exception ex) { ex.printStackTrace(); status = 1; } if(orb != null) { try { orb.destroy(); } catch(Exception ex) { ex.printStackTrace(); status = 1; } } System.exit(status); }
8-11 18
Estas propiedades son necesarias para utilizar el ORB ORBacus en lugar de ORB del JDK.
El ORB se debe inicializar con ORB.init. La clase ORB reside en el paquete org.omg.CORBA. Usted debe importar este paquete, o, como se muestra en este ejemplo, debe utilizar org.omg.CORBA explcitamente.
19
Este cdigo detecta e imprime todas las excepciones CORBA planteadas por ORB.init () o Run ().
21-25
Si el ORB sido creado con xito, se destruye. Esto libera los recursos utilizados por el ORB. Si destroy () lanza una excepcin en CORBA, esta excepcin se detecta y se imprime.
27-38 41
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 }
{ String ref = orb.object_to_string(hello); String refFile = "Hello.ref"; java.io.PrintWriter out = new java.io.PrintWriter( new java.io.FileOutputStream(refFile)); out.println(ref); out.close(); } catch(java.io.IOException ex) { ex.printStackTrace(); return 1; } manager.activate(); orb.run(); return 0; }
Una referencia al POA raz se obtiene utilizando la referencia ORB y el POA raz se utiliza para obtener una referencia a su Gerente de POA.
5-10
Un siervo de tipo Hello_impl se crea y se usa para encarnar un objeto CORBA. la Objeto CORBA se libera automticamente cuando no se utiliza.
12-23 15-28
La referencia de objeto es "Stringified" y escribir en un archivo. El servidor entra en su ciclo de eventos para recibir las solicitudes entrantes.
30-31
// Java package hello; public class Client { public static void main(String args[]) { ... // Same as for the server }
static int run(org.omg.CORBA.ORB orb) { org.omg.CORBA.Object obj = null; try { String refFile = "Hello.ref"; java.io.BufferedReader in = new java.io.BufferedReader( 18 new java.io.FileReader(refFile)); 19 String ref = in.readLine(); 20 obj = orb.string_to_object(ref);
21 22 23 24 25 26 27 28 29 30 31 32 33 34 }
6-9
Este cdigo es el mismo que para el servidor. La referencia de objeto stringified se lee y se convierte en un objeto.
14-26 28
La referencia de objeto se "redujo" a una referencia a un objeto de Hola. Un simple reparto de Java no est permitido aqu, ya que es posible que el cliente tenga que pedir el servidor si el objeto es realmente de tipo Hola. La operacin decir_hola se invoca, haciendo que el servidor se imprime "Hello World!" En la salida estndar.
30
Compilacin
Asegrese de que la variable de entorno CLASSPATH incluye el directorio de trabajo actual, as como el ORBacus de clases de Java, es decir, el archivo OB.jar. Si usted est utilizando el shell Bourne shell de Unix o compatible, usted puede hacer esto con los siguientes comandos:
CLASSPATH=.:your_orbacus_directory/lib/OB.jar:$CLASSPATH export CLASSPATH
Reemplace su _orbacus_directory con el nombre del directorio donde est instalado ORBacus. Si est ejecutando ORBacus en un sistema basado en Windows, puede utilizar el siguiente comando en el intrprete de comandos de Windows:
set CLASSPATH=.;your_orbacus_directory\lib\OB.jar;%CLASSPATH%
Tenga en cuenta que en Windows se debe utilizar "," y no ":" como delimitador.
Para compilar las clases de implementacin y las clases generadas por el ORBacus traductor IDL a Java, usa javac (o el compilador Java de su eleccin):
javac hello/*.java
Ejecutar la aplicacin
El "Hello World" servidor Java se inicia con:
java hello.Server
Y el cliente con:
java hello.Client
Una vez ms, asegrese de que la variable de entorno CLASSPATH incluye el archivo OB.jar. Usted tambin puede utilizar un servidor de C + + junto con un cliente de Java (o vice versa). Esta es una de las principales ventajas de usar CORBA: si se define algo en CORBA IDL, el lenguaje de programacin utilizado para la puesta en prctica es irrelevante. Aplicaciones CORBA pueden hablar entre s, independientemente de la lengua que se escribe plugin.
resumen
En este punto , usted podra estar inclinado a pensar que este es el mtodo ms complicado de la impresin de una cadena que alguna vez te has encontrado en tu carrera como programador . A primera vista, un enfoque basado en CORBA hecho puede parecer complicado. Por otro lado , pensar en los beneficios que este tipo de enfoque tiene para ofrecer. Puede iniciar el servidor y las aplicaciones cliente en diferentes mquinas con exactamente los mismos resultados. En cuanto a la comunicacin entre el cliente y el servidor, usted no tiene que preocuparse acerca de los mtodos o protocolos especficos de la plataforma en todo, siempre hay un ORB CORBA disponibles para la plataforma y lenguaje de programacin de su eleccin. Si es posible, conseguir un poco de experiencia prctica e iniciar el servidor en una mquina, el cliente en otro1. Como se ver, las aplicaciones basadas en CORBA ejecuten indistintamente en entornos locales y de red. Un ltimo punto a tener en cuenta: es probable que no va a utilizar CORBA para desarrollar sistemas tan simples como el nuestro " Hola Mundo ! " Ejemplo . Cuanto ms compleja de las aplicaciones se vuelven (y las aplicaciones de hoy en da son complejas ) , ms se aprender a apreciar que tiene un alto nivel de abstraccin de interfaces clave de sus aplicaciones capturados en CORBA IDL .
The ORBACUS IDL-to-HTML Translator The ORBACUS IDL-to-RTF Translator The ORBACUS Interface Repository C++ Code Generator
Una alternativa es establecer estas propiedades en el programa antes de inicializar el ORB. Por ejemplo:
// Java import org.omg.CORBA.*; public static void main(String args[]) { java.util.Properties props = System.getProperties(); props.put("org.omg.CORBA.ORBClass", "com.ooc.CORBA.ORB"); props.put("org.omg.CORBA.ORBSingletonClass", "com.ooc.CORBA.ORBSingleton"); ORB orb = ORB.init(args, props); //
El ORB.init () llamada interpreta argumentos que comienzan con-ORB y OA. A diferencia de C++ versin, estos argumentos no son eliminados.