Download programas
Document related concepts
no text concepts found
Transcript
Programas Demostración 2Corba-Java-C++":
C++:
1) count.idl
2) client_c.cc
3) server_c.cc
Java:
: Sentencias IDL para definir la interfaz Corba. El mismo para Java y C++
: Programa cliente en C++, para recuperar objeto del repositorio de
Corba.
: Programa Servidor en C++, para colocar el objeto en el repositorio y dar
el servicio (metodo "increment")
1) count.idl
: Sentencias IDL para definir la interfaz Corba. El mismo para Java y
C++
2) CountImpl.java: Implementación de los metodos del objeto Count.
3) client_java.java: Programa cliente en Java, para recuperar objeto del repositorio de
Corba.
4) server_java.java: Programa Servidor en Java, para colocar el objeto en el
repositorio y dar el servicio (metodo "increment")
Server
Java
Server
C++
Repositorio de
Objetos
Corba ORB
Cliente
C++
count.idl:
module Counter
{
interface Count
{
attribute
long sum;
long increment();
};
};
Cliente
Java
client_c.cc:
// client_c.cc : Ciente estatico COUNT en C++
#include "count_c.hh"
#include <iostream.h>
#include <stdlib.h>
int main(int argc, char* const* argv) {
try {
// Inicializa el ORB
cout << "Inicializo el ORB " << endl ;
CORBA::ORB_ptr orb = CORBA::ORB_init(argc, argv);
// Bind al objeto Count
cout << "Bind al objeto Count " << endl ;
Counter::Count_var Counter = Counter::Count::_bind("Mi objeto");
// Inicializo valor de sum en cero
cout << "Llamando al metodo SUM " << endl ;
Counter->sum((long)0);
// Incremento 1000 veces
cout << "Llamando al metodo increment 10 veces " << endl ;
for( int i=0; i < 10; i++)
{ Counter->increment();
}
// Imprimo atributo del objeto
cout << "Aributo Suma = " << Counter->sum();
cout << endl ;
}
catch(CORBA::SystemException& excep)
{ cout << "System Exception" << endl;
cout << excep;
return(1);
}
return(0);
}
client_c.cc:
// Server_c.c : Server "count" en C++
#include "count_s.hh"
#include <math.h>
class CountImpl : public _sk_Counter::_sk_Count
{
private:
long _sum;
public:
CountImpl(const char *object_name=NULL) ;
CORBA::Long sum();
void sum(CORBA::Long val);
CORBA::Long increment();
};
// Constructor
CountImpl::CountImpl(const char *object_name):
_sk_Counter::_sk_Count(object_name)
{ cout << "Objeto Count creado " <<endl;
this->_sum = 0;
}
//Obtengo el valor del atributo Sum
CORBA::Long CountImpl::sum()
{ return this->_sum;
}
//Setea el valor del atributo sum
void CountImpl::sum(CORBA::Long val)
{ this->_sum = val ;
}
//Incrementa la suma
CORBA::Long CountImpl::increment()
{ this->_sum++;
return this->_sum;
}
int main(int argc, char* const* argv)
{ try {
// Inicializa el ORB
cout << endl ;
cout << "1.- Inicializando el ORB " << endl;
CORBA::ORB_ptr orb = CORBA::ORB_init(argc, argv);
//Incializa el BOA
cout << "2.- Inicializando el BOA " << endl;
CORBA::BOA_ptr boa = orb->BOA_init(argc, argv);
// Crea el objeto Count
cout << "3.- Creando el Objeto " << endl;
Counter::Count_ptr count= new CountImpl("Mi objeto");
// Exporta el objeto creado
cout << "4.- Exportando el Objeto " << endl;
boa->obj_is_ready(count);
// Listo para recibir requerimientos
cout << "5.- Objeto disponible para su uso" << endl;
boa->impl_is_ready();
} catch(const CORBA::Exception& e) {
cerr << e << endl;
return(1); }
return(0);
}
CountImpl.java:
// CountImpl.java: Implementacion Objeto Count
class CountImpl extends Counter._CountImplBase
{ private int sum;
//Constructor
CountImpl(String name)
{ super(name);
System.out.println("Objeto Count Creado");
sum = 0;
}
//Obtener suma
public int sum()
{ return sum;
}
//Setear suma
public void sum(int val)
{ sum = val ;
}
//Incremento
public int increment()
{ sum++;
return sum;
}
}
client_java.java:
// Client.java : Cliente estatico, visiBroker for Java
class client_java
{
public static void main(String[] args)
{ try
{
//Inicializo el ORB
System.out.println("Inicializo el ORB");
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args,null);
// Bind al objeto Count
System.out.println("Bind al objeto Count");
Counter.Count counter = Counter.CountHelper.bind(orb,"Mi objeto");
// Seteo el valor inicial en cero
System.out.println("Inicializo el valor de sum en cero");
counter.sum((int)0);
//Incremento 10 veces
System.out.println("Llamando al metodo increment 10 veces");
for( int i=0; i < 1000 ; i++)
{ counter.increment();
}
// Imprimo algo
System.out.println("atributo Suma = "+ counter.sum() );
}
catch (org.omg.CORBA.SystemException e)
{ System.err.println("System Exception");
System.err.println(e);
}
}
}
server_java.java:
//server.java: Programa principal del Server Count
class server_java
{
static public void main(String[] args)
{ try
{
//Inicializo el ORB
System.out.println("1.- Inicializo el ORB ");
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args,null);
//Inicializo el BOA
System.out.println("2.- Inicializo el BOA ");
org.omg.CORBA.BOA boa = orb.BOA_init();
// Creo el objeto Count
System.out.println("3.- creando el objeto ");
CountImpl count = new CountImpl("Mi objeto");
//Exporta al ORB el nuevo objeto
System.out.println("4.- Exporto el objeto ");
boa.obj_is_ready(count);
//Listo para dar servicios
System.out.println("5.- Objeto disponible para su uso");
boa.impl_is_ready();
}
catch (org.omg.CORBA.SystemException e)
{
System.err.println("System Exception");
System.err.println(e);
}
}
}
count.idl:
module Counter
{
interface Count
{
attribute
long sum;
long increment();
};
};
Related documents