Las aplicaciones de sincronización nativa de Java de ejemplo

Existen varios programas Java de ejemplo que puede utilizar como ayuda para escribir aplicaciones de sincronización Java para DB2 Everyplace.

Consulte el apartado Visión general de las aplicaciones de ejemplo de DB2 Everyplace para obtener más información sobre el lugar en que están ubicados los ejemplos.

El programa de ejemplo ISyncSample.java demuestra cómo codificar una aplicación Sync Client para el proveedor de sincronización nativa de DB2 Everyplace.

Los pasos principales de la aplicación de ejemplo ISyncSample.java son:

Paso 1:
Importar los paquetes de sincronización de DB2 Everyplace.
import com.ibm.mobileservices.isync.*;
import com.ibm.mobileservices.isync.event.*;

Para el proveedor de sincronización basado en JNI, importar com.ibm.mobileservices.isync.db2e.jni.*;

Para el proveedor de sincronización basado en la detección, importar com.ibm.mobileservices.isync.db2e.sti.*;

Paso 2:
Implementar el método eventIssued de la interfaz ISyncListener para la notificación de sucesos durante la sincronización.

Paso 3:
Obtener una instancia de DB2eISyncProvider

Paso 4:
Obtener del objeto de proveedor una instancia del servicio de sincronización

Paso 5:
Obtener del objeto de servicio una instancia del almacén de configuración

Paso 6:
Obtener del objeto de almacén de configuración una instancia del controlador de sincronización

Paso 7:
Registrar el objeto de escucha de la aplicación que implementa la interfaz ISyncListener para la notificación de sucesos del objeto de controlador de sincronización durante la sincronización

Paso 8:
Realizar una sincronización sobre todos los conjuntos de suscripción habilitados. Comprobar el código de retorno y el estado de excepción de la sincronización.

Paso 9:
Cerrar y liberar todos los recursos asignados por el proveedor de sincronización
// Ejemplo 1:  ISync Java - Uso de la API simple
//
 
	// Paso 1:  importar los paquetes Java de Sync Client
      //
      import com.ibm.mobileservices.isync.*;
      import com.ibm.mobileservices.isync.event.*;
      import com.ibm.mobileservices.isync.db2e.jni.*;
      
 
      // Paso 2:  implementar el método eventIssued() en
      //    la interfaz ISyncListener si está interesado en la notificación
      //    de sucesos (opcional)
      // 
      public class ISyncSample implements ISyncListener {
          
         public ISyncSample () {}
     
         public int eventIssued(ISyncEvent evt) {
 
            int evtType = evt.getEventType();
  
            switch(evtType) {
          
            // visualizar el estado del suceso
            case ISync.EVTTYPE_INFO: 
            case ISync.EVTTYPE_ERROR:
 
               System.out.println ("*********************");
               System.out.println ("SubsSet:    " + evt.getSubscriptionSetName() );
               System.out.println ("Subs:       " + evt.getSubscriptionName() );
               System.out.println ("SubsType:   " + evt.getSubscriptionType() );
               System.out.println ("Event Type: " + evtType );
               System.out.println ("Event Code: " + evt.getEventCode() );
               System.out.println ("Progress:   " + evt.getSyncProgress());
               System.out.println ("**********************\n");
 
               return ISync.RTNCB_DONE;
          
            case ISync.EVTTYPE_RETRY:
               return ISync.RTNCB_REPLY_YES;
          
            case ISync.EVTTYPE_CONFLICT:
               return ISync.RTNCB_DONE;
 
            // ignorar otros tipos de suceso
            default:
               break;
         }
      
         // dejar que el motor de sincronización emprenda la acción por omisión
         return ISync.RTNCB_DEFAULT ;
          
      }
 
      public void runSample(String host, String port, 
                            String userID, String passwrd) {
 
         ISyncProvider provider = null;
         ISyncService  service  = null;
         ISyncConfigStore config = null;
         ISyncDriver syncer = null;      
         String      path = "data";         // dir de datos bajo dir actual
         ISyncSubscriptionSet ssArr[] = null;
         int rc = 0;
      
            try {
 
            // Paso 3:  obtener una instancia de DB2eISyncProvider
            //
            provider = DB2eISyncProvider.getInstance();
 
         // Paso 4:  obtener del proveedor una instancia
         //          de servicio de sincronización
            //
/*
	For the DB2j sync client, the JDBC driver and url are required
 
 String driver = "com.ibm.db2j.jdbc.DB2jDriver";
 String jdbcUrl = jdbc:db2j:crtlDb;create=true;
*/
 
if (driver != null)
    userProps.put("target.db.driver", driver);
if (jdbcUrl != null)
    userProps.put("target.db.url", jdbcUrl);
 
            Properties userProps = new Properties();
 
 			userProps.put("isync.user", user);
 			userProps.put("isync.password", password);
 			userProps.put("isync.trace", "detailed");
 
 			service = provider.createSyncService(uri, userProps);
 
            // Paso 5:  obtener una instancia del almacén de configuración
            // 
            config = service.getConfigStore(path);
 
            // Paso 6:  obtener una instancia del controlador de
            //                                sincronización
           syncer = config.getSyncDriver(); 
    
            // Paso 7:  establecer objeto de escucha para notificación
            //          de sucesos a partir del objeto sincronizador
            //          durante la sincronización (opcional)
            syncer.setSyncListener(this);
 
            // Paso 8:  realizar sincronización en todos los conjuntos
            //          de suscripción habilitados
            //
            rc = syncer.sync();
 
            switch (rc) {
               case ISync.RTN_SUCCEEDED:
                  System.out.println("Synchronization succeeded");
                  break;
               
               case ISync.RTN_CANCELED:
                  System.out.println ("Synchronization canceled");
                  break;
               
               default:
                  System.out.println ("Synchronization failed");
                  break;
            }
 
            ssArr = config.getSubscriptionSets();
 
            for (int i=0; i < ssArr.length; i++ ) {
 
               System.out.print ("Subscription Set: " + 
                                  ssArr[i].getName() + " Status: ");
 
               switch(ssArr[i].getStatus()) {
                  
                  case ISync.STATUS_READY:
                     System.out.println("READY");
                     break;
               
                  case ISync.STATUS_COMPLETED:
                     System.out.println ("COMPLETED");
                     break;
               
                  case ISync.STATUS_CANCELED: 
                     System.out.println ("CANCELED");
                     break;
 
                  default:
                     System.out.println ("FAILED");
                     break;
               }
            }
         }
         catch (ISyncException ie) {
            System.out.println("Exception code: " + ie.getCode());
            ie.printStackTrace();
         }
          catch (Exception e) {
            e.printStackTrace();
         }      
         finally {
            // Paso 9:  cerrar y liberar todos los recursos asignados
            //
 
            try {
 
               if (syncer != null) { 
                  syncer.close();
                  syncer = null;
               }
               
               if (config != null) {
                  config.close();
                  config = null;
               }
 
               if (service != null) {
                  service.close();
                  service = null;
               }
            }
            catch(ISyncException ie2) {
 
               System.out.println("Exception code: " + ie2.getCode());
               ie2.printStackTrace();
            }
         }
      }  // end runSample()
 
      
      public static void main(String args[]) {
 
         String host     = "hostlocal";
         String port     = "8080";
         String userID   = "nurse1";
         String passwrd  = "nurse1";
      
         ISyncSample isa = new ISyncSample();
 
         if (args.length > 0) {
         if (args.length == 4)
         {
           host     = args[0];
           port     = args[1];
           userID   = args[2];
           passwrd  = args[3];
         }
	 else 
           System.out.println("Usage: java ISyncSample [host] [port] " +
                              "[userid] [password]");
      }
         isa.runSample(host, port, userID, passwrd);
 
      }  // final de principal()
 	
   }  // final de clase ISyncSample

Tareas relacionadas

Conceptos relacionados

Consulta relacionada