geonetwork更改默认数据库配置

默认情况下,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、修改应用程序使用的数据库类型,支持H2PostgreSQLPostGISOracleSQL 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 连接的技术。

  1. 要激活JNDI,您需要激活/WEB-INF/config-node/srv.xml.

  2. 通过将新资源添加到 来配置 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 个选项:

  1. 通过替换 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
    
  2. 设置精确的环境变量,包括“.”。许多 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 中可以配置postgrespostgis在后一种情况下,GeoNetwork 将使用 PostGIS 的空间功能来过滤元数据。在第一种情况下(以及其他数据库方言),将创建一个 Shapefile 来存储元数据覆盖范围。

posted @   孤草之魂  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示