ヘッダーをスキップ

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

前 | 次 |

# 16 MAFアプリケーションで使用されるエンド・ポイントの構成

この章では、構成サービスを使用して、MAFアプリケーションで使用できるエンド・ポイントを構成する方法について説明します。

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

- 第16.1項「MAFアプリケーションで使用されるエンド・ポイントの構成の概要」

- 第16.2項「構成サービスのエンド・ポイントの定義」

- 第16.3項「構成サービスのユーザー・インタフェースの作成」

- 第16.4項「URLの構築について」

- 第16.5項「サーバー上での構成サービスの設定」

- 第16.6項「ADFモバイルからの構成サービスの移行」

## 16.1 MAFアプリケーションで使用されるエンド・ポイントの構成の概要

構成サービスは、Webサービス、ログイン・ユーティリティおよびMAFアプリケーションのその他の部分で使用されるエンド・ポイントを構成できるツールです。

## 16.2 構成サービスのエンド・ポイントの定義

エンド・ポイントURLは、`connections.xml`ファイルに定義されており、新しい接続エントリはそのファイルに追加する必要があります。この新しい接続はタイプを`HttpURLConnection`にし、その`url`値は構成サーバーのエンド・ポイントURLを指し、その`name`は最終的にJava Beanコードで参照される任意の値に設定されている必要があります。

例16-1は、`connections.xml`ファイルに構成サービスのエンド・ポイントを定義する方法を示しています。

例16-1 connections.xmlファイルでのエンド・ポイントの設定

     <RefAddresses>
          <XmlRefAddr addrType="ConfigServiceConnection">
            <Contents>
              <urlconnection name="ConfigServiceConnection" url="http://127.0.0.1"/>
            </Contents>
          </XmlRefAddr>
        </RefAddresses>
      </Reference>

    <!-- Login Server connection for secured configuration service -->
      <Reference name="ConfigServerLogin" className="oracle.adf.model.connection.adfmf.LoginConnection"
                 adfCredentialStoreKey="ConfigServerLogin" partial="false"
                 manageInOracleEnterpriseManager="true"
                 deployable="true" xmlns="">
        <Factory className="oracle.adf.model.connection.adfmf.LoginConnectionFactory"/>
        <RefAddresses>
          <XmlRefAddr addrType="adfmfLogin">
            <Contents>
              <login url="http://127.0.0.1"/>
              <logout url="http://127.0.0.1"/>
              <authenticationMode value="remote"/>
              <idleTimeout value="300"/>
              <sessionTimeout value="28800"/>
              <maxFailuresBeforeCredentialCleared value="3"/>
              <injectCookiesToRestHttpHeader value="true"/>
              <includeBasicAuthHeader value="true"/>
              <rememberCredentials>
                <enableRememberUserName value="true"/>
                <rememberUserNameDefault value="true"/>
                <enableRememberPassword value="false"/>
                <enableStayLoggedIn value="false"/>
              </rememberCredentials>
              <accessControl/>
              <userObjectFilter/>
            </Contents>
          </XmlRefAddr>
        </RefAddresses>

構成サーバーに対してセキュリティが有効である場合、`connections.xml`ファイルにはURL接続と同じエンド・ポイントURLを指すログイン接続を含める必要があります。ログイン接続と`HttpURLConnection`は、同じ`adfCredentialStoreKey`を共有する必要があります(例16-1を参照)。

多くの場合、エンド・ポイントURLはエンド・ユーザーから取得する必要があります。このユース・ケースに対処するには、エンド・ユーザーからエンド・ポイントURLの値を取得するためのユーザー・インタフェースを作成し、それをアプリケーション・プリファレンスに設定します。その後、取得した値をJava Beanメソッドで使用して、接続URL値をオーバーライドできます(例16-2を参照)。

例16-2 接続定義のオーバーライド

    AdfmfJavaUtilities.clearSecurityConfigOverrides(<ConfigService_ConnectionName>);
    AdfmfJavaUtilities.overrideConnectionProperty(<ConfigService_ConnectionName>, "urlconnection",
                                                                   "url", <ConfigService_EndpointURL>);
    AdfmfJavaUtilities.addWhiteListEntry(AdfmfJavaUtilities.getFeatureId(),
                                                                   <ConfigService_EndpointURL>, false);

    // Required if Config Service is secured and the authentication endpoints are input by the user
    AdfmfJavaUtilities.clearSecurityConfigOverrides(<ConfigService_AuthenticationConnectionName>);
    AdfmfJavaUtilities.overrideConnectionProperty(<ConfigService_AuthenticationConnectionName>,
                                                                  "login", "url", <Login_EndpointURL>);
    AdfmfJavaUtilities.overrideConnectionProperty(<ConfigService_AuthenticationConnectionName>,
                                                                "logout", "url", <Logout_EndpointURL>);
    AdfmfJavaUtilities.addWhiteListEntry(<Login_EndpointURL>, false);
    AdfmfJavaUtilities.addWhiteListEntry(<Logout_EndpointURL>, false);

    // Final step to apply the changes
    AdfmfJavaUtilities.updateApplicationInformation(false);

## 16.3 構成サービスのユーザー・インタフェースの作成

構成サービス・ユーザー・インタフェースの要件がある場合は、それを新規または既存のアプリケーション機能に作成する必要があります。

MAFでは、サーバー上での新たな変更をチェックし、更新をダウンロードできるAPIセットが`oracle.adfmf.config.client.ConfigurationService`クラス内に用意されています。これらのAPIをJava Beanで使用すると、構成サービス・アプリケーション機能を介して該当するメソッドをアクティブ化できます。

