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 服务 » 将 SQL Anywhere 用作 HTTP Web 服务器 » 在 HTTP Web 服务器中开发 Web 服务应用程序

 

在 HTTP 服务器上管理 HTTP 会话

Web 应用程序可以各种方式支持会话。在 HTML 窗体中的隐藏字段,可用于跨多个请求保存客户端/服务器数据。另外,Web 2.0 技术,如启用了 AJAX 的客户端 JavaScript,也可以基于客户端状态作出异步 HTTP 请求。SQL Anywhere 提供了额外的功能,可以保留数据库连接专供会话 HTTP 请求使用。

任何在 HTTP 会话内部创建和变更的连接范围变量和临时表都可以为指定了给定 SessionID 的后续 HTTP 请求所访问。SessionID 可以通过 GET 或 POST HTTP 请求方法指定,或在 HTTP Cookie 标头内指定。当 HTTP 请求与 SessionID 变量一起被接收时,服务器将检查其会话存储库以寻找匹配上下文。如果找到一个会话,服务器将使用它的数据库连接来处理请求。如果会话在使用中,服务器会将 HTTP 请求加入队列,并在会话被释放时激活它。

sa_set_http_option 可用于创建、删除和更改会话 ID。

HTTP 会话要求对管理会话标准进行特殊处理。一个给定的 SessionID 只能有一个数据库连接供其使用,所以向该 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 会话错误代码