Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー プログラミング » HTTP Web サービス » HTTP Web サーバーとしての SQL Anywhere » HTTP Web サーバーでの Web サービスアプリケーションの開発

 

HTTP サーバーでの HTTP セッションの管理

Web アプリケーションでは、セッションをさまざまな方法でサポートできます。HTML フォーム内の非表示フィールドを使用して、複数の要求にまたがってクライアント/サーバーデータを保持できます。別の方法として、AJAX 対応のクライアント側 JavaScript などの Web 2.0 手法では、クライアントステータスに基づいて非同期の HTTP 要求を行うことができます。SQL Anywhere には、セッション化された HTTP 要求を排他的に使用するために、データベース接続を保持する追加機能があります。

HTTP セッション内で作成または変更された接続スコープ変数とテンポラリテーブルには、特定の SessionID を指定する後続の HTTP 要求からアクセスできます。SessionID は、GET または POST HTTP 要求メソッドで指定するか、HTTP cookie ヘッダー内で指定できます。サーバーは、SessionID 変数を指定した HTTP 要求を受信すると、一致するコンテキストをセッションレポジトリから検索します。セッションが検出されると、そのデータベース接続を使用して要求を処理します。セッションが使用中の場合は、HTTP 要求がキューに追加され、セッションが解放された時点で HTTP 要求をアクティブにします。

セッション ID の作成、削除、変更には、sa_set_http_option を使用できます。

HTTP セッションには、セッション条件を管理するために特殊な処理が必要です。1 つの SessionID で使用できるデータベース接続は 1 つしかないため、その SessionID に対する連続したクライアント要求は、サーバーによってシリアル化されます。特定の SessionID に対して、16 個までの要求をキューに追加できます。セッションキューが満杯になると、その SessionID に対する後続の要求は 503 Service Unavailable ステータスで拒否されます。

SessionID を初めて作成すると、SessionID がシステムによって即時に登録されます。SessionID を変更または削除する後続の要求は、HTTP 要求が終了した時点でのみ適用されます。この方法を使用すると、要求の処理がロールバックで終了する場合や、アプリケーションで SessionID を削除してリセットする場合に、動作の一貫性を維持できます。

HTTP 要求によって SessionID が変更されると、現在のセッションは削除され、保留中のセッションに置き換えられます。セッションによってキャッシュされたデータベース接続は、効率的に新しいセッションコンテキストに移動され、テンポラリテーブルや作成された変数などのステータスデータはすべて保持されます。

HTTP セッションの詳しい使用例については、%SQLANYSAMP12%\SQLAnywhere\HTTP\session.sql を参照してください。

注意

各クライアントアプリケーション接続ではライセンスシートが保持されるため、未処理の接続数を最小限に抑えるために、古いセッションを削除し、適切なタイムアウトを設定する必要があります。HTTP セッションに関連する接続では、接続期間を通じてサーバーデータベースでライセンスシートの保持が管理されます。

SQL Anywhere でのライセンスの詳細については、[external link] http://www.sybase.com/detail?id=1056242を参照してください。

 参照

HTTP セッションの作成
非アクティブな HTTP セッションの検出
HTTP セッションの削除またはセッション ID の変更
HTTP セッションの管理
HTTP セッションのエラーコード