ヘッダーをスキップ

Oracle® Mobile Application Framework Oracle Mobile Application Frameworkでのモバイル・アプリケーションの開発 2.1.1.0.0 E64867-01 |
| 目次

前 | 次 |

# 25 データの同期化とキャッシュ

この章では、MAFアプリケーションでデータの同期化とキャッシュを有効にする方法を説明します。

この章の内容は次のとおりです。

- 第25.1項「データ・キャッシュと同期化の概要」

- 第25.1.1項「sync-config.xmlファイルを使用したデータ・キャッシュの実装」

- 第25.1.2項「FARを使用したsync-config.xmlファイルの更新に関する必知事項」

## 25.1 データ・キャッシュと同期化の概要

データの同期化は、モバイル・アプリケーションのユーザーに優れたユーザー操作性を提供するための重要な要素です。ユーザーは、モバイル・アプリケーションがいつでも使用でき、機能することを期待します。実際には、モバイル・アプリケーションの接続の信頼性が低いことはよく知られており、ネットワーク接続を使用できなかったり、接続の確立時につながったり切れたりを繰り返し、最終的に切断されることがあります。モバイル・アプリケーションで最適なユーザー操作性を実現するため、MAFには、オフライン時でも継続して機能するアプリケーションを開発できる同期APIが用意されているので、モバイル・アプリケーションでの最適なユーザー操作性が保証されます。ネットワーク接続が使用できない場合、アプリケーションではローカルに格納されているキャッシュ・データにアクセスして、シームレスなユーザー操作を確保します。

### 25.1.1 sync-config.xmlファイルを使用したデータ・キャッシュの実装

`sync-config.xml`ファイルにより、モバイル・アプリケーションが、様々なタイプのWebサービス(SOAP、REST-XML、JSONペイロードによるREST)を介してアクセスされるサーバー側リソースから取得されたデータをSQLite埋込みデータベースにキャッシュできるようになるだけでなく、キャッシュ内のこのデータおよびサーバー側リソースも更新できるようになります。

キャッシュ機能は、アプリケーション・コード内に実装しなくても、`sync-config.xml`ファイル内のプロパティを編集することで構成可能です。アプリケーションを作成すると、デフォルト・バージョンの`sync-config.xml`ファイルが格納されます(図25-1を参照)。`sync-config.xml`ファイルには「アプリケーション・リソース」ペインのADF-META-INFノードからアクセスでき、このファイルを変更するには、JDeveloperのソース・エディタを使用します。MAFランタイムは、デプロイ後にこのファイルを読み取ります。

データ同期を有効にするには、`maf.properties`内の次の行を非コメント化します。

    # Sync functionality is disabled by default. Uncomment the line below to enable it.
    #java.commandline.argument=-DsyncEnabled=true

注意: これはアプリケーション全体のリソースですが、`sync-config.xml`ファイルを機能アーカイブ(FAR)ファイルに含めることができます。FARをMAFアプリケーションに追加する場合は、FARの`sync-config.xml`ファイルがアプリケーションの`sync-config.xml`とマージされます。詳細は、第25.1.2項「FARを使用したsync-config.xmlファイルの更新に関する必知事項」を参照してください。

図25-1 sync-config.xmlファイルの概要エディタにおけるデータ格納のポリシー設定

例25-1は、デフォルトの`sync-config.xml`ファイルを示しています。このファイル内のプロパティを使用すると、次のものに対するキャッシュ・ポリシーを構成できます。

- ほとんど変更されない静的リスト

- 頻繁に変更される大規模なコレクション(リスト全体をリフレッシュせずにデルタをフェッチします)

- 高度に動的なデータ(結果の文脈依存性が高いため、キャッシュを使用せずにリフレッシュする必要があります)

- 1対1および1対nのカーディナリティを持つ、個々のリソースおよびその直接の子のキャッシュ

例25-1 sync-config.xmlファイル

    <?xml version="1.0" encoding="UTF-8"?>
    <Settings xmlns="http://xmlns.oracle.com/sync/config">
      <BaseUri>http://127.0.0.1</BaseUri>
      <AppId/>
      <LazyPersistence/>
      <RefreshPolicy/>
      <DbStorageFolderPath/>
      <FileStorageFolderPath/>
      <Policies>
        <DefaultPolicy>
          <FetchPolicy>FETCH_FROM_SERVICE</FetchPolicy>
          <UpdatePolicy>UPDATE_IF_ONLINE</UpdatePolicy>
          <ExpirationPolicy>NEVER_EXPIRE</ExpirationPolicy>
          <EvictionPolicy>MANUAL_EVICTION</EvictionPolicy>
        </DefaultPolicy>
      </Policies>
    </Settings>

### 25.1.2 FARを使用したsync-config.xmlファイルの更新に関する必知事項

ビュー・コントローラ・プロジェクトがFARとしてデプロイされると、`sync-config.xml`ファイルは機能アーカイブ・ファイルに含まれます。`connections.xml`ファイルと同様に、FARをアプリケーションに追加すると、MAFではFAR (`jar-sync-config.xml`)内の`sync-config.xml`ファイルの内容と、使用するアプリケーションの`sync-config.xml`ファイルの内容をマージします。`sync-config.xml`ファイルは、モバイル・アプリケーションによって使用されるWebサービスのエンドポイントを記述するため、モバイル・アプリケーションを構成するアプリケーション機能によって使用されるすべてのWebサービスのエンドポイントを、FARを追加することで更新できます(第8.4項「FARのビュー・コントローラ・プロジェクトとしての追加時に行われる処理」を参照)。

FARをアプリケーションに追加すると、MAFでは、アプリケーションの`sync-config.xml`ファイルおよび`connections.xml`ファイルを確認し、必要に応じて変更するように求めるメッセージがログに記録されます。図25-2に示すように、これらのメッセージは、使用するアプリケーションの`sync-config.xml`ファイルの状態を反映します。

図25-2 メッセージ・ログ

使用するアプリケーションに`sync-config.xml`ファイルがない場合、MAFではこのファイルをアプリケーションに追加し、次のようなメッセージを書き込みます。

    oracle.adfmf.framework.dt.deploy.features.deployers.SyncConfigMerger _logNoSyncConfigInAppUsingFar
    WARNING: The application does not contain a synchronization file, "sync-config.xml". Creating one
    containing the synchronization configuration in the Feaure Archive.

`sync-config.xml`ファイルの`<ServerGroup>`要素に、使用するアプリケーションの`connections.xml`ファイルで定義された対応する`<Reference>`要素がない場合、MAFでは接続の確認(または作成)をリクエストする次のようなログ・メッセージを書き込みます。

    oracle.adfmf.framework.dt.deploy.features.deployers.SyncConfigMerger _logAddedServerGroups
    WARNING: The following server groups were added sync-config.xml by the Add to Application
    operation:
    {
      ServerGroup1 - there is no existing application connection defined for this server group.
    Please create the connection.

      ServerGroup2 - verify its configuration.
    }

使用するアプリケーションの`sync-config.xml`ファイルの`<ServerGroup>`定義が、FAR内の対応する`sync-config.xml`ファイルの定義を複製する場合、MAFでは次の`SEVERE`レベルのメッセージをログに書き込みます。

    oracle.adfmf.framework.dt.deploy.features.deployers.SyncConfigMerger _logDuplicateServerGroups
    SEVERE: Cannot merge the server groups from the Feature Archive because the following definitions
    already exist:
    ServerGroup1
    ServerGroup2