数据存储¶
应用程序模式 映射文件 要求您在 sourceDataStores
第节。对于geoserver简单功能,这些功能是使用Web界面配置的,但是由于应用程序模式缺少Web配置界面,因此必须通过编辑映射文件来配置数据存储。
许多配置选项可以通过使用 插值属性 .
数据存储元素¶
A DataStore
配置包括
一个
id
,这是一个不透明的标识符,用于引用映射文件中其他位置的数据存储,以及一个或多个
Parameter
元素,每个元素包含name
和value
一个参数,用于配置数据存储。
的大纲 DataStore
元素:
<DataStore>
<id>datastore</id>
<parameters>
<Parameter>
<name>...</name>
<value>...</value>
</Parameter>
...
</parameters>
</DataStore>
参数顺序不重要。
数据库选项¶
PostGIS和Oracle等数据库共享一些常见或类似的配置选项。
|
意义 |
|
---|---|---|
|
数据库类型 |
|
|
数据库服务器的主机名或IP地址 |
|
|
数据库服务器上的TCP端口 |
如果省略,则默认为: |
|
PostGIS/Oracle数据库 |
|
|
数据库模式 |
|
|
用于登录数据库服务器的用户名 |
|
|
用于登录数据库服务器的密码 |
|
|
具有可用于映射的主键的列 |
默认值为 |
PostGIS¶
设置参数 dbtype
到 postgisng
使用与geoserver 2.0及更高版本捆绑的PostgisNG(新一代)驱动程序。
例子::
<DataStore>
<id>datastore</id>
<parameters>
<Parameter>
<name>dbtype</name>
<value>postgisng</value>
</Parameter>
<Parameter>
<name>host</name>
<value>postgresql.example.org</value>
</Parameter>
<Parameter>
<name>port</name>
<value>5432</value>
</Parameter>
<Parameter>
<name>database</name>
<value>test</value>
</Parameter>
<Parameter>
<name>user</name>
<value>test</value>
</Parameter>
<Parameter>
<name>passwd</name>
<value>test</value>
</Parameter>
</parameters>
</DataStore>
备注
PostGIS支持包含在主要的geoserver包中,因此不需要单独的插件。
Oracle¶
设置参数 dbtype
到 Oracle
使用与GeoServer 2.0及更高版本兼容的Oracle Spatial NG(新一代)驱动程序。
例子::
<DataStore>
<id>datastore</id>
<parameters>
<Parameter>
<name>dbtype</name>
<value>Oracle</value>
</Parameter>
<Parameter>
<name>host</name>
<value>oracle.example.org</value>
</Parameter>
<Parameter>
<name>port</name>
<value>1521</value>
</Parameter>
<Parameter>
<name>database</name>
<value>demodb</value>
</Parameter>
<Parameter>
<name>user</name>
<value>orauser</value>
</Parameter>
<Parameter>
<name>passwd</name>
<value>s3cr3t</value>
</Parameter>
</parameters>
</DataStore>
备注
必须安装Oracle插件才能连接到Oracle空间数据库。
Shapefile¶
shapefile数据源通过参数的存在来标识 url
,其值应为.shp文件的文件URL。
在这个例子中,只有 url
参数是必需的。其他可选:
<DataStore>
<id>shapefile</id>
<parameters>
<Parameter>
<name>url</name>
<value>file:/D:/Workspace/shapefiles/VerdeRiverBuffer.shp</value>
</Parameter>
<Parameter>
<name>memory mapped buffer</name>
<value>false</value>
</Parameter>
<Parameter>
<name>create spatial index</name>
<value>true</value>
</Parameter>
<Parameter>
<name>charset</name>
<value>ISO-8859-1</value>
</Parameter>
</parameters>
</DataStore>
备注
这个 url
在本例中,是一个转换为URL表示法的Windows文件系统路径示例。
备注
shapefile支持包含在主geoserver包中,因此不需要单独的插件。
文件属性¶
属性文件通过指定 directory
那是一个 file:
URI。
如果目录以
file:./
它是相对于映射文件目录的。(这是一个无效的URI,但可以工作。)
例如,以下数据存储用于访问与映射文件位于同一目录中的属性文件:
<DataStore>
<id>propertyfile</id>
<parameters>
<Parameter>
<name>directory</name>
<value>file:./</value>
</Parameter>
</parameters>
</DataStore>
属性文件数据存储包含 all 目录中.properties文件中存储的功能类型。例如,如果目录包含river.properties和station.properties,则数据存储将能够将它们用作功能类型。 River
和 station
.其他文件扩展名将被忽略。
备注
主geoserver包中包含属性文件支持,因此不需要单独的插件。
JNDI¶
定义JDBC数据存储 jndiReferenceName
允许您使用servlet容器提供的连接池。这允许对连接池参数进行详细配置,并在数据源之间甚至在servlet之间共享连接。
要使用JNDI连接提供程序:
指定一个
dbtype
参数来指示数据库类型。这些值与上面的非JNDI示例相同。给予
jndiReferenceName
在servlet容器中设置。两种缩写形式jdbc/oracle
形式,如在Tomcat中,和规范形式java:comp/env/jdbc/oracle
支持。
此示例使用JNDI获取Oracle连接:
<DataStore>
<id>datastore</id>
<parameters>
<Parameter>
<name>dbtype</name>
<value>Oracle</value>
</Parameter>
<Parameter>
<name>jndiReferenceName</name>
<value>jdbc/oracle</value>
</Parameter>
</parameters>
</DataStore>
您的servlet容器我要求您添加 resource-ref
在您的 geoserver/WEB-INF/web.xml
.(Tomcat需要,Jetty不需要。)例如:
<resource-ref>
<description>Oracle Spatial Datasource</description>
<res-ref-name>jdbc/oracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
下面是Tomcat6上下文的一个示例 /etc/tomcat6/server.xml
其中包括一个Oracle连接池:
<Context
path="/geoserver"
docBase="/usr/local/geoserver"
crossContext="false"
reloadable="false">
<Resource
name="jdbc/oracle"
auth="Container"
type="javax.sql.DataSource"
url="jdbc:oracle:thin:@YOUR_DATABASE_HOSTNAME:1521:YOUR_DATABASE_NAME"
driverClassName="oracle.jdbc.driver.OracleDriver"
username="YOUR_DATABASE_USERNAME"
password="YOUR_DATABASE_PASSWORD"
maxActive="20"
maxIdle="10"
minIdle="0"
maxWait="10000"
minEvictableIdleTimeMillis="300000"
timeBetweenEvictionRunsMillis="300000"
numTestsPerEvictionRun="20"
poolPreparedStatements="true"
maxOpenPreparedStatements="100"
testOnBorrow="true"
validationQuery="SELECT SYSDATE FROM DUAL" />
</Context>
防火墙超时可以悄悄地切断与数据库的空闲连接,并导致地理服务器挂起。如果在geoserver和数据库之间有防火墙,那么配置为在防火墙删除空闲连接之前关闭这些连接的连接池将阻止geoserver挂起。此JNDI连接池配置为在5到10分钟后关闭空闲连接。
也见 使用Tomcat设置JNDI连接池 .
公开主键¶
默认情况下,geoserver使用主键隐藏数据库列的存在。要使这些列可在应用程序架构映射文件中使用,请设置数据存储参数 Expose primary keys
到 true
::
<Parameter>
<name>Expose primary keys</name>
<value>true</value>
</Parameter>
众所周知,这与PostGIS、Oracle和JNDI数据存储一起工作。
MongoDB¶
MongoDB数据库的数据存储配置如下:
<sourceDataStores>
<DataStore>
<id>data_source</id>
<parameters>
<Parameter>
<name>data_store</name>
<value>MONGO_DB_URL</value>
</Parameter>
<Parameter>
<name>namespace</name>
<value>NAME_SPACE</value>
</Parameter>
<Parameter>
<name>schema_store</name>
<value>SCHEMA_STORE</value>
</Parameter>
<Parameter>
<name>data_store_type</name>
<value>complex</value>
</Parameter>
</parameters>
</DataStore>
</sourceDataStores>
检查 MongoDB教程 有关如何将MongoDB与应用程序架构一起使用的详细说明。
备注
必须安装MongoDB插件才能连接到MongoDB数据库。