SQL Anywhere 10でSOAP/DISH Webサービスを作成する
データをデータベースに格納するのには、効率やセキュリティなど、いくつもの理由があります。データベースに接続してデータを取得する方法は一通りでなく、その目的ごとに特殊化された方法が必要となります。
データをWebサービスとして公開すればデータ消費側の統一性は高まりますが、セットアップに手際を求められることがあります。幸い、SQL Anywhere 10のデータベースエンジンには、要となるWebサーバーテクノロジーが組み込まれているので、データベース内にWebサービスを直接セットアップするだけで済みます。
まず、コンソールからデモデータベースを起動しましょう。使用するコマンドは、dbeng10 demo.db ‐xs http(port=8888)です。ここで、demo.dbは、実際に使うデータベースファイルの名前に置き換えてください。なお、このソリューションを現実の運用環境に展開するときは、dbeng10をdbsrv10に置き換えて他のマシンからの要求を受け付けることができるようにする必要があります。
ここで、‐xsスイッチに注目してください。ここはSQL Anywhereのマジックがよくわかる場所です。このスイッチは、データベースエンジン(dbeng10)に対して、ポート8888に結合し、HTTP要求を受け付けるよう指示しています。補助的なWebサーバーアプリケーションは必要ありません。
データベースエンジンが稼働しているので、SOAPサービスを作成できます。この作業は、SQL Anywhereのデータベース管理ツールであるSybase Centralから短時間で手際よく行うことができます。
Sybase Centralを起動した後、[Connections]メニューの[Connect with SQL Anywhere 10...]をクリックします。
入力が促されたら、ユーザー名として'dba'、パスワードとして'sql'を入力します。これらはSQL Anywhereに付属するデモデータベースにログインするための資格情報です。これらの値は、必ず実際のログイン資格情報と置き換えてください。[Database]タブをクリックして次の作業に進みます。
サーバー名のフィールドに'demo'と入力します。これは以前のステップで開始したデータベースエンジンの名前です。この値は、必ず実際のデータベースエンジンの名前と置き換えてください。入力後、[OK]をクリックします。
[Web Services]をダブルクリックし、左側にあるタスクの一覧から[Create a web service...]を選択します。
ウィザードが起動され、名前の入力が促されます。'MySOAP/MyData'と入力し、[Next]をクリックします。Webサービスの種類を指定するよう促されたら、'SOAP'を選択し、[Next]をクリックします。
ここで実際に選択できるフォーマットにはいくつか種類があります。'RAW'を選択すると、Webブラウザーでサービスをブラウズするとき未加工のテキストが出力されます。'XML'と'HTML'では、XML/HTTPリーダー用のマークアップ言語でデータがフォーマットされます。今は汎用的なサービス指向のプロバイダを作成しようとしているので、'SOAP'を選択します。本稿では、'SOAP'と共に'DISH'サービスがどう使われるかを説明します。