プライマリ・コンテンツに移動
Oracle® Mobile Application Framework Oracle Mobile Application Frameworkでのモバイル・アプリケーションの開発
2.3.1
E77215-01
目次へ移動
目次

前
次

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

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

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

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

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

注意:

ユニバーサルWindowsプラットフォーム上のMAFアプリケーションは、構成サービスの使用をサポートしていません。

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

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

次の例は、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"/>
          <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を共有する必要があります。

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

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

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

// 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>);

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

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

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

MAFでは、oracle.adfmf.config.client.ConfigurationServiceクラス内で一連のAPIが提供され、サーバー上の新しい変更を確認して更新内容をダウンロードできます。これらの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 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の形式は、次のとおりです。

adf-config.xml/アプリケーション・バンドルIDで構成されたURL/connections.xml

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

16.6 エンタープライズ・モバイル管理が使用するプロパティの構成

エンタープライズ・モバイル管理(EMM)ソフトウェアを使用する管理者が、アプリケーションがエンド・ユーザーにデプロイされるときにその値を構成できるプロパティをMAFアプリケーションで構成する方法について説明します。

プロパティは、アプリケーションのmaf-application.xmlファイルで<adfmf:emmAppConfig>要素を使用して構成できます(次のサンプルmaf-application.xmlファイルを参照。このサンプルでは、複数のプロパティが定義されています)。

<adfmf:emmAppConfig>
<adfmf:property name="serverURL" type="String" description=“URL to connect the backend service"/>
<adfmf:property name="port" type="Integer" description=“Port number of the backend service”/>
<adfmf:property name=“enableEncryption" type=“Boolean" description=“Turn on app level encryption”/>
<adfmf:property name=“refreshDate" type=“Date" description=“Date on which application will be refreshed”/>
</adfmf:emmAppConfig>

EMM管理者がEMMコンソールでこれらのプロパティの値を構成し、その後EMMソフトウェアがMAFアプリケーションがインストールされているデバイスにこの値をプッシュします。この機能は、AndroidおよびiOSにデプロイされたMAFアプリケーションでのみサポートされます。EMMソフトウェアで、<adfmf:emmAppConfig>要素で指定されるデータ型がサポートされていることを確認してください。前述の例では、指定されたプロパティのデータ型はStringIntegerBooleanおよびDateです。

EMMコンソールで対応するプロパティ値を構成する方法およびEMMソフトウェアでサポートされるデータ型の詳細は、EMMベンダーのドキュメントを参照してください。

#{EMMConfigProperties} EL式を使用して、MAFアプリケーションのアプリケーション・ライフサイクル内の任意の時点で、プロパティ値を読み取ることができます。たとえば、serverURLプロパティの値を読み取るには、#{EMMConfigProperties.serverURL}のようにEL式を記述します。

次を呼び出して、プロパティの変更をリスニングするプロパティ変更リスナーを登録することもできます。
EMMAppConfigScope.getInstance().addPropertyChangeListener(this);