ヘッダーをスキップ
Oracle® Mobile Application Framework Oracle Mobile Application Frameworkでのモバイル・アプリケーションの開発
2.1.2.0.0
E64869-01
  目次へ移動
目次

前
 
次
 

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

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

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

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

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

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

MAFに含まれる同期クライアントは、デバイスのMAFアプリケーション内に存在します。同期クライアントは、データをキャッシングおよび同期するときに特定のポリシーを採用して、リソースごとに定義された特定のポリシーを観察することで異なるリソースをキャッシュできるようにします。同期クライアントは、デフォルトの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ランタイムは、デプロイ後にこのファイルを読み取ります。


注意:

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

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

図25-1については周囲のテキストで説明しています。

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

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

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

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

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

<?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 データ同期を有効にする方法

同期クライアントは、データをキャッシングおよび同期するときに特定のポリシーを採用して、リソースごとに定義された特定のポリシーを観察することで異なるリソースをキャッシュできるようにします。データ同期を有効にするには、maf.propertiesファイルで次の行のコメントを外します。

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

注意:

同期を有効にしてアプリケーションをデプロイした後、実行時にオフにする方法はありません。

データ・ストレージ・ポリシー設定の構成の詳細は、第25.1.1項「sync-config.xmlファイルを使用したデータ・キャッシュの実装」を参照してください。

25.1.3 sync-config.xmlファイルで構成サービス・エンド・ポイントを使用する方法

sync-config.xmlBaseUri要素およびServerGroup要素のbaseUri属性は、connections.xmlで定義されたエンド・ポイントを参照できます。この機能を利用するには、次のように、URL以外の有効な接続参照を指すように値を置換します。

baseUri="<connection_reference_name_in_connections_xml>

注意:

sync-config.xml内のURLは、connections.xmlで指定されたURLと完全に同一のURLを指すエンド・ポイントでのみ置換してください。マイグレータは、connections.xmlにエンド・ポイントを自動的に作成し、アプリケーションの移行時にこれらを使用するようにsync-config.xmlを更新します。その後、sync-config.xml内の接続エンド・ポイントに対する変更は手動で行う必要があります。

エンド・ポイントが接続オーバーライドを使用して実行時に変更された場合、同期ポリシーは新規URLに対しても同じになります。詳細は、第16章「MAFアプリケーションで使用されるエンド・ポイントの構成」を参照してください。

25.1.4 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