应用程序架构解析

为了能够编码符合GML应用程序模式的XML响应,应用程序模式插件必须能够定位定义该模式的应用程序模式文件(XSD)。此页描述架构解析过程。

现在大多数用户都可以自动下载架构

geoserver将自动下载和缓存(请参见 Cache 下面)它第一次启动时需要的所有模式,如果:

  1. 您使用的所有应用程序架构都是通过http/https URL访问的,并且

  2. 您的geoserver实例部署在允许它下载它们的网络上。

备注

这是为大多数用户推荐的使用geoserver app模式的方法。

如果使用缓存下载,则不需要手动处理架构。此页面的其余部分适用于具有更复杂安排或希望清除缓存的用户。

解决顺序

用于解析应用程序架构的源的顺序是:

  1. OASIS Catalog

  2. Classpath

  3. Cache

每次尝试加载模式都会沿着此列表向下工作,因此可以从源文档以外的源解析导入。例如,缓存中引用在目录中找到的模式的应用程序架构将使用目录中的版本,而不是缓存该版本。这允许用户以互操作性(WFS客户机如何获取这些架构)为代价提供源于(例如)目录的未发布或修改的架构。.

绿洲目录

OASIS XML Catalog 是指示XML处理系统如何处理实体引用的标准配置文件格式。geoserver应用程序模式解析器使用目录URI语义来定位应用程序模式,因此 urirewriteURI 条目应该出现在您的目录中。可选的映射文件 catalog 元素提供OASIS XML目录配置文件的位置,作为相对于映射文件的路径提供,例如:

<catalog>../../../schemas/catalog.xml</catalog>

应用程序架构插件的早期版本要求目录中存在所有架构。情况不再是这样了。由于首先搜索目录,现有的基于目录的部署将继续工作。

要迁移使用OASIS目录而不是使用缓存下载的现有geoserver app模式部署(请参见 Cache 以下),全部删除 catalog 映射文件中的元素并重新启动geoserver。

类路径

Java应用程序(例如GeoServer)可以从Java类路径加载资源。geoserver app模式使用从http或https URL到类路径资源位置的简单映射。例如,应用程序架构发布于 http://schemas.example.org/exampleml/exml.xsd 如果存储在类路径上,则会在类路径上找到:

  • /org/example/schemas/exampleml/exml.xsd 在类路径上的JAR文件中(例如,在 WEB-INF/lib )或者,

  • 在本地文件系统上 WEB-INF/classes/org/example/schemas/exampleml/exml.xsd .

从类路径加载模式的能力旨在支持测试,但对于社区提供包含其应用程序模式的JAR文件的用户可能有用。

隐藏物

如果在目录或类路径中找不到应用程序架构,则从网络下载该架构并将其存储在子目录中。 app-schema-cache 地理服务器数据目录的。

  • 一旦模式被下载到缓存中,它们将无限期地持续存在,包括通过地理服务器重新启动。

  • 不会尝试检索缓存架构的新版本。

  • 要清除缓存,请删除子目录 app-schema-cache 并重新启动geoserver。

geoserver app模式使用从http或https URL到本地文件系统路径的简单映射。例如,应用程序架构发布于 http://schemas.example.org/exampleml/exml.xsd 将下载并存储为 app-schema-cache/org/example/schemas/exampleml/exml.xsd .注意:

  • 只有 httphttps 支持URL。

  • 端口号、查询和片段将被忽略。

如果您的geoserver实例部署在防火墙规则阻止端口80(http)或443(https)上传出TCP连接的网络上,则架构下载将不起作用。(出于安全原因,一些服务网络 [“非军事区”] 禁止此类传出连接。)如果网络上不允许下载架构,则有三种解决方案:

  1. 或者:在另一个可以进行传出TCP连接的网络上安装和配置geoserver,启动geoserver以触发模式下载,然后手动复制 app-schema-cache 到生产服务器的目录。这是最简单的选项,因为geoserver会自动下载它需要的所有模式,包括依赖关系。

  2. 或者:在类路径上部署包含所有必需模式文件的JAR文件(请参见 Classpath 以上)。

  3. 或:使用目录(请参见 OASIS Catalog 以上)。

警告

使用具有“http://”或“https://”协议的远程URL中的映射文件需要具有缓存目录位置的系统属性“schema.cache.dir”。