Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

パススルー・サービスとパススルー・オペレーションのウォークスルー

このウォークスルーでは、パススルー・サービスとパススルー・オペレーションの使用法を紹介します。

Note:

このウォークスルーでは、openweathermap.org サーバと www.webservicex.net サーバによって提供されるいくつかの無料サービスを使用します。これらのサーバのいずれもインターシステムズとは関係なく、これらのサーバを常に使用できるとは限りません。これらのサーバを使用できない場合は、各自の環境で使用可能な他の任意の REST サーバまたは SOAP サーバを代わりに使用できます。openweathermap.org サーバは無料の天気データを提供します。このサーバをアプリケーション内で使用する予定の場合は、アプリケーション ID を取得する必要があります。このサービスは無料ですが、天気サーバに関する製品サポートが有料で提供されています。このサーバの詳細は、http://openweathermap.com/ を参照してください。www.webservicex.net サーバは、Cloud Computing Technologies 社から提供されています。このサーバの詳細は、Info@WebserviceX.NET までお問い合わせください。

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

REST パススルー・サービスおよびオペレーションの使用法

この節では、REST パススルー・サービスと REST パススルー・オペレーションを追加します。このサービスは CSP ポート上でリッスンして、HTTP REST メッセージをパススルー・オペレーションに送信します。パススルー・オペレーションは、HTTP REST メッセージを api.openweathermap.org という外部サーバに送信して、この外部サーバは現在の天気情報を返します。

ネームスペースとプロダクションを選択または作成します。CSP ポートを使用するには、そのネームスペース内で Web アプリケーションを定義して、ロールを定義する必要があります。ネームスペース、ロール、および Web アプリケーションの作成手順は、“Ensemble システムの構成” を参照してください。このウォークスルーでは、Web アプリケーションに /restpassthrough (Web アプリケーション名は小文字の必要があります) という名前を付けて、Web アプリケーションの [ディスパッチ・クラス]EnsLib.REST.GenericServiceOpens in a new tab に設定します。

  1. [プロダクション構成] ページで、新しいオペレーションを追加するためのプラス記号を選択します。

    1. オペレーション・クラス EnsLib.REST.GenericOperationOpens in a new tab を指定します。

    2. オペレーションに名前を付けます (例 : WeatherRESTPassthroughOp)。

    3. まだ有効にしないでください。

    4. [OK] を選択します。

  2. 作成したパススルー・オペレーションを選択して、[設定] タブを選択します。

    1. 外部サービス・レジストリを使用している場合は、[HTTP サーバ][HTTP ポート]、および [URL] の設定を指定するレジストリ・エントリを識別するための [外部レジストリ ID] を設定し、手順 3 に進みます。それ以外の場合は、次のように、これらの設定を直接指定します。

    2. [HTTPサーバ] に「api.openweathermap.org」と入力します。

    3. [URL] フィールドに「|」と入力します。

    4. 他のフィールドはデフォルト値のままにします。

    5. [有効] チェックボックスにチェックを付けます。

    6. [適用] を選択します。

  3. 新しいサービスを追加するためのプラス記号を選択します。

    1. サービス・クラス EnsLib.REST.GenericServiceOpens in a new tab を指定します。

    2. サービスに名前を付けます (例 : WeatherRESTPassthroughServ)。

    3. まだ有効にしないでください。

    4. [OK] を選択します。

  4. 作成したパススルー・サービスを選択して、[設定] タブを選択します。

    1. [ポート] 番号が空白であることを確認します。

    2. [ターゲット構成名] フィールドで、前の手順で追加したパススルー・オペレーションを選択します。

    3. [接続設定] で、[標準リクエスト有効] チェックボックスにチェックを付けます。

    4. [追加設定] で、[プール・サイズ] を 0 に設定します。これにより、パススルー・サービスが専用ポートでリッスンしなくなります。プール・サイズを 0 に設定しない場合は、ポート番号を指定する必要があります。

    5. [有効] チェックボックスにチェックを付けます。

    6. [適用] を選択します。

  5. プロダクションを起動します。

  6. CSP ポートを使用するパススルー・サービスの URL を入力します。この URL は以下の部分で構成されます。

    例えば、次の URL を Web ブラウザに入力します。

    http://localhost:57772/restpassthrough/WeatherRESTPassthroughServ/data/2.5/weather?q=Boston,ma

    Web アプリケーション名のアルファベット文字はすべて小文字にする必要があり、パススルー・サービス名は、構成項目名の大文字小文字に一致する必要があります。

すべて正常に機能している場合は、呼び出しによって現在のロンドンの天気が含まれた JSON メッセージが返されます。以下に、返される JSON メッセージの例を示します。

{
"coord":{"lon":-0.13,"lat":51.51},
"sys":{"message":0.0441,"country":"GB","sunrise":1399609017,"sunset":1399664214},
"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03n"}],
"base":"cmc stations",
"main":{"temp":285.32,"pressure":1008,"temp_min":284.15,"temp_max":286.48,"humidity":91},
"wind":{"speed":5.14,"gust":6.17,"deg":284},
"rain":{"3h":0},
"clouds":{"all":32},
"dt":1399600508,
"id":2643743,
"name":"London",
"cod":200
}

パススルーの背景情報

パススルー・サービスへの呼び出しと外部サーバへの呼び出しの間で、URL がどのように変換されるのかに注目してください。パススルー・サービスに送信される URL は次のとおりです。

http://localhost:57772/Restpassthrough/WeatherRESTPassthroughServ/data/2.5/weather?q=Boston,ma

外部サーバに送信される URL は次のとおりです。

http://api.openweathermap.org/data/2.5/weather?q=London,uk

data で始まる URL の末尾部分はどちらも同じです。[HTTPサーバ] フィールドでは、発信呼び出しでのサーバを設定します。[URL] フィールドで | という値を指定すると、オペレーションによって受信 URL から Web アプリケーション名と構成名が除去されて、その残り部分が送信 URL に組み込まれます。

Note:

EnsLib.REST.GenericServiceOpens in a new tab クラスは、EnsLib.HTTP.GenericServiceOpens in a new tab クラスにはない追加機能を提供しません。EnsLib.HTTP.GenericServiceOpens in a new tab クラスを使用して REST 呼び出しをパススルーできますが、適切なサブクラスを使用する必要があります。

パススルーのトラブルシューティング

想定どおりの結果が得られない場合は、いくつかのトラブルシューティング手順を実行できます。

  1. Ensemble を使用せずに、openweathermap の URL を Web ブラウザに直接入力します。次の URL を Web ブラウザに入力します。

    http://api.openweathermap.org/data/2.5/weather?q=London,uk
    

    これにより、天気サーバが正常に機能していることを確認します。

  2. プロダクションの Ensemble メッセージ・トレーシングを調べます。正常なメッセージ・トレースは次のように表示されます。

    generated description: walkthrough trace

    このトレースは、エラーの場所を特定するのに役立つことがあります。

  3. TCP トレース・ユーティリティを実行します。リッスンするローカル・ポート、api.openweathermap.org というサーバ、およびポート 80 を指定します。パススルー・オペレーションの設定で、次のプロパティを設定します。

    • [HTTPサーバ] : localhost

    • [HTTPポート] : TCP トレースがリッスンしているポート

    [適用] をクリックして、パススルー・サービスの URL を Web ブラウザに入力します。

    http://localhost:57772/Restpassthrough/WeatherRESTPassthroughServ/data/2.5/weather?q=Boston,ma

    TCP トレースで、パススルー・オペレーションによって送出される HTTP 要求とサーバの応答が表示されることを確認します。

SOAP パススルー・サービスおよびオペレーションの使用法

この節では、SOAP パススルー・サービスと SOAP パススルー・オペレーションを追加します。このサービスは CSP ポート上でリッスンして、SOAP メッセージをパススルー・オペレーションに送信します。パススルー・オペレーションは、SOAP メッセージを外部サーバ www.webservicex.net に送信します。この外部サーバが提供する各種サービスのうちの 1 つである通貨換算サービスによって、2 つの指定された通貨の為替レートが返されます。SOAP パススルー・サービスを呼び出すには、SOAPUI などの SOAP ツールキットを使用する必要があります。SOAPUI ツールキットの詳細は、http://www.soapui.org/Opens in a new tab を参照してください。

ネームスペースとプロダクションを選択または作成します。CSP ポートを使用するには、そのネームスペース内で Web アプリケーションを定義して、ロールを定義する必要があります。ネームスペース、ロール、および Web アプリケーションの作成手順は、“Ensemble システムの構成” を参照してください。このウォークスルーでは、Web アプリケーションに /SOAPpassthrough という名前を付けて、Web アプリケーションの [ディスパッチ・クラス]EnsLib.SOAP.GenericServiceOpens in a new tab に設定します。

SOAP ツールキットからの外部サーバの呼び出し

パススルー・サービスとパススルー・オペレーションを作成する前に、SOAP ツールキットを使用してプロジェクトを作成して、外部サーバを直接呼び出してください。SOAP ツールキットを使用して、以下の手順を実行します。

  • 新しいプロジェクトを作成します。

  • WSDL ファイルの場所として以下を指定します。

    http://www.webservicex.net/CurrencyConvertor.asmx?WSDL
    
  • 作成したプロジェクトに対して生成された要求を選択します。ツールキットによって SOAP 1.1 と 1.2 の要求が生成される場合は、SOAP バージョン 1.2 の要求を使用します。サーバに送信される SOAP メッセージがツールキットに表示されます。例えば、SOAPUI には以下が表示されます。

    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:web="http://www.webserviceX.NET/">
      <soap:Header/>
      <soap:Body>
        <web:ConversionRate>
          <web:FromCurrency>?</web:FromCurrency>
          <web:ToCurrency>?</web:ToCurrency>
        </web:ConversionRate>
      </soap:Body>
    </soap:Envelope>
    
  • 2 つの疑問符を通貨の略称に置換します。例えば、ユーロを米ドルに換算するには、1 つ目の疑問符を EUR に置換して、2 つ目の疑問符を USD に置換します。

  • 要求を実行します。SOAPUI を使用し、緑色の矢印を選択して要求を実行します。SOAP ツールキットに、次の例のような応答 SOAP メッセージが表示されます。

    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <soap:Body>
        <ConversionRateResponse xmlns="http://www.webserviceX.NET/">
          <ConversionRateResult>1.3603</ConversionRateResult>
        </ConversionRateResponse>
      </soap:Body>
    </soap:Envelope>
    

SOAP パススルー・サービスおよびオペレーションの追加

この節では、SOAP パススルー・オペレーションと、CSP ポートを使用する SOAP パススルー・サービスを追加します。

  1. [プロダクション構成] ページに移動して、新しいオペレーションを追加するためのプラス記号を選択します。

    1. オペレーション・クラス EnsLib.SOAP.GenericOperationOpens in a new tab を指定します。

    2. オペレーションに名前を付けます (例 : ConvertCurrencySOAPCSPOp)。

    3. まだ有効にしないでください。

    4. [OK] を選択します。

  2. 作成したパススルー・オペレーションを選択して、[設定] タブを選択します。

    1. 外部サービス・レジストリを使用している場合は、[HTTP サーバ][HTTP ポート]、および [URL] の設定を指定するレジストリ・エントリを識別するための [外部レジストリ ID] を設定し、手順 3 に進みます。それ以外の場合は、次のように、これらの設定を直接指定します。

    2. [HTTPサーバ] に 「www.webservicex.net」と入力します。

    3. [URL] フィールドに「|」(縦棒) を入力します。これにより、Web アプリケーションでは必要であるが外部サービスでは必要ない余分な部分が受信 URL から除去されます。

    4. [有効] チェックボックスにチェックを付けます。

    5. [適用] を選択します。

  3. 新しいサービスを追加するためのプラス記号を選択します。

    1. オペレーション・クラス EnsLib.SOAP.GenericServiceOpens in a new tab を指定します。

    2. オペレーションに名前を付けます (例 : ConvertCurrencySOAPCSPServ)。

    3. まだ有効にしないでください。

    4. [OK] を選択します。

  4. 作成したパススルー・サービスを選択して、[設定] タブを選択します。

    1. [有効] チェックボックスにチェックを付けます。

    2. [ポート] フィールドが空白であることを確認します。

    3. [ターゲット構成名] で、前の手順で作成したパススルー・オペレーションを指定します。

    4. [接続設定] で、[標準リクエスト有効] チェックボックスにチェックを付けます。

    5. [追加設定] で、[プール・サイズ] を 0 に設定します。これにより、パススルー・サービスが専用ポートでリッスンしなくなります。

    6. [適用] を選択します。

  5. プロダクションを起動します。

  6. SOAP ツールキットで、CSP ポートを使用するパススルー・サービスの URL を入力します。この URL は以下の部分で構成されます。

    例えば、サービス名を soappassthrough、パススルー・ビジネス・サービス名を ConvertCurrencySOAPCSPServ と指定する場合、Web ブラウザに以下の URL を入力します。

    http://localhost:57772/soappassthrough/ConvertCurrencySOAPCSPServ/CurrencyConvertor.asmx

    Web アプリケーション名のアルファベット文字はすべて小文字にする必要があり、パススルー・サービス名は、構成項目名の大文字小文字に一致する必要があります。

    要求を実行します。SOAP ツールキットは、前に返したのと同じ XML メッセージを返します。

FeedbackOpens in a new tab