OpenSOAP Logo OpenSOAP Project
The Middleware as Platform for IT Application Services

メニュー

-トップ
-OpenSOAPについて
-リリース
-ドキュメント

-ダウンロード
-協力
-リンク

-FAQ
-バグ情報
-ロードマップ

-検索
-連絡先
-バグジラ

English version

Service Programming Guide

ここでは,OpenSOAPパッケージに同梱されるサンプル"Hello"を例に, OpenSOAPによる,Webサービス提供プログラム作成の概要を説明します.
ソースコード:samples/Hello/HelloService.c

共通処理

OpenSOAP APIの初期化処理と終了処理を記述します.

サービスの登録と実行

上記「個別処理」の中には,サービスの登録と実行プロセスが記述されます. サービス作成API:OpenSOAPServiceCreateMBの第3引数には,サービスの実行形態:"cgi"もしくは"stdio"を記述します. それぞれ,コンパイル後は以下のように機能します.
  • cgiタイプ:実行ファイル名をxxx.cgiとし,ApacheなどWebサーバの起動しているサーバで, cgi実行可能ディレクトリに実行ファイルを置くことで機能します. クライアントはこのcgiをエンドポイントとして指定することでサービスを利用可能です.
  • stdioタイプ:SOAPメッセージのやり取りは標準入出力を用いて行います. 主にOpenSOAPサーバと連携させて利用します.SSMLファイル(参照)でサービスとの接続形式を標準入出力として 指定することで,OpenSOAPサーバから呼び出されます. または,inetdに登録する(参照)ことで直接クライアントと通信することが可能です. inetdに登録したサービスは,OpenSOAPサーバからsocket接続形式(参照)で呼び出すことも可能です.
サービスは呼び出しメソッド名(第1SOAPボディブロックの要素名)と, 処理の内容を記述するサービス関数名の組み合わせで,OpenSOAPServiceRegister関数を用いて登録します. サービス関数にはリクエスト/レスポンスエンベロープポインタとオプション引数が渡されます. 一つのサービスポインタ:OpenSOAPServicePtrに対し,いくつのサービスが登録されてもかまいません. リクエストメッセージのメソッド名によって該当するサービス関数が呼び出されます.

リクエストメッセージの解析(サービス関数内)

リクエストおよびレスポンスエンベロープポインタが渡された上記サービス用関数において, リクエストメッセージが格納されたエンベロープポインタ(例:request)に対し,解析用関数群:OpenSOAPXXXGetXXXを用いて, メッセージのパースを行います.
階層<Envelope>には,OpenSOAPEnvelopeXXX関数群を利用し,ボディブロック<Body>にはOpenSOAPBlockXXX関数群を, それ以下の子要素についてはOpenSOAPXMLElmXXX関数群を利用することによって,メッセージの木構造を取り扱うことができます.

レスポンスメッセージの作成(サービス関数内)

サービスの処理結果を返すための,クライアントへのレスポンスメッセージを作成します.
レスポンス用エンベロープポインタにボディブロック,名前空間,子要素等を追加することで SOAPエンベロープを完成させていきます.レスポンスは自動的にクライアントへ返信されます.


Copyright (C) 2001-2004 Webmasters of www.opensoap.jp. All Rights Reserved.
ご利用の際は 免責・著作権情報をご覧ください.