次のAPIリストとその使用例では、`_configservice`変数は`oracle.adfmf.config.client.ConfigurationService`クラスのインスタンスを表します。

- `setDeliveryMechanism`メソッドは、構成サービスの配信メカニズムを設定します。以前のリリースの構成サーバーとの通信がHTTPを介して有効であるため、`http`はこのメソッドの引数として渡されます。

      _configservice.setDeliveryMechanism("http");

  注意: このメソッド引数は構成サービスに対して使用されるWebトランスポートを表しており、HTTPまたはHTTPSと混同しないでください。エンド・ポイントがHTTPS URLである場合、トランスポートをhttpに設定することは引き続き有効です。

- `setDeliveryMechanismConfiguration`メソッドは、構成サーバー接続とエンド・ポイントURLを関連付ける追加の属性を構成サービスに対して設定します。

      _configservice.setDeliveryMechanismConfiguration("connectionName",
                                                   <ConfigService_ConnectionName>);

- `isThereAnyNewConfigurationChanges`メソッドは、サーバー上でダウンロード可能な変更があるかどうかをチェックし、ある場合は`true`を返します。

      _configservice.isThereAnyNewConfigurationChanges(<APPLICATION_ID>, <VERSION>);

- `stageAndActivateVersion`メソッドは、構成サービスによる更新のダウンロードをトリガーします。アプリケーションのバージョンが、ハードコードされた値または`Application.getApplicationVersion` APIから取得された値として、このメソッドに引数として渡されます。

      _configservice.stageAndActivateVersion("1.0");

      _configservice.stageAndActivateVersion(Application.getApplicationVersion);

- `addProgressListener`メソッドは、構成サービスに更新進捗リスナーを登録して、更新メッセージおよび進捗状況を受信します。基礎クラスは、`ProgressListener`インタフェースおよび構成サービスから呼び出される`updateProgress`メソッドを実装している必要があります。`updateProgress`メソッドは、進捗更新メッセージおよび更新完了率を受信します。

      _configservice.addProgressListener(this);

- `removeProgressListener`メソッドは、更新進捗リスナーを登録解除します。

      _configservice.removeProgressListener(this);

ConfigServiceDemoサンプル・アプリケーションは、これらのAPIを使用して構成サーバーと通信する方法を示しています。ConfigServiceDemoアプリケーションは、開発コンピュータ上の`jdev_install``/jdeveloper/jdev/extensions/oracle.maf/Samples`ディレクトリ内の`PublicSamples.zip`ファイル内にあります。

`oracle.adfmf.config.client.ConfigurationService`クラスの詳細は、Oracle Fusion Middleware Oracle Mobile Application Framework Java APIリファレンスを参照してください。

## 16.4 URLの構築について

構成サービスは、ユーザーが指定した、または`connections.xml`ファイルに指定されているエンド・ポイントURLを取得し、それを使用して`connections.xml`ファイルをダウンロードするためのURLを構築します。

たとえば、アプリケーションIDの値が`com.mycompany.appname`のアプリケーションに対して、ユーザーが次のエンド・ポイントURLを指定している場合、

`http://my.server.com:port/SomeLocation`

構成サーバーは、次のURLを構築して`connections.xml`ファイルをダウンロードします。

    http://my.server.com:port/SomeLocation/com.mycompany.appname/connections.xml

## 16.5 サーバー上での構成サービスの設定

構成サービスは、HTTP `GET`リクエストを受け入れて`connections.xml`ファイルを返すサービスとして実装できます。

構成サービス・クライアントによって使用されるURLの形式は、次のとおりです。

`url configured in /connections.xml`

構成サービスのエンド・ポイントは、HTTPおよびHTTPSを経由する基本認証(`BASIC_AUTH`)を使用して保護できます。

## 16.6 ADFモバイルからの構成サービスの移行

ADFモバイルを使用して作成したアプリケーションをMAFリリース2.0以降に移行する場合は、構成サービスを手動で移行する必要があります。

MAFリリース2.0では、構成サービスの機能を有効にする次のAPI、プロパティおよびユーティリティのサポートが解除されました。

- `use-configuration-service-at-startup`プロパティを設定して構成サービスを有効にしたり、`adfmf-configuration-service-seed-url`プロパティを使用してエンド・ポイントURLを指定するために、`adf-config.xml`ファイルを使用できなくなりました。

- 構成サービスの更新のチェック機能を提供していた`checkForUpdates` APIは非推奨になりました。

- 構成サービスは、ADFモバイルに用意されているUIから開始しました。

第16.2項「構成サービスのエンド・ポイントの定義」の説明に従って、エンド・ポイントURLを`adf-config.xml`ファイルから`connections.xml`ファイルに移動し、新しい接続要素を`connections.xml`ファイルに追加する必要があります。

このMAFリリースへの移行では、ユーザーからエンド・ポイントURLを取得するためのユーザー・インタフェースの作成や、構成サービスAPIを起動するためのバッキングBeanの追加を行います。詳細は、第16.3項「構成サービスのユーザー・インタフェースの作成」を参照してください。

ConfigServiceDemoという名前のMAFサンプル・アプリケーションは、APIを使用して構成サーバーと通信する方法を示しています。ConfigServiceDemoアプリケーションは、開発コンピュータ上の`jdev_install``/jdeveloper/jdev/extensions/oracle.maf/Samples`ディレクトリ内の`PublicSamples.zip`ファイル内にあります。