ArcSDE 服务快速浏览

本主题将介绍 ArcSDE 服务的工作原理以及当客户端使用 ArcSDE 服务进行连接时将发生哪些状况。

ArcSDE 服务的工作原理

使用 ArcSDE 服务(又称为 ArcSDE 应用程序服务器)连接到数据库时,每个 ArcSDE 服务都会通过 giomgr 进程监听专用 TCP/IP 服务名称和端口号上的用户连接。默认服务名称为 esri_sde,默认端口号为 5151。

对于 UNIX 或 Linux 系统,可在 $SDEHOME/etc/services.sde 文件中找到服务名称和端口号。有关此文件的详细信息,请参阅 services.sde 文件

对于 Windows 系统,ArcSDE 服务将在 ArcSDE 安装后设置期间被创建为 Windows 服务。此 ArcSDE 服务被默认设置为在重新启动服务器主机时自动启动。与所有的 Windows 服务一样,ArcSDE 服务通常可从“Windows 服务”菜单中启动和停止。安装后配置向导可自动将服务名称的服务名和端口号输入注册表以及 Windows 和 ArcSDE 服务文件中。

注注:

多数受支持的数据库管理系统 (DBMS) 都允许一台服务器中存在多个数据库。每个数据库都必须拥有自己的 ArcSDE 服务,但同时允许多个客户端通过该 ArcSDE 服务与数据库建立连接。

当客户端应用程序使用 ArcSDE 服务建立连接时会发生哪些状况?

ArcSDE 客户端应用程序使用 ArcSDE 服务连接到 ArcSDE 地理数据库时将会顺次发生以下事件。

  1. giomgr 进程监听其 TCP/IP 端口处的连接。

    处理连接请求之前,giomgr 必须处于监听状态。请确保 ArcSDE 服务已启动且处于监听状态。对于 UNIX 和 Linux,可使用 sdemon –o 状态确定 giomgr 进程的状态。

    对于 Windows,可从“服务”菜单中检查 ArcSDE 应用程序服务的状态。打开 Windows 管理工具。双击服务图标调出“服务”菜单。在状态字段的下方,ArcSDE 服务的状态应显示为 STARTED。在 Windows 中,除“服务”菜单外,还可在 MS-DOS 命令工具中使用 sdemon –o 状态命令。

  2. 应用程序向 ArcSDE 服务提交连接请求。

    随后,giomgr 进程将连续对连接请求做出响应。giomgr 进程需要约 1 至 5 秒的时间验证连接请求,具体取决于您的 DBMS。当多个应用程序尝试同时获取一个 ArcSDE 连接时,其中一些应用程序可能会超出 TCP/IP 75 秒的标准超时限制。

  3. giomgr 进程对应用程序所在计算机的时钟时间与自身所在主机的时钟时间进行比较。

    如果应用程序所在计算机的时钟时间与服务器时钟时间的差值大于 MAXTIMEDIFF 值(以秒为单位),giomgr 进程将禁止该应用程序进行连接。MAXTIMEDIFF 在 SERVER_CONFIG 表中设置。有关详细信息,请参阅 giomgr.defs 文件和 SERVER_CONFIG 系统表

  4. giomgr 对客户端应用程序的版本和 ArcSDE 服务的版本进行比较。

    如果客户端应用程序的版本低于应用程序服务器的版本,则连接请求将被拒绝(但 ArcGIS 9.2 SP5 或 9.2 之后的补丁包客户端除外)。通常,ArcSDE 应用程序是向下兼容的。例如,您可使用 ArcSDE 服务将通过 ArcSDE 9.2 应用程序编程接口 (API) 开发的应用程序(如 ArcGIS Desktop 9.2)连接到 ArcSDE 9.1 或更低版本的地理数据库。但是,由早期版本 ArcSDE API 构建的应用程序则无法连接到 ArcSDE 9.2 应用程序服务器;例如,ArcGIS Desktop 9 无法连接到 ArcSDE 9.2 地理数据库。请访问 ESRI 支持网站查看受支持的 ArcSDE 版本。

  5. giomgr 进程启动为应用程序提供服务的 gsrvr 进程。

    giomgr 进程必须能够生成一个 gsrvr 进程。如果已达到由当前操作系统限制的最大进程数,此操作将失败并且不会创建任何 gsrvr 进程。

  6. gsrvr 进程连接到 DBMS。

    向 giomgr 进程提交连接请求时,客户端应用程序必须提供有效的用户名、密码和数据库名称(Oracle DBMS 不需要数据库名称)。无效条目将被拒绝,同时显示错误 -9 SE_INVALID_USER。

  7. giomgr 进程将应用程序附加到 gsrvr 进程。

    giomgr 进程将应用程序附加到 gsrvr 进程后,将继续监听新的连接请求并执行其他 ArcSDE 服务管理任务。应用程序与 DBMS 之间的全部通信均将通过 gsrvr 进程执行。

相关主题


7/10/2012