插值属性

在此上下文中,插值意味着将变量替换为字符串。GeoServer应用程序模式支持将属性(Java等价于环境变量)插入到应用程序模式映射文件中。例如,这可以用来简化数据库连接参数的管理,否则这些参数将硬编码到特定的映射文件中。这样就可以将数据目录提供给第三方,而无需不适用的身份验证或系统配置信息。外部化这些参数使管理更容易。

定义属性

  • 如果系统属性 app-schema.properties 未设置,属性从加载 WEB-INF/classes/app-schema.properties (或其他资源) /app-schema.properties 在类路径上)。

  • 如果系统属性 app-schema.properties 设置后,将从名为属性值的文件加载属性。这主要用于调试,并设计用于Eclipse启动配置中。

    • 例如,如果jvm是以 -Dapp-schema.properties=/path/to/some/local.properties ,属性从加载 /path/to/some/local.properties .

  • 系统属性重写配置文件中定义的属性,因此如果定义 -Dsome.property 在Java命令行中,它将重写 app-schema.properties 文件。这是用于调试的,因此可以在Eclipse启动配置中设置属性文件,但通过将其显式设置为系统属性来覆盖文件中包含的某些属性。

  • 所有系统属性都可用于映射文件中的插值。

预定义属性

如果未在其他位置设置,则为每个映射文件设置以下属性:

  • config.file 设置为映射文件的名称

  • config.parent 设置为包含映射文件的目录的名称

使用属性

  • 使用 ${{some.property}} 映射文件中的任何位置都将使其替换为属性的值 some.property .

  • 对于尚未设置为用于插值的属性,这是一个错误。

  • 插值重复执行,因此值可以包含新的插值。小心使用此行为,因为它可能导致无限循环。

  • 插值是在XML解析之前执行的,因此可以用来包含任意的XML块。

属性插值示例

此示例定义了一个Oracle数据存储,其中连接参数是从属性中插入的:

<sourceDataStores>
    <DataStore>
        <id>datastore</id>
        <parameters>
            <Parameter>
                <name>dbtype</name>
                <value>Oracle</value>
            </Parameter>
            <Parameter>
                <name>host</name>
                <value>${example.host}</value>
            </Parameter>
            <Parameter>
                <name>port</name>
                <value>1521</value>
            </Parameter>
            <Parameter>
                <name>database</name>
                <value>${example.database}</value>
            </Parameter>
            <Parameter>
                <name>user</name>
                <value>${example.user}</value>
            </Parameter>
            <Parameter>
                <name>passwd</name>
                <value>${example.passwd}</value>
            </Parameter>
        </parameters>
    </DataStore>
</sourceDataStores>

示例属性文件

此示例属性文件提供插入到上面的映射文件片段中的属性值。这些属性可以安装在 WEB-INF/classes/app-schema.properties 在您的geoserver安装中:

example.host = database.example.com
example.database = example
example.user = dbuser
example.passwd = s3cr3t
Previous: CQL功能