Java ネイティブ同期アプリケーションのサンプル

DB2 Everyplace の Java 同期アプリケーションを作成するうえで役立ついくつかのサンプル Java プログラム があります。

これらサンプルが入っている場所については、DB2 Everyplace サンプル・アプリケーションの概要を参照してください。

サンプル・プログラム ISyncSample.java では、DB2 Everyplace ネイティブ同期プロバイダー用の同期クライアント・ アプリケーションのコーディング方法を示します。

ISyncSample.java サンプル・アプリケーションの主なステップは、次のとおりです。

ステップ 1:
DB2 Everyplace 同期パッケージをインポートする。

      import com.ibm.mobileservices.isync.*;
      import com.ibm.mobileservices.isync.event.*;

JNI ベース同期プロバイダーの場合は、com.ibm.mobileservices.isync.db2e.jni.*; をインポートする

トラップ・ベース同期プロバイダーの場合は、com.ibm.mobileservices.isync.db2e.sti.*; をインポートする

ステップ 2:
同期時のイベント通知用に ISyncListener インターフェースの eventIssued メソッドを インプリメントする。

ステップ 3
インスタンス DB2eISyncProvider を取得する。

ステップ 4
プロバイダー・オブジェクトから同期サービスのインスタンスを取得する。

ステップ 5
サービス・オブジェクトから構成保管のインスタンスを取得する。

ステップ 6
構成保管オブジェクトから同期ドライバーのインスタンスを取得する。

ステップ 7
同期時における同期ドライバー・オブジェクトからのイベント通知用の ISyncListener インターフェースをインプリメントするアプリケーション listener オブジェクトの登録を行う。

ステップ 8
使用可能なすべてのサブスクリプション・セットで同期化を実行する。同期の状況 の戻りコードと例外を調べる。

ステップ 9
同期プロバイダーによって割り振られたすべてのリソースをクローズして解放する。
// 例 1:  ISync Java - 単純な API の使用法
//
 
	// ステップ 1:  同期クライアント Java パッケージのインポート
      //
      import com.ibm.mobileservices.isync.*;
      import com.ibm.mobileservices.isync.event.*;
      import com.ibm.mobileservices.isync.db2e.jni.*;
      
 
      // ステップ 2:  ISyncListener インターフェースの eventIssued() メソッドのインプリメント
      //    (オプショナル:イベント通知に興味がある場合)
      // 
      public class ISyncSample implements ISyncListener {
          
         public ISyncSample () {}
     
         public int eventIssued(ISyncEvent evt) {
 
            int evtType = evt.getEventType();
  
            switch(evtType) {
          
            // display event status
            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;
 
            // ignore other event types
            default:
               break;
         }
      
         // let sync engine take default action
         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";         // a data directory under current dir
         ISyncSubscriptionSet ssArr[] = null;
         int rc = 0;
      
         try {
 
            // ステップ 3:  インスタンス DB2eISyncProvider の取得
            //
            provider = DB2eISyncProvider.getInstance();
 
         // ステップ 4:  プロバイダーからの同期サービスのインスタンスの取得
            //
/*
	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);
 
         // ステップ 5:  構成ストアのインスタンスの取得
            // 
            config = service.getConfigStore(path);
 
            // ステップ 6:  同期を実行するための同期ドライバー
            //                                のインスタンスの取得
           syncer = config.getSyncDriver();
    
            // ステップ 7:  同期時における同期ドライバー・オブジェクトからの
                   イベント通知のリスナー・オブジェクト
            //          の設定 (オプショナル)
            syncer.setSyncListener(this);
 
			// ステップ 8:  使用可能になったすべてのサブスクリプション・セットでの同期の実行
            //
            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 {
            // ステップ 9:  割り振られたすべてのリソースのクローズと解放
            //
 
            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     = "localhost";
         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);
 
      }  // end main()
 	
   }  // end ISyncSample class
 

関連したタスク

関連した概念

関連した解説