パススルー・サービスとパススルー・オペレーションのウォークスルー
このウォークスルーでは、パススルー・サービスとパススルー・オペレーションの使用法を紹介します。
このウォークスルーでは、openweathermap.org サーバと www.webservicex.net サーバによって提供されるいくつかの無料サービスを使用します。これらのサーバのいずれもインターシステムズとは関係なく、これらのサーバを常に使用できるとは限りません。これらのサーバを使用できない場合は、各自の環境で使用可能な他の任意の REST サーバまたは SOAP サーバを代わりに使用できます。openweathermap.org サーバは無料の天気データを提供します。このサーバをアプリケーション内で使用する予定の場合は、アプリケーション ID を取得する必要があります。このサービスは無料ですが、天気サーバに関する製品サポートが有料で提供されています。このサーバの詳細は、http://openweathermap.com/ を参照してください。www.webservicex.net サーバは、Cloud Computing Technologies 社から提供されています。
REST パススルー・サービスおよびオペレーションの使用法
この節では、REST パススルー・サービスと REST パススルー・オペレーションを追加します。このサービスは Web ポート上でリッスンして、HTTP REST メッセージをパススルー・オペレーションに送信します。パススルー・オペレーションは、HTTP REST メッセージを api.openweathermap.org という外部サーバに送信して、この外部サーバは現在の天気情報を返します。
ネームスペースとプロダクションを選択または作成します。Web ポートを使用するには、そのネームスペース内で Web アプリケーションを定義して、ロールを定義する必要があります。ネームスペース、ロール、および Web アプリケーションの作成手順は、"InterSystems IRIS システムの構成" を参照してください。このウォークスルーでは、Web アプリケーションに /restpassthrough (Web アプリケーション名は小文字の必要があります) という名前を付けて、Web アプリケーションの [ディスパッチ・クラス] を EnsLib.REST.GenericServiceOpens in a new tab に設定します。
-
[プロダクション構成] ページで、新しいオペレーションを追加するためのプラス記号を選択します。
-
オペレーション・クラス EnsLib.REST.GenericOperationOpens in a new tab を指定します。
-
オペレーションに名前を付けます (例 : WeatherRESTPassthroughOp)。
-
まだ有効にしないでください。
-
[OK] を選択します。
-
-
作成したパススルー・オペレーションを選択して、[設定] タブを選択します。
-
外部サービス・レジストリを使用している場合は、[HTTP サーバ]、[HTTP ポート]、および [URL] の設定を指定するレジストリ・エントリを識別するための [外部レジストリ ID] を設定し、手順 3 に進みます。それ以外の場合は、次のように、これらの設定を直接指定します。
-
[HTTPサーバ] に「api.openweathermap.org」と入力します。
-
[URL] フィールドに「|」と入力します。
-
他のフィールドはデフォルト値のままにします。
-
[有効] チェック・ボックスにチェックを付けます。
-
[適用] を選択します。
-
-
新しいサービスを追加するためのプラス記号を選択します。
-
サービス・クラス EnsLib.REST.GenericServiceOpens in a new tab を指定します。
-
サービスに名前を付けます (例 : WeatherRESTPassthroughServ)。
-
まだ有効にしないでください。
-
[OK] を選択します。
-
-
作成したパススルー・サービスを選択して、[設定] タブを選択します。
-
[ポート] 番号が空白であることを確認します。
-
[ターゲット構成名] フィールドで、前の手順で追加したパススルー・オペレーションを選択します。
-
[接続設定] で、[標準リクエスト有効] チェック・ボックスにチェックを付けます。
-
[追加設定] で、[プール・サイズ] を 0 に設定します。これにより、パススルー・サービスが専用ポートでリッスンしなくなります。プール・サイズを 0 に設定しない場合は、ポート番号を指定する必要があります。
-
[有効] チェック・ボックスにチェックを付けます。
-
[適用] を選択します。
-
-
プロダクションを起動します。
-
Web ポートを使用するパススルー・サービスの URL を入力します。この URL は以下の形式をとります。
-
https://<baseURL>/ — <baseURL> は、IRIS インスタンスのベース URL です。
-
指定した web-application-name/。例 : restpassthrough/。"パススルー・ビジネス・サービスへの Web アプリケーションの構成" を参照してください。
-
passthrough-service-name/ — 例 : WeatherRESTPassthroughServ/
-
外部サービスで要求される URL (data/2.5/weather?q=London&appid=asd9g87w42MyAPIKey など)。API キーを取得するには、OpenWeather アカウントに登録する必要があります。
例えば、OpenWeather から取得した API キーを含めて、次の URL を Web ブラウザに入力します。
http://<baseURL>/restpassthrough/WeatherRESTPassthroughServ/data/2.5/weather?q=London&appid=asd9g87werMyAPIKey
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 の形式は以下のとおりです。<baseURL> はインスタンスのベース URL です。
http://<baseURL>/Restpassthrough/WeatherRESTPassthroughServ/data/2.5/weather?q=London
外部サーバに送信される URL は次のとおりです。
http://api.openweathermap.org/data/2.5/weather?q=London
data で始まる URL の末尾部分はどちらも同じです。[HTTPサーバ] フィールドでは、発信呼び出しでのサーバを設定します。[URL] フィールドで | という値を指定すると、オペレーションによって受信 URL から Web アプリケーション名と構成名が除去されて、その残り部分が送信 URL に組み込まれます。
EnsLib.REST.GenericServiceOpens in a new tab クラスは、EnsLib.HTTP.GenericServiceOpens in a new tab クラスにはない追加機能を提供しません。EnsLib.HTTP.GenericServiceOpens in a new tab クラスを使用して REST 呼び出しをパススルーできますが、適切なサブクラスを使用する必要があります。
パススルーのトラブルシューティング
想定どおりの結果が得られない場合は、いくつかのトラブルシューティング手順を実行できます。
-
InterSystems IRIS を使用せずに、openweathermap の URL を Web ブラウザに直接入力します。次の URL を Web ブラウザに入力します。
http://api.openweathermap.org/data/2.5/weather?q=London,uk
これにより、天気サーバが正常に機能していることを確認します。
-
プロダクションのプロダクション・メッセージ・トレーシングを調べます。正常なメッセージ・トレースは次のように表示されます。
このトレースは、エラーの場所を特定するのに役立つことがあります。
-
TCP トレース・ユーティリティを実行します。リッスンするローカル・ポート、api.openweathermap.org というサーバ、およびポート 80 を指定します。パススルー・オペレーションの設定で、次のプロパティを設定します。
-
[HTTPサーバ] : localhost
-
[HTTPポート] : TCP トレースがリッスンしているポート
[適用] をクリックし、次のようにパススルー・サービスの URL を Web ブラウザに入力します。<baseURL> はインスタンスのベース URL です。
http://<baseURL>/Restpassthrough/WeatherRESTPassthroughServ/data/2.5/weather?q=Boston,ma
TCP トレースで、パススルー・オペレーションによって送出される HTTP 要求とサーバの応答が表示されることを確認します。
-
SOAP パススルー・サービスおよびオペレーションの使用法
この節では、SOAP パススルー・サービスと SOAP パススルー・オペレーションを追加します。このサービスは Web ポート上でリッスンして、SOAP メッセージをパススルー・オペレーションに送信します。パススルー・オペレーションは、SOAP メッセージを外部サーバ www.webservicex.net に送信します。この外部サーバが提供する各種サービスのうちの 1 つである通貨換算サービスによって、2 つの指定された通貨の為替レートが返されます。SOAP パススルー・サービスを呼び出すには、SOAPUI などの SOAP ツールキットを使用する必要があります。SOAPUI ツールキットの詳細は、http://www.soapui.org/Opens in a new tab を参照してください。
ネームスペースとプロダクションを選択または作成します。Web ポートを使用するには、そのネームスペース内で Web アプリケーションを定義して、ロールを定義する必要があります。ネームスペース、ロール、および Web アプリケーションの作成手順は、"InterSystems IRIS システムの構成" を参照してください。このウォークスルーでは、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 パススルー・オペレーションと、Web ポートを使用する SOAP パススルー・サービスを追加します。
-
[プロダクション構成] ページに移動して、新しいオペレーションを追加するためのプラス記号を選択します。
-
オペレーション・クラス EnsLib.SOAP.GenericOperationOpens in a new tab を指定します。
-
オペレーションに名前を付けます (例 : ConvertCurrencySOAPCSPOp)。
-
まだ有効にしないでください。
-
[OK] を選択します。
-
-
作成したパススルー・オペレーションを選択して、[設定] タブを選択します。
-
外部サービス・レジストリを使用している場合は、[HTTP サーバ]、[HTTP ポート]、および [URL] の設定を指定するレジストリ・エントリを識別するための [外部レジストリ ID] を設定し、手順 3 に進みます。それ以外の場合は、次のように、これらの設定を直接指定します。
-
[HTTPサーバ] に 「www.webservicex.net」と入力します。
-
[URL] フィールドに「|」(縦棒) を入力します。これにより、Web アプリケーションでは必要であるが外部サービスでは必要ない余分な部分が受信 URL から除去されます。
-
[有効] チェック・ボックスにチェックを付けます。
-
[適用] を選択します。
-
-
新しいサービスを追加するためのプラス記号を選択します。
-
オペレーション・クラス EnsLib.SOAP.GenericServiceOpens in a new tab を指定します。
-
オペレーションに名前を付けます (例 : ConvertCurrencySOAPCSPServ)。
-
まだ有効にしないでください。
-
[OK] を選択します。
-
-
作成したパススルー・サービスを選択して、[設定] タブを選択します。
-
[有効] チェック・ボックスにチェックを付けます。
-
[ポート] フィールドが空白であることを確認します。
-
[ターゲット構成名] で、前の手順で作成したパススルー・オペレーションを指定します。
-
[接続設定] で、[標準リクエスト有効] チェック・ボックスにチェックを付けます。
-
[追加設定] で、[プール・サイズ] を 0 に設定します。これにより、パススルー・サービスが専用ポートでリッスンしなくなります。
-
[適用] を選択します。
-
-
プロダクションを起動します。
-
SOAP ツールキットで、Web ポートを使用するパススルー・サービスの URL を入力します。この URL は以下の形式をとります。
-
https://<baseURL>/ — <baseURL> は、IRIS インスタンスのベース URL です。
-
指定した web-application-name/。例 : soappassthrough/。"パススルー・ビジネス・サービスへの Web アプリケーションの構成" を参照してください。
-
passthrough-service-name/ — 例 : ConvertCurrencySOAPCSPServ/
-
外部サービスで要求される URL (CurrencyConvertor.asmx など)
例えば、サービス名を soappassthrough、パススルー・ビジネス・サービス名を ConvertCurrencySOAPCSPServ と指定する場合、Web ブラウザに以下の URL を入力します。
http://<baseURL/soappassthrough/ConvertCurrencySOAPCSPServ/CurrencyConvertor.asmx
Web アプリケーション名のアルファベット文字はすべて小文字にする必要があり、パススルー・サービス名は、構成項目名の大文字小文字に一致する必要があります。
要求を実行します。SOAP ツールキットは、前に返したのと同じ XML メッセージを返します。
-