默认情况下,H2数据库是在GeoNetwork应用程序首次启动时配置和创建的。本文介绍如何将默认数据库更改为PostgreSQL数据库。
本文使用环境:
操作系统:Windows 11
JDK版本:jdk-8u381-windows-x64.exe
Elasticsearch版本:elasticsearch-7.9.2-windows-x86_64.zip
GeoNetwork版本:geonetwork-bundle-4.2.5-0.zip
数据库:postgresql-15.4-1-windows-x64.exe
数据库连接工具:DBeaver 23
本文通过修改配置文件的方式配置数据库
1、新建数据库geonetwork
安装完postgresql,新建一个名称为geonetwork的空库(空库即可,名称可自定义):
2、修改应用程序使用的数据库类型,支持H2、PostgreSQL、PostGIS、Oracle、SQL Server等
geonetwork安装目录下找到srv.xml,修改数据库类型:
文件路径:.\geonetwork-bundle-4.2.5-0\web\geonetwork\WEB-INF\config-node\srv.xml
将resource中${geonetwork.db.type:h2}.xml更改为${geonetwork.db.type:postgres}.xml
3、修改数据库连接配置:
geonetwork安装目录下找到jdbc.properties
文件路径:.\geonetwork-bundle-4.2.5-0\web\geonetwork\WEB-INF\config-db\jdbc.properties
修改数据库用户和密码(新建数据库的时候设置的),数据库名称,主机和端口:
4、重启服务,打开应用系统,发现修改数据库连接后运行正常:
通过DBeaver连接数据库,可以看到已经新建了很多表:
附:
根据官方文档,配置数据库还可以通过JNDI和环境变量(以下截自官方帮助文档,机翻的,若有不准确的地方请查阅官方文档):
通过 JNDI 配置数据库
Java 命名和目录接口 (JNDI) 是一种允许在 tomcat 中配置数据库并按名称引用 JNDI 连接的技术。
-
要激活JNDI,您需要激活
/WEB-INF/config-node/srv.xml
. -
通过将新资源添加到 来配置 Tomcat 中的 JNDI 连接
TOMCAT/conf/context.xml
。对于 的码头WEB-INF/jetty-env.xml
。<Resource name="geonetwork" type="javax.sql.DataSource" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/geonetwork" username="xxxxx" password="xxxxxx" maxActive="20" />
通过环境配置数据库
通过环境变量设置配置属性在 Docker 等容器环境中很常见。存在 2 个选项:
-
通过替换 JAVA_OPTS 将参数直接添加到 Java 环境中。
docker run --rm --name gn -p 8080:8080 -e JAVA_OPTS=" -Dgeonetwork.db.type=postgres -Djdbc.database=example -Djdbc.username=example -Djdbc.password=xxx -Djdbc.host=localhost -Djdbc.port=5432" geonetwork:latest
-
设置精确的环境变量,包括“.”。许多 GeoNetwork 配置参数都包含一个点,这对于通过环境变量进行替换是一个挑战。Docker 是一个例外,它提供了一种允许在环境变量中出现点的机制。
docker run --rm --name gn -p 8080:8080 -e geonetwork.db.type=postgres -e jdbc.database=example -e jdbc.username=example -e jdbc.password=xxx -e jdbc.host=localhost -e jdbc.port=5432 geonetwork:latest
在 PostgreSQL 中可以配置postgres或postgis。在后一种情况下,GeoNetwork 将使用 PostGIS 的空间功能来过滤元数据。在第一种情况下(以及其他数据库方言),将创建一个 Shapefile 来存储元数据覆盖范围。
标签:xml,jdbc,geonetwork,数据库,配置,默认,JNDI From: https://www.cnblogs.com/kk8085/p/17757815.html