第2回 Kylixからデータベースを操作してみよう

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

Web-DBアプリケーション(DSO)の作成

 Kylixを使ったデータベース・プログラミングのアーキテクチャについて一通り紹介しました。これを応用して、次は実際にWebアプリケーションを作成する手順について説明していきます。

プロジェクトの準備

 [ファイル]−[新規作成]−[その他]で「Webサーバーアプリケーション」を選択し、新しいプロジェクトを開始します。

 サーバの種類は「Apache DSOモジュール」とし(画面6)、Nameプロパティをここでは「WebModule1」としました。モジュールのファイル名はWebModU.pas、プロジェクトのファイル名はSample.dprとして保存します。

画面6 Apache DSOモジュールを作成する

 次に、Sample.pasにあるApacheのモジュール名を以下のように変更します。

exports
  apache_module name 'Sample_module';

 ここで変更した「Sample_module」は、後にApacheの設定で使用するものです。

コンポーネントの配置と設定

 WebModule1に[dbExpress]タブのSQLConnectionコンポーネントをドロップし、フォーム上にSQLConnectionコンポーネントを配置します。次に、コンポーネントをダブルクリックしてdbExpressの接続設定をします。ここでは、SAMPLEデータベースに接続するように設定しておきます(画面7)。

画面7 dbExpressの接続設定

 LoginPromptのプロパティは「False」とし、Connectedプロパティを「True」に変更してDB2への接続を有効にします。

画面8 プロパティを設定する「オブジェクトインスペクタ」

 今回のサンプルでは、EMPLOYEEテーブルからEMPNO、FIRSTNME、LASTNAMEを表示するだけなので、単方向データセットのSQLQueryを利用します。SQLQueryを配置したらSQLConnectionプロパティを「SQLConnection1」に設定し、SQLプロパティに「select empno, firstnme, lastname from employee」と入力します。

画面9 SQLプロパティの入力画面

 次に、[Internet]タブからSQLQueryTableProducerコンポーネントを配置してQueryプロパティを「SQLQuery1」に設定します。SQLQuery1のActiveプロパティを「True」にすると、画面10のようにカラムがSQLQueryTableProducer1に追加されます。

画面10 オブジェクトツリーにカラムが追加された

 オブジェクトツリーで[WebModule1]−[Actions]を右クリックし、[項目の追加]でアクションを追加します。次にオブジェクトインスペクタでPathInfoプロパティを「/Table」、Producerプロパティを「SQLQueryTableProducer1」に設定します。

画面11 アクションのプロパティを設定

 PathInfoには任意の値を指定でき、これがSQLQueryTableProducer1を表示する際のURLの一部になります。また、Defaultプロパティを「True」に設定して、このページがデフォルトで呼ばれるようにします。

プロジェクトのコンパイル

 [プロジェクト]−[Sampleをコンパイル]でプロジェクトをコンパイルします。コンパイルが終了すると、プロジェクトのディレクトリにlibSample.soというDSOモジュールが作成されます。

 早速動かしてみたいところですが、その前にDSOアプリケーションを動かすためのApacheの準備が必要です。

Apacheの設定とアプリケーションの実行

Apache 1.3のコンパイル

 http://www.apache.org/dist/httpd/から最新のApacheをダウンロードし、インストールします。これはほかの記事でも紹介されていますので、ここでは手順を紹介するにとどめます。

$ tar zxvf apache_1.3.27.tar.gz
$ cd apache_1.3.27/
$ ./configure --with-layout=Apache --enable-module=so --enable-rule=SHARED_CORE
$ make
# make install

apachectl、httpd.confの編集

 ApacheのhttpdからDB2にアクセスするため、/usr/local/apache/bin/apachectlにDB2の環境変数の設定を追加します。同時に、Kylixのライブラリを使うための記述を加えます。具体的には、/usr/local/apache/bin/apachectlの23行目に以下の行を追加します。

# The following three lines have been added by Kylix3.
LD_LIBRARY_PATH=/usr/local/kylix3/bin
export LD_LIBRARY_PATH

# The following three lines have been added by UDB DB2.
if [ -f /home/db2inst1/sqllib/db2profile ]; then
    . /home/db2inst1/sqllib/db2profile
fi

 次に、/usr/local/apache/conf/httpd.confを編集して以下の行を追加します(デフォルトのhttpd.confでは205行目付近)。

LoadModule Sample_module libexec/libSample.so
<Location /Sample>
  SetHandler libSample-handler
</Location>

 apachectlとhttpd.confの編集が終わったら、作成したlibWebDB2.soを/usr/local/apache/libexecへコピーします。

 最後に、httpd.confのテストを行っておきましょう。

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

 「Syntax OK」が返ってくれば問題ありません。

アプリケーションの実行

 Apacheを再起動します。

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

 次に、以下のURLにアクセスしてWebブラウザで確認します。

http://localhost:8080/Sample/Table

画面12 作成したDSOモジュールを実行したところ

 以上で、Web-DB2アプリケーションが完成しました。今回は簡単な検索アプリケーションでしたが、UPDATE、INSERT、DELETEを使ったアプリケーションも同様に作ることができます。

コラム Apache 2.0ではどうするの?
 標準状態のKylixでは、Apache 2.x用のDSOを作成できません。しかし、米国ボーランドのWebサイトでApache 2.x用のモジュールをダウンロードすることができます。これを利用すれば、Apache 2.xのDSOも作成できるようになります。

 http://www.borland.com/products/downloads/download_kylix.htmlから「FREE eToys」をダウンロードし、展開したファイルの中からApacheTwoApp.pas、ApacheTwoHTTP.pas、HTTPD2.pasの3つをプロジェクトのあるディレクトリにコピーします。さらに、Apacheのバージョンに合わせてHTTPD2.pasの234行目を修正します(デフォルトは2.0.39用になっています)。


2.0.40 :MODULE_MAGIC_NUMBER_MAJOR = 20020628;
2.0.43 :MODULE_MAGIC_NUMBER_MAJOR = 20020903;

 上記以外のバージョンについても、ソースのインクルードファイルap_mmn.hに定義されています(#define MODULE_MAGIC_NUMBER_MAJOR 20020903)。

 次に、http://www.apache.org/dist/httpd/から最新のApache 2.0をダウンロードして、展開、configure、makeを行ってインストールします。


$ tar zxvf httpd-2.0.43.tar.gz
$ cd httpd-2.0.43
$ ./configure --enable-mods-shared=all
$ make
# make install

 デフォルトでは/usr/local/apache2にインストールされるので、apachectlやhttpd.confの場所が変わることに注意しましょう。

 最後に、プロジェクトファイル(.dpr)中の「ApahceApp」を「ApacheTwoApp」に変更します。以上で、Apache 2.x用のDSOが作成できます。

3/4

Index
Kylix 3とDB2で作るWebサービス・アプリケーション
 第2回 Kylixからデータベースを操作してみよう
  Page 1
dbExpressを使ったデータベース・プログラミング
  Page 2
データ操作プログラミング手法
 単方向データセットによるデータ操作
 クライアントデータセットによるデータ操作
  Page 3
Web-DBアプリケーション(DSO)の作成
 プロジェクトの準備
 コンポーネントの配置と設定
 プロジェクトのコンパイル
Apacheの設定とアプリケーションの実行
 Apache 1.3のコンパイル
 apachectl、httpd.confの編集
 アプリケーションの実行
  Page 4
DSOアプリケーションのベンチマーク

連載 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 記事ランキング

本日 月間