xlsvエージェント・リファレンス・マニュアル
著者: 森 洋久 / joshua@globalbase.org ※
* 目的と概要
* このマニュアルを読むために必要な知識
* 前提となるシステム用件
* xlsvのXLプロトコル機能
* xlsvのHTTPエージェント機能
* xlsv基本XL関数
* HTTPエージェント呼び出し規定(HTTPリクエスト関数)
* HTTPリクエスト関数の戻り値
* 履歴
目的と概要
xlsvは、LANDSCAPE GLOBALBASE SERVERにおける、各種のパッシブコネクションを担当するエージェントです。XLプロトコルサーバとしての機能と、HTTPを受け、リクエストをGLOBALBASEのエージェント機能に翻訳する、HTTPエージェント機能を担当します。当該マニュアルでは、これらの機能の説明とリファレンスマニュアルを提供します。
▲ページトップへ戻る
このマニュアルを読むために必要な知識
このマニュアルを読む場合には、 xlスクリプト の知識を必要とします。また、XLプロトコルに関しては、 [UNDEF REF (xl-protocol)]を参照してください。また、GLOBALBASEの座標系の検索、重ね合わせの原理について概略をわかっている必要があります。これらの技術的理解については、 GLOBALBASE技術資料 [UNDEF REF (GLOBALBASE-tech)]に書かれています。手短にGLOBALBASEの機能を理解するためには、 COSMOS GLOBALBASE VIEWER を動かしてみることをお勧めします。
▲ページトップへ戻る
前提となるシステム用件
POSIX系マシンが必要です。これに、 LANDSCAPE GLOBALBASE VIEWER をインストールすることによってxlsvの機能が利用可能となります。
▲ページトップへ戻る
xlsvのXLプロトコル機能
XLプロトコルは、TCP/IP、もしくはストリーム型のコネクション上に構築された、クライアントサーバ型のプロトコルです。クライアントからの要求、およびそれに対するサーバからの返答を、XML形式、または、LISP形式の書式でやりとりします。
ストリームの先がファイルであれば、ファイルからXML形式のコマンドを受け取ることになり、また、ストリームの先が、別のエージェントであれば、エージェント間でコマンドをやり取りすることになります。xlsvはTCP/IPコネクションによってこのストリームを確立し、異なるマシン上のプロセス間でコマンドをやり取りするためのパッシブモードサーバです。
xlsvは、立ち上げ時にあるポートをパッシブオープンします。通常LANDSCAPEサーバは、xlconf/std/agent.xl に指定されているポートをオープンします。
続いて、このポートにアクティブコネクションしてきたストリームに対し、状態を返答します。アクティブモード側のエージェントはその状態が許可 ( allow)である場合、SetAgentコマンドを使い、新しいエージェントを立ち上げます。以降、アクティブモード側のエージェントはこの新しいエージェントと通信するようになります。その様子を 表(XLプロトコルの起動)に示します。
表 XLプロトコルの起動
| アクティブ側エージェント | | xlsv | (1) | | | xlsv起動時にportをパッシブオープン | (2) | コネクションをアクティブオープン | -> | IPアドレスを認証 | (3) | 改行を送信 | -> | XLプロトコルと判断 | (4) | | <- | サーバの状態をチェックし、状態を返答。 | (5) | SetAgentにより起動エージェントを指定 | -> | ユーザ認証を行いエージェントを起動 |
(2) におけるxlsvのIPアドレス認証によってIPアドレスが不許可である場合、以下のメッセージを出し切断します。
<Permission>Denied</Permission>
また、サーバが高負荷であった場合は、
<Permission>Busy</Permission>
と返答します。認証されると、 (3) に進み、サーバ側は待ち状態に入ります。 (4) においての返答は、
<Permission>Allow</Permission>
に固定されています。 (5) における、SetAgentの動作については、 リファレンスマニュアル を参照してください。SetAgent以降のXLコマンドは、立ち上げたエージェントの機能によります。各エージェントのマニュアルを参照してください。
▲ページトップへ戻る
xlsvのHTTPエージェント機能
一方、xlsvはHTTPプロトコルを受ける機能を持っています 表(HTTPプロトコルの起動)。
表 HTTPプロトコルの起動
| アクティブ側エージェント | | xlsv | | 待機エージェント | (1) | | | xlsv起動時にportをパッシブオープン | <-> | xlsvにより待機エージェントが立ち上げられ初期化される。 | (2) | コネクションをアクティブオープン | -> | IPアドレスを認証 | | | (3) | GET,POSTなどメソッドを送信 | -> | HTTPプロトコルと判断 | | | (4) | 以降HTTP ver.1.0./1.1.に従う | | 与えられたパス名から対応するエージェントを選択 | | | (5) | | | HTTPヘッダ情報および本体情報をXLスクリプトに変換エージェントへ渡す。 | -> | | (5) | HTTPドキュメントを受ける。 | <- | 返答をHTTPの返答へ変換、必要あらばコネクション切断 | <- | 情報を処理し、xlsvへ返答を返す。 |
HTTPエージェント機能は、XLプロトコルと同じポートに対してパッシブオープンすることが出来ます。接続されてきたプロトコルが、XLかHTTPかを判断するのは、 (3) において、最初の一文字が、改行か、メソッドの最初の一文字かで判断される。判断された以降は、HTTPのプロトコルとして動作する。
HTTPエージェント機能では、xlsvの立ち上げ時 (1) に、どのURLでリクエストされたパスに様々なエージェントを割り当てるよう初期化することが出来る。そのときの関数が HttpAgent です。
その上でxlsvは受け取ったHTTPのヘッダおよび本体を、以下の一定の規則で、XLスクリプトに置き換えます。
-
HTTPヘッダのメソッドをシンボルとする。
-
HTTPリクエスト時のURLをdir属性に与える。
-
HTTPのバージョンは、http_verという属性へセットされる。
-
HTTPのリビジョンは、http_revという属性へセットされる。
-
Content-Type以下、HTTPのヘッダ情報は、その名前と同じ属性へセットされる。
-
情報本体は、全体を一つのXLT_RAWタイプデータとして引数に与える。 ( ver.B.b11以降のみ)
先に (1) において起動されている対応エージェントは、URLのパスが割り付けられている。xlsvは、対応するパスのエージェントを探します。対応するエージェントがない場合は、ブラウザ側に404エラーを返します。対応するエージェントがある場合は、上記変換されたメソッドを対応するエージェントの HTTP 環境において評価する、以下の評価式をエージェントに対して投げる。
<HTTP><method> body </method></HTTML>
従って、エージェント側は、上記HTTPのメソッドに対応した関数を環境 HTTP に用意しておく必要がある。このエージェント側にあるべき関数に関しては、 「HTTPエージェント呼び出し規定(HTTPリクエスト関数)」を参照していただきたい。エージェントはこれらのすべての関数を用意する必要は無く、この環境に用意されていないメソッドが呼ばれた場合は、503エラーとしてブラウザに返答されます。
エージェントのメソッド関数の返すデータはまた一定の書式に乗っ取っていなければなりません。基本的に、マイムコード ( text/html, image/gifなど)をシンボルとした、XLデータ形式です。詳細は、 「HTTPリクエスト関数の戻り値」を参照してください。
▲ページトップへ戻る
履歴
日時:2007-11-04
マニュアル生成。(2007-11-04版) --
日時:2006-07-25 著者:森 洋久 / 反映されたバージョン:ver.B.b11
このマニュアルを作成 --
日時:2006-08-02 著者:森 洋久 / 反映されたバージョン:ver.B.b11
文献「xl(standard)エージェント・リファレンス・マニュアル」に関連してtarget/human-requirementなどを若干修正。 --
日時:2006-08-08 著者:森 洋久 / 反映されたバージョン:ver.B.b11.02
古いマニュアルから 文献「xl(standard)エージェント・リファレンス・マニュアル」への移行作業の終了に伴いデータ型のリンク記述の変更を行った。 --
日時:2006-08-16 著者:森 洋久 / 反映されたバージョン:ver.B.b11.02
「HTTPリクエスト関数の戻り値」への参照が間違っていたところがあったので訂正。 --
日時:2006-10-16 著者:森 洋久 / 反映されたバージョン:ver.B.b13
code設定のバグによる、章立ての不具合を修正。 --
▲ページトップへ戻る
|