メインコンテンツまでスキップ
バージョン: 20 R6 BETA

Webサーバーオブジェクト

4Dプロジェクトは、メイン (ホスト) アプリケーションおよび、ホストされた各コンポーネントの Webサーバーを起動して監視することができます。

たとえば、メインアプリケーションに 2つのコンポーネントをインストールしている場合、アプリケーションから最大 3つの独立した Webサーバーを起動して監視することができます:

  • ホストアプリケーションの Webサーバーを1つ
  • コンポーネント#1 の Webサーバーを1つ
  • コンポーネント#2 の Webサーバーを1つ

1つの 4Dアプリケーションプロジェクトに接続できるコンポーネントの数、つまり Webサーバーの数には、メモリ以外の制限はありません。

メインアプリケーションの Webサーバーを含む、各 4D Webサーバーは、4D.WebServer クラスの オブジェクト として公開されます。 インスタンス化された Webサーバーオブジェクトは、多数のプロパティや関数 を使用して、カレントのアプリケーションまたは任意のコンポーネントから操作することができます。

4Dランゲージの従来の WEBコマンド はサポートされていますが、その対象となる Webサーバーを選択することはできません (後述参照)。

各 Webサーバー (ホストアプリケーションまたはコンポーネント) は、個別のコンテキストで使用できます。これには、以下が含まれます:

  • On Web Authentication および On Web Connection データベースメソッドの呼び出し
  • 4Dタグの処理とメソッドの呼び出し
  • Webセッションや TLSプロトコルの管理

これにより、独自の Webインターフェースを備えた独立したコンポーネントや機能を開発することができます。

Webサーバーオブジェクトのインスタンス化

ホストアプリケーション (デフォルトWebサーバー) の Webサーバーオブジェクトは、4D 起動時に自動的に読み込まれます。 したがって、新規作成したプロジェクトに次のように書いた場合:

$nbSrv:=WEB Server list.length   
//$nbSrv の値は 1

Webサーバーオブジェクトをインスタンス化するには、WEB Server コマンドを呼び出します。

	// 4D.WebServer クラスのオブジェクト変数を作成します。
var webServer : 4D.WebServer
// カレントコンテキストから Webサーバーを呼び出します
webServer:=WEB Server

// 以下と同じです
webServer:=WEB Server(Web server database)

アプリケーションがコンポーネントを使用している場合に:

  • コンポーネントからホストアプリケーションの Webサーバーを呼び出す場合や
  • リクエストを受け取ったサーバー (どのサーバーでも) を呼び出す場合

次を使うこともできます:

var webServer : 4D.WebServer 
// コンポーネントからホストの Webサーバーを呼び出す
webServer:=WEB Server(Web server host database)
// ターゲットの Webサーバーを呼び出す
webServer:=WEB Server(Web server receiving request)

Webサーバー関数

Webサーバークラスのオブジェクト には、以下の機能があります。

関数引数戻り値説明
start()settings (オブジェクト)status (オブジェクト)Webサーバーを開始します
stop()--Webサーバーを停止します

Webサーバーを起動・停止するには、Webサーバーオブジェクトの start() および stop() 関数を呼び出すだけです。

var $status : Object
// デフォルトの設定で Webサーバーを起動する場合
$status:=webServer.start()
// カスタム設定で Webサーバーを開始する場合
// $settings オブジェクトは、Wevサーバープロパティを格納します
webServer.start($settings)

// Webサーバーを停止します
$status:=webServer.stop()

Webサーバープロパティ

Webサーバーオブジェクトには、Webサーバーを構成する さまざまなプロパティ が含まれています。

これらのプロパティは以下のように定義します:

  1. .start() 関数の settings パラメーターを使用して定義します (読み取り専用のプロパティを除く、後述参照)。
  2. 上を使用しない場合は、WEB SET OPTION コマンドを使用して定義します (ホストアプリケーションのみ)。
  3. 上を使用しない場合は、ホストアプリケーションまたはコンポーネントの設定で定義します。
  • Webサーバーを起動していない場合、プロパティには Webサーバーの次回起動時に使用される値が含まれています。
  • Webサーバーが起動されている場合、プロパティには Webサーバーで使用される実際の値が含まれます (デフォルトの定は .start() 関数の settings パラメーターによって上書きされている可能性があります)。

isRunningnameopenSSLVersionperfectForwardSecrecy は読み取り専用のプロパティで、start()関数の settings オブジェクトパラメーターで事前に定義することはできません。

4D Webコマンドのスコープ

4Dランゲージには、Webサーバーの制御に使用できる いくつかのコマンド があります。 ただし、これらのコマンドは 1つの (デフォルト) Webサーバーで動作するように設計されています。 これらのコマンドを Webサーバーオブジェクトのコンテキストで使用する場合は、そのスコープが適切であることを確認してください。

コマンドスコープ
SET DATABASE PARAMETERホストアプリケーション Webサーバー
WEB CLOSE SESSIONリクエストを受け取った Webサーバー
WEB GET BODY PARTリクエストを受け取った Webサーバー
WEB Get body part countリクエストを受け取った Webサーバー
WEB Get Current Session IDリクエストを受け取った Webサーバー
WEB GET HTTP BODYリクエストを受け取った Webサーバー
WEB GET HTTP HEADERリクエストを受け取った Webサーバー
WEB GET OPTIONホストアプリケーション Webサーバー
WEB Get server infoホストアプリケーション Webサーバー
WEB GET SESSION EXPIRATIONリクエストを受け取った Webサーバー
WEB Get session process countリクエストを受け取った Webサーバー
WEB GET STATISTICSホストアプリケーション Webサーバー
WEB GET VARIABLESリクエストを受け取った Webサーバー
WEB Is secured connectionリクエストを受け取った Webサーバー
WEB Is server runningホストアプリケーション Webサーバー
WEB SEND BLOBリクエストを受け取った Webサーバー
WEB SEND FILEリクエストを受け取った Webサーバー
WEB SEND HTTP REDIRECTリクエストを受け取った Webサーバー
WEB SEND RAW DATAリクエストを受け取った Webサーバー
WEB SEND TEXTリクエストを受け取った Webサーバー
WEB SET HOME PAGEホストアプリケーション Webサーバー
WEB SET HTTP HEADERリクエストを受け取った Webサーバー
WEB SET OPTIONホストアプリケーション Webサーバー
WEB SET ROOT FOLDERホストアプリケーション Webサーバー
WEB START SERVERホストアプリケーション Webサーバー
WEB STOP SERVERホストアプリケーション Webサーバー
WEB Validate digestリクエストを受け取った Webサーバー