插值属性¶
在此上下文中,插值意味着将变量替换为字符串。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