使用Tomcat设置JNDI连接池¶
本教程将指导读者完成在Tomcat6中设置OracleJNDI连接池以及如何从geoserver中检索它所需的过程。在最后一节中,用PostGIS和SQLServer描述了其他两个配置示例。
Tomcat设置¶
为了设置连接池,Tomcat需要一个JDBC驱动程序和必要的池配置。
首先,您需要为您的数据库找到JDBC驱动程序。大多数情况下,它是在您的DBMS提供商的网站上分发的,或者在您安装的数据库版本中提供。例如,在Linux系统上安装Oracle XE时提供的驱动程序位于 /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/jdbc/lib/ojdbc14.jar
,并且需要将该文件移到Tomcat共享库目录中, TOMCAT_HOME/lib
备注
当复制到Tomcat共享libs时,请小心从geoserver web-inf/lib文件夹中删除JDBC驱动程序,以避免JNDI数据存储使用中出现问题。
完成后,Tomcat配置文件 {TOMCAT_HOME}/conf/context.xml
需要编辑才能设置连接池。对于本地Oracle XE,设置可能如下所示:
<Context>
...
<Resource name="jdbc/oralocal"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:xe"
username="xxxxx" password="xxxxxx"
maxActive="20"
initialSize="0"
minIdle="0"
maxIdle="8"
maxWait="10000"
timeBetweenEvictionRunsMillis="30000"
minEvictableIdleTimeMillis="60000"
testWhileIdle="true"
poolPreparedStatements="true"
maxOpenPreparedStatements="100"
validationQuery="SELECT SYSDATE FROM DUAL"
maxAge="600000"
rollbackOnReturn="true"
/>
</Context>
该示例设置了一个连接到本地Oracle XE实例的连接池。池配置显示的是相当成熟的:
最多20个活动连接(最多可并行使用的连接数)
池中最多保留3个未使用的连接
准备好的语句池(对于良好的性能非常重要)
池中最多100个已准备好的报表
在实际使用连接之前,重复检查连接是否仍处于活动状态的验证查询(如果保证连接不会断开,则无需执行此操作,因为服务器强制关闭连接,或者由于网络/维护问题)。
警告
只有当您真正知道自己在做什么时,才修改以下设置。使用的值太低 removedAbandonedTimeout
和 minEvictableIdleTimeMillis
可能导致连接失败,如果是,请尝试设置 logAbandoned
到 true
检查你的 catalina.out
日志文件。
设置连接池的其他参数:
TimeBetweenictionRunsMillis(默认值为-1)空闲对象evictor线程运行之间休眠的毫秒数。当非正值时,将不会运行空闲的对象收回器线程。
numtestsperevictionrun(默认值3)每次运行空闲对象收回线程时要检查的对象数(如果有)。
MinEvicableIdleTimeMillis(默认为1000 * 60 * 30)在对象有资格被空闲对象逐出器(如果有的话)逐出之前,对象可以在池中空闲的最短时间。
removeBandoned(默认为false)标志,用于在放弃的连接超过removeBandonedTimeout时删除这些连接。如果设置为“真”,则连接被视为已放弃,并且如果空闲时间长于removeBandonedTimeout,则可以删除连接。将此设置为true可以从写得不好的应用程序恢复数据库连接,这些应用程序无法关闭连接。
在删除放弃的连接之前,RemoveBandOnedTimeout(默认为300)超时(以秒为单位)。
日志放弃(默认为假)标志,记录放弃语句或连接的应用程序代码的堆栈跟踪。
有关可能的参数及其值的更多信息,请参阅 DBCP documentation .
地理服务器设置¶
登录到geoserver web管理界面并配置数据存储。
首先,选择 甲骨文(JNDI) 数据存储并为其命名:

选择启用JNDI的数据存储¶
然后,配置连接参数,使JNDI路径与Tomcat配置中指定的路径匹配:

配置JNDI连接¶
当你这样做的时候,确保 图式 是正确设置的,或者数据存储将列出它可以在其可以访问的架构中找到的所有表。在Oracle中,模式通常是用户名,大写。
一旦数据存储被接受,geoserver的使用将正常进行。
其他示例¶
配置PostgreSQL连接池¶
在本例中,将配置PostgreSQL连接池。
要配置JNDI池,您需要移动Postgres JDBC驱动程序(应该命名为 postgresql-XX.X.X.jar
)从地球服务器 WEB-INF/lib
文件夹并将其放入 TOMCAT_HOME/lib
文件夹。
然后,必须将以下代码添加到Tomcat配置文件 TOMCAT_HOME/conf/context.xml
在上下文标签内。
<Context>
<Resource name="jdbc/postgres"
auth="Container"
type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/test"
username="xxxxx" password="xxxxxx"
maxActive="20"
initialSize="0"
minIdle="0"
maxIdle="8"
maxWait="10000"
timeBetweenEvictionRunsMillis="30000"
minEvictableIdleTimeMillis="60000"
testWhileIdle="true"
validationQuery="SELECT 1"
maxAge="600000"
rollbackOnReturn="true"
/>
</Context>
地理服务器设置¶
登录到geoserver web管理界面。
首先,选择 PostGIS(JNDI) 数据存储并为其命名:

然后配置相关参数。JndiReferenceName的值对应于中给出的资源名称 TOMCAT_HOME/conf/context.xml
。

配置SQLServer连接池¶
要为sqlserver配置连接池,需要按照中的说明配置sqlserver驱动程序。 Microsoft SQL Server 部分并将jar文件放入 {TOMCAT_HOME}/lib
文件夹。
然后必须在Tomcat配置文件中写入以下代码 {TOMCAT_HOME}/conf/context.xml
<Context>
...
<Resource name="jdbc/sqlserver"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;databaseName=test;user=admin;password=admin;"
username="admin" password="admin"
maxActive="20"
initialSize="0"
minIdle="0"
maxIdle="8"
maxWait="10000"
timeBetweenEvictionRunsMillis="30000"
minEvictableIdleTimeMillis="60000"
testWhileIdle="true"
poolPreparedStatements="true"
maxOpenPreparedStatements="100"
validationQuery="SELECT 1"
maxAge="600000"
rollbackOnReturn="true"
/>
</Context>
备注
请注意,数据库名称、用户名和密码必须直接在URL中定义。
地理服务器设置¶
登录到geoserver web管理界面。
首先,选择 Microsoft SQL Server(JNDI) 数据存储并为其命名:

然后配置关联的参数:
