第3回 Webサービス・クライアントを作ろう

中林 紀彦
日本アイ・ビー・エム株式会社
2003/1/28

Webサービスを使ったWebアプリケーション

 ここまでの例では、Formを使ってWebサービスのGUIクライアントを作ってきました。ここからは、Webサービスを利用するWebアプリケーションを作成してみましょう。Webアプリケーションについては第2回も参考にしてください。

アプリケーションの作成

 Webアプリケーションとして作成するには、[ファイル]−[新規作成]−[その他]の[新規作成]タブで、「Webサーバーアプリケーション」を選択します。

画面9 [新規作成]ダイアログの[新規作成]タブ

 実行形式はApache DSOモジュールを選びます。これは第2回と同じです。プロジェクトが生成されたら、[ファイル]−[すべて保存]でユニットとプロジェクトをそれぞれUnit1.pas、TempDSO.dprとして保存します。

 次に、TempDSO.dprのApacheのモジュール名を以下のように変更します。

exports
  apache_module name 'Temp_module';

 ここで変更した「Temp_module」は、後のApahceの設定で使用します。

 [プロジェクト]−[プロジェクトに追加]で、先ほど作成した「TemperatureService.pas」と「temperature.pas」をプロジェクトに追加します。さらに、Unit1.pasでこの2つのユニットが利用できるように、[ファイル]−[ユニットを使う]でこれらのユニットを追加します。

    uses temperature, TemperatureService; ←Unit1.pasの21行目

 SOAPを利用するために、HTTPRIOコンポーネントを2つ(HTTPRIO1、HTTPRIO2)ドロップし、それぞれのプロパティを以下のように設定します。

HTTPRIO1
WSDLLocation http://www.xmethods.net/sd/2001/TemperatureService.wsdl
Service TemperatureService
Port TemperaturePort

HTTPRIO2
WSDLLocation http://www.wimdows.net/webservices/temperature.asmx?WSDL
Service Temperature
Port TemperatureSoap

 次に、オブジェクトツリーで[Actions]を右クリックし、[項目の追加]を選択してアクションを追加します。オブジェクトインスペクタでWebModule1.Actions[0]のPathInfoプロパティを「/Temp」、Defaultプロパティを「True」に設定します。次にイベントのタブでOnActionをダブルクリックし、イベントを記述します。

procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  zc: String;                                       
  InterFaceObj: TemperaturePortType;                
  InterFaceObj2: TemperatureSoap;                   
begin
  zc := '94102';

  InterFaceObj := HTTPRIO1 as TemperaturePortType;  
  InterFaceObj2 := HTTPRIO2 as TemperatureSoap;     
  response.Content := '現在のサンフランシスコの気温は' + Copy(FloatToStr(InterFaceObj2.fahr2cels(InterFaceObj.getTemp(zc))), 1, 5) + '℃です。';                                              

end;

変数を追加
response.Contentでブラウザに表示するコンテンツを指定。また、Copyメソッドで表示する気温の文字数を5文字にしている

 コーディングが終わったら、[プロジェクト]−[TempDSOをコンパイル]でプロジェクトをコンパイルします。コンパイルが正常に終了すると、libTempDSO.soというApacheのDSOライブラリが作成されます。

Apacheの設定とアプリの実行

 Apacheのインストールや初期設定は済んでいるものとします。詳細に関しては第2回を参照してください。

 作成したlibWebDB2.soを/usr/local/apache/libexecへコピーします。次に、/usr/local/apache/conf/httpd.confを編集し、以下を追加します(デフォルトで205行目辺り)。

LoadModule Temp_module libexec/libTempDSO.so
<Location /Temperature>
  SetHandler libTempDSO-handler
</Location>

 httpd.confの設定が終わったら、次のコマンドでhttpd.confのテストを行います。

# /usr/local/apache/bin/apachectl configtest

 これで「Syntax OK」が返ってくれば問題ありません。次のコマンドでApacheを再起動します。

# /usr/local/apache/bin/apachectl restart

 再起動したら、Webブラウザで次のURLにアクセスしてみましょう。

http://localhost:8080/Temperature

画面10 完成したWebサービス・クライアント

 画面10のように表示されたでしょうか? Kylixを使うと、Webサービス・クライアントを簡単に作成することができます。

 次回はいよいよ最終回です。Webサービスを提供するWebサービス・プロバイダをKylixとDB2を使って作成する方法をご紹介したいと思います。


3/3

Index
Kylix 3とDB2で作るWebサービス・アプリケーション
 第3回 Webサービス・クライアントを作ろう
  Page 1
Webサービスの基本概説
  Page 2
Webサービス・クライアント作成手法
 素因数分解Webサービスを使ったシンプルなアプリ
 複数のWebサービスを組み合わせたアプリ
  Page 3
Webサービスを使ったWebアプリケーション
 アプリケーションの作成
 Apacheの設定とアプリの実行

連載 Kylix 3とDB2で作るWebサービス・アプリ


 Linux Squareフォーラム プログラミング関連記事
特集:オブジェクト指向に生まれ変わるPHP5[前編]
現在開発中のPHP5は、オブジェクト指向機能が大幅に強化される。次世代PHPはどのような言語になるのか?
特集:Windows開発者に贈る Kylixの全貌
注目の開発環境「Borland Kylix」がいよいよ見えてきた。ここに、英語版の発売を目前に控えたKylixの機能やアーキテクチャを紹介しよう
特集:Kylixプログラミング作法
GUIの構築やコンポーネントとコードの関係、 Object Pascalの仕様など。 これらの点を、実際に日本語ベータ版でプログラミングしながら分かりやすく解説
連載:PHP4で作るWeb-DBシステム(全5回)
PHPはWebサーバとデータベースを結びつけるものだ。そのためPHPでの開発を開始するには、OS、データベース、Webサーバ、そしてPHPと、多くのソフトウェアのインストールを行う必要がある
連載:ステップ・バイ・ステップ・シェルスクリプト(全7回)
Linuxの中でシェルスクリプトはネットワークの設定、デーモンの起動など重要な役割を果たしている。この連載では、シェルスクリプトで実用的なプログラムを組むことを目標にして、シェルの基本的な知識を説明する
連載:Kylix 3とDB2で作るWebサービス・アプリ(全5回)
Kylix 3とDB2 V8.1を使って、Webサービス・アプリを作ってみよう。トライアル版も用意されているので、実際に試しながら読んでほしい

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間