Ver Mensaje Individual
  #18 (permalink)  
Antiguo 04/05/2006, 08:01
GreenEyed
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Mensaje

Código:
        Registry theRegistry = null;
        try
        {
          System.err.println( "Locating registry...");
          theRegistry = LocateRegistry.getRegistry(RMI_PORT);
          theRegistry.list();
          System.err.println( "Registry located!");
        }
        catch (Exception e)
        {
          // If ka-boom, then try to create our own registry
          try
          {
            System.err.println( "Registry not located.");
            System.err.println( "Creating registry...");
            theRegistry = LocateRegistry.createRegistry(RMI_PORT);
            theRegistry.list();
            System.err.println( "Registry created!");
          }
          catch (Exception e2)
          {
            System.err.println( "Error creating registry:"+ e2.getMessage());
            theRegistry = null;
          }
        }
        if (theRegistry != null)
        {
          System.err.println("Binding XXX to registry...");
          theRegistry.rebind("Nombre", XXX);
          System.err.println( "XXX bound!");
        }
        else
        {
         ...// Errores
        }
Con un solido control de errores y trazas salen algo más de cuatro, jejeje, pero vamos, se entiende . Las trazas y comentarios en "lengua de Shakespeare" por que es de un framework open source que programo, supongo que con claros.

Si no tienes que comunicarte con Java, está claro que RMI no sirve. Sin embargo, yo para según que optaría antes por CORBA o Web Services. Más que nada por que en cuanto te empiezas a meter en configuraciones flexibles, seguridad, proxies HTTP para evitar firewalls, diferencias de encoding entre clientes (ISO-8859-1, UTF-8...), diferencias de tamaño de tipos (no todos los int tienen el mismo numero de bytes en todos los lenguajes, p.e.), diferencias de codificacion de bytes (little endian, big endian...) etc, pues prefiero algo que ya lo tenga solucionado para centrarme en el "meollo" de mi programa y no en las comunicaciones.

Eso sí, a veces no hay más remedio. Pero habiendo probandolo todo, no me lanzo en seguida a por los sockets a bajo nivel. Es como saber la teoría de los ficheros detrás de una BDD. Está bien saberla pero si no es imprescindible, yo prefiero usar una BDD ya hecha que montarme una yo.

Nota: El SecurityManager en RMI es imprescindible únicamente cuando vas a realizar carga dinámica de classes en Runtime, una opción muy útil pero muchas veces no utilixada en RMI. En los ejemplos casi todo el mundo pone los SecurityManager, pero la mayoría no saben por qué, o lo hacen para no tener que dar explicaciones de cuando si y cuando no ponerlo .

Un saludo