サービス・アクセス変数の動的なバインド

動的バインディングを使用して、実行時にサービスを選択するか、または変数のバインド先サービスを変更することができます。

変数を動的にバインドするには、@BindService プロパティーではなく、ServiceLib EGL ライブラリー内の関数を使用します。 このオプションは、Rich UI ハンドラーまたは関連ライブラリーから専用サービスへのアクセスには使用できません。

デプロイメント記述子ファイル内に、やや異なる 2 つのサービス実装に関する項目を作成したとします。
<webBinding interface="interfaces.SpeechTranslator" 
    name="TranslateSpanish" port="SpanishPort"/>

<webBinding interface="interfaces.SpeechTranslator" 
    name="TranslateGerman" port="GermanPort"/>
これらの項目に 1 つずつ、合計 2 つの変数を作成してバインドすることができます。あるいは、項目が共有するインターフェース・パーツに基づく変数を 1 つ作成することができます。この後、ServiceLib.bindService() システム関数を使用して、使用するサービスに変数をバインドできます。
  1. デプロイメント記述子項目内で、インターフェース・パーツまたはサービス・パーツに基づいて、変数を作成します。
    myTranslator SpeechTranslator;
  2. bindService() 関数を使用して、変数をサービス実装にバインドします。
    myTranslator = ServiceLib.bindService("TranslateSpanish");
    この場合、myTranslator 変数が、TranslateSpanish という名前の項目にバインドされます。
  3. その変数を使用して、サービスにアクセスします。
    mySpanishString string = myTranslator.translate
        ("This sentence is in Spanish");
  4. bindService() 関数をもう一度使用して、サービスを別の実装にバインドできます。
    myTranslator = ServiceLib.bindService("TranslateGerman");
  5. これで、変数を使用して、別のサービスにアクセスできるようになります。
    myGermanString string = myTranslator.translate
        ("This sentence is in German");

フィードバック