达梦数据库(DM8)集成使用 Geoserver(2.22.2) 以及其他对应版本详解

news2025/2/28 20:04:02

达梦数据库(DM8)集成使用 Geoserver(2.22.2) 以及其他对应版本详解

    • 系统环境版本
    • Geoserver 驱动对应版本
    • 达梦 8 集成 Geoserver 过程
    • 试错过程问题
    • 总结

项目需要国产化,选择使用达梦数据库,在技术测试阶段,尝试基于达梦 8 来集成使用 Geoserver,在最新版(Geoserver2.22.2)的时候很顺利。

但是对于其他版本,遇到了一些问题,网络相关资源也非常少,笔者几乎把所有版本都测试一遍,这里总结记录一下。

这里先放上结论:Geoserver 2.8 以上版本,除了 2.13.*、2.14.* 不支持,其他版本均支持!


本文主要包括:系统环境版本、Geoserver 驱动对应版本、达梦 8 集成 Geoserver 过程、Geoserver 不同版本详解、试错过程问题。

注意:如果想节省时间,可直接查看 Geoserver 驱动对应版本,按照 达梦 8 集成 Geoserver 即可!


系统环境版本

系统版本:win10 专业版

在这里插入图片描述

java 版本:1.8.0_181

在这里插入图片描述

数据库版本:达梦8

在这里插入图片描述

Geoserver版本:

2.8.1、2.9.1、2.10.1、2.11.0、2.12.4、2.13.0、2.14.1、2.15.1、2.17.1、2.22.2
在这里插入图片描述

Geoserver 驱动对应版本

为了节省时间,这里先放上各个 Geoserver 版本对应驱动以及兼容情况。

1. Geoserver 2.15.* 至最新版(Geoserver 2.22.2)

驱动:gt-dameng-2.15.jar、DmJdbcDriver18.jar

2. Geoserver 2.8.* 至 Geoserver 2.12.*版

驱动:gt-dameng-2.11.jar、DmJdbcDriver18.jar

3. Geoserver 2.8.*版

驱动:gt-dameng-2.8.jar、DmJdbcDriver18.jar

这里可以发现 Geoserver 2.8,可以使用 gt-dameng-2.8.jar 或者 gt-dameng-2.11.jar 驱动

但是经过多次替换驱动发现 Geoserver 2.13、2.14 均不支持,报错原因大概是因为 Geotools 版本不兼容,估计只有修改源码才可能支持!


达梦 8 集成 Geoserver 过程

1. 安装达梦8,请参照

https://eco.dameng.com/document/dm/zh-cn/pm/install-uninstall.html

2. Geoserver安装,下载解压即可

官方下载:https://geoserver.org/download/

官网教程:https://docs.geoserver.org/latest/zhCN/user/index.html

3. 找到达梦数据库驱动包:

一般路径为:达梦安装路径\dmdbms\drivers\jdbc\dialect

在这里插入图片描述

在这里插入图片描述

请选择合适的驱动包,本说明JDK为1.8,因此选择 DmJdbcDriver18.jar

Geoserver 为2.22.2,选择目前最新驱动: gt-dameng-2.15.jar

注意:Geoserver 2.15 以上选择 gt-dameng-2.15.jar;其他版本请对应选择。

4. 将两个驱动 (缺一不可) 包放入Geoserver 中:

如果缺少 gt-dameng-2.15.jar,则不显示达梦数据库连接数据源:
在这里插入图片描述

如果缺少 DmJdbcDriver18.jar,则只显示 JNDI 数据源:
在这里插入图片描述

驱动放置路径为:Geoserver安装路径\geoserver-2.22.2\webapps\geoserver\WEB-INF\lib
在这里插入图片描述

5. 添加达梦数据库连接:

Geoserver 访问地址:http://localhost:8080/geoserver/

可参考: https://webgis.blog.csdn.net/article/details/124005271

(1)建议先添加工作空间(非必须)
在这里插入图片描述

(2)添加达梦数据库,填写连接属性
在这里插入图片描述

在这里插入图片描述

6. 发布图层并预览:

注意:一般只操作前两个选项卡(数据、发布

在这里插入图片描述

(1)添加图层

在这里插入图片描述

(2)选择仓库

在这里插入图片描述

在这里插入图片描述

(3)填写图层信息:

在这里插入图片描述

(4)选择图层样式,保存:

在这里插入图片描述

(5)最后,预览:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


试错过程问题

试错过程,基本就是 geoserver 2.13 和 2.14 的报错。

报错大概意思就是方言不对,或者是某个类不存在。

  1. 如果使用 gt-dameng-2.15.jar,可以添加数据源以及发布图层,但是预览报错:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE ServiceExceptionReport SYSTEM "http://localhost:8080/geoserver/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd"> <ServiceExceptionReport version="1.1.1" >   <ServiceException code="internalError">
      Rendering process failed
java.lang.AbstractMethodError: org.geotools.jdbc.SQLDialect.decodeGeometryValue(Lorg/opengis/feature/type/GeometryDescriptor;Ljava/sql/ResultSet;Ljava/lang/String;Lcom/vividsolutions/jts/geom/GeometryFactory;Ljava/sql/Connection;Lorg/geotools/factory/Hints;)Lcom/vividsolutions/jts/geom/Geometry;
org.geotools.jdbc.SQLDialect.decodeGeometryValue(Lorg/opengis/feature/type/GeometryDescriptor;Ljava/sql/ResultSet;Ljava/lang/String;Lcom/vividsolutions/jts/geom/GeometryFactory;Ljava/sql/Connection;Lorg/geotools/factory/Hints;)Lcom/vividsolutions/jts/geom/Geometry;
</ServiceException></ServiceExceptionReport>

在这里插入图片描述

在这里插入图片描述

  1. 如果使用 gt-dameng-2.11.jar,虽然可以显示数据源,但是添加会则报错:
org.apache.wicket.WicketRuntimeException: Method onRequest of interface org.apache.wicket.behavior.IBehaviorListener targeted at org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink$1@f3e85e2 on component [AjaxSubmitLink [Component id = save]] threw an exception
	at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:268)
	at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:241)
	at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:248)
	at 
#### 删除部分无用错误信息
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258)
	... 103 more
Caused by: java.lang.NoClassDefFoundError: com/vividsolutions/jts/io/ParseException
	at org.geotools.data.dameng.DamengDataStoreFactory.createSQLDialect(DamengDataStoreFactory.java:47)
	at org.geotools.jdbc.JDBCDataStoreFactory.createDataStore(JDBCDataStoreFactory.java:301)
	at org.geotools.jdbc.JDBCDataStoreFactory.createDataStore(JDBCDataStoreFactory.java:49)
	at org.vfny.geoserver.util.DataStoreUtils.getDataAccess(DataStoreUtils.java:81)
	at org.geoserver.catalog.ResourcePool.getDataStore(ResourcePool.java:629)
	at org.geoserver.web.data.store.DataAccessEditPage.onSaveDataStore(DataAccessEditPage.java:130)
	at org.geoserver.web.data.store.AbstractDataAccessPage$1.onSubmit(AbstractDataAccessPage.java:176)
	at org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink$1.onSubmit(AjaxSubmitLink.java:111)
	at org.apache.wicket.ajax.form.AjaxFormSubmitBehavior$AjaxFormSubmitter.onSubmit(AjaxFormSubmitBehavior.java:215)
	at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1309)
	at org.apache.wicket.markup.html.form.Form.process(Form.java:976)
	at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:797)
	at org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:171)
	at org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:155)
	at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:601)
	... 108 more
Caused by: java.lang.ClassNotFoundException: com.vividsolutions.jts.io.ParseException
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:450)
	at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:403)
	... 123 more
An error occurred while loading the page

总结

再强调一下,经测试,只有 Geoserver 2.13 和 2.14 不支持,其他均可正常添加发布图层!



参考博客:

Geoserver 版本对应 Geotools 版本
使用 DM 数据库发布空间类型数据到 GEOSERVER
GeoServer:Rendering process failed java.lang.AbstractMethodError

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/361166.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

K-近邻算法(KNN)

K-近邻算法&#xff08;KNN&#xff09; K nearest neighbour 0、导引 如何进行电影分类 众所周知&#xff0c;电影可以按照题材分类&#xff0c;然而题材本身是如何定义的?由谁来判定某部电影属于哪 个题材?也就是说同一题材的电影具有哪些公共特征?这些都是在进行电影…

美创科技荣获“PostgreSQL中国最佳运维服务商”

近日&#xff0c;由中国开源软件推进联盟PostgreSQL分会&中科院软件所&CSDN联合举办主办的“中国PostgreSQL数据库生态大会”在北京中科院软件所隆重召开。美创科技受邀参加&#xff0c;三位顶级数据库技术专家亮相&#xff0c;分享美创科技在数据库内核技术、PostgreS…

IMX6ULL学习笔记(17)——工程管理

一、简介 之前我们把所有源码文件放在一个文件夹下。 这样做存在两个主要问题&#xff0c;第一&#xff0c;代码存放混乱不易阅读。第二&#xff0c;程序可移植性差。如果工程源文件达到几十、甚至数百个的时候&#xff0c;这样一股脑全部放到根目录下就会使工程显得混乱不堪。…

STM32开发(13)----获取唯一设备标识符UID

获取唯一设备标识符UID前言一、什么事UID二、实验过程1.CubeMx配置2.代码实现3.实验结果总结前言 这一章节介绍如何获取STM32芯片中的唯一的ID号的两种方法。 一、什么事UID 在许多项目中&#xff0c;识别设备是必要的。从简单的设备描述到更复杂的设备&#xff0c;如 USB 串…

Open3d入门

目录 点云数据 1 主成分分析 1.1 Method 1.2 Results 2 表面法线估计 2.1 Method 2.2 Results 3 体素网格下采样 3.1 Method 3.2 Results 点云数据 常用数据下载&#xff08;免积分&#xff09; 1 主成分分析 1.1 Method 对点云进行主成分分析&#xff08;PCA&…

[5/101] 101次面试之经典面试题

目录 01、什么是黑盒测试? 02、为什么要做黑盒测试? 03、你在软件生命周期中的哪些测试阶段用到过黑盒测试? 04、什么是白盒测试&#xff1f; 05、白盒测试与黑盒测试有什么区别&#xff1f; 06、为什么要对程序进行单元测试&#xff1f; 07、由谁来做单元测试&#…

RK3566添加湿度传感器以及浅析hal层

RK3566添加一款温湿度传感器gxht3x.挂在i2c总线下。驱动部分就不多做解析。大致流程硬件接好i2c线以及vcc gnd。后看数据手册。初始化寄存器&#xff0c;然后要读数据的话读那个寄存器&#xff0c;读出来的数据要做一个转化,然后实现open read write ioctl函数就行了。本文主要…

【LeetCode】剑指 Offer 10- Ⅲ. 矩形覆盖 p79 -- Java Version

题目链接&#xff1a;无 1. 题目介绍&#xff08;10- Ⅲ. 矩形覆盖 &#xff09; 我们可以用2x1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2x1的小矩形无重叠地覆盖一个2xn的大矩形&#xff0c;总共有多少种方法&#xff1f; 【测试用例】&#xff1a; 示例 1&#xff…

[学习笔记]Rocket.Chat业务数据备份

Rocket.Chat 的业务数据主要存储于mongodb数据库的rocketchat库中&#xff0c;聊天中通过发送文件功能产生的文件储存于/app/uploads中&#xff08;文件方式设置为"FileSystem"&#xff09;&#xff0c;因此在对Rocket.Chat做数据移动或备份主要分为两步&#xff0c;…

JavaScript高级程序设计读书分享之4章——4.2执行上下文与作用域

JavaScript高级程序设计(第4版)读书分享笔记记录 适用于刚入门前端的同志 执行上下文 变量或函数的上下文决定 了它们可以访问哪些数据&#xff0c;以及它们的行为。在浏览器中&#xff0c;全局上下文就是我们常说的 window 对象&#xff08;第 12 章会详细介绍&#xff09;&am…

【技术分享】Web自动化之Selenium安装

Web 应用程序的验收测试常常涉及一些手工任务&#xff0c;例如打开一个浏览器&#xff0c;并执行一个测试用例中所描述的操作。但是手工执行的任务容易出现人为的错误&#xff0c;也比较费时间。因此&#xff0c;将这些任务自动化&#xff0c;就可以消除人为因素。Selenium 可以…

Js中blob、file、FormData、DataView、TypedArray

引言 最开始我们看网页时&#xff0c;对网页的需求不高&#xff0c;显示点文字&#xff0c;显示点图片就很满足了&#xff0c;所以对于浏览器而言其操作的数据其实并不多&#xff08;比如读取本地图片显示出来&#xff0c;或上传图片到服务器&#xff09;&#xff0c;那么浏览器…

网络安全之认识挖矿木马

一、什么是挖矿木马&#xff1f; 比特币是以区块链技术为基础的虚拟加密货币&#xff0c;比特币具有匿名性和难以追踪的特点&#xff0c;经过十余年的发展&#xff0c;已成为网络黑产最爱使用的交易媒介。大多数勒索病毒在加密受害者数据后&#xff0c;会勒索代价高昂的比特币…

GEE学习笔记 六十三:新的地图图层ui.Map.CloudStorageLayer

在GEE中导出数据有一种方式是直接导出地图到Google Cloud Storage中&#xff0c;也就是Export.map.toCloudStorage(xxx)&#xff0c;这种方式是将我们计算生成影像导出成为静态瓦片的格式存放在Google Cloud Storage中。我们可以在其他的前端程序比如OpenLayer、Mapbox GL JS等…

Python开发-学生管理系统

文章目录1、需求分析2、系统设计3、系统开发必备4、主函数设计5、 学生信息维护模块设计6、 查询/统计模块设计7、排序模块设计8、 项目打包1、需求分析 学生管理系统应具备的功能&#xff1a; ●添加学生及成绩信息 ●将学生信息保存到文件中 ●修改和删除学生信息 ●查询学生…

Docker之路(1.Docker概述、组成以及特点)

1.docker为什么会出现&#xff1f; 一款产品或者项目来说&#xff0c;一般有三个环境&#xff0c;日常/测试环境、预发环境、正式/线上环境 这么多环境&#xff0c;对其环境的配置是十分麻烦的&#xff0c;每一个机器都要部署环境&#xff0c;有的会有集群Redis、Hadoop等&…

最全es6数组方法

1.arr.push()从后面添加元素,返回值为添加完后的数组的长度 let arr [1,2,3,4,5] console.log(arr.push(5)) // 6 console.log(arr) // [1,2,3,4,5,5]2.arr.pop()从后面删除元素,只能是一个&#xff0c;返回值是删除的元素 let arr [1,2,3,4,5] console.log(arr.pop())//5 …

学UI设计,可以向哪些方向发展?该怎么学?

1、什么是UI设计&#xff1f;UI设计&#xff0c;全称 User Interface&#xff0c;翻译成中文意思叫做用户界面设计。2、UI设计的类型UI设计按用户和界面来分可分成四种UI设计。分别是移动端UI设计&#xff0c;PC端UI设计&#xff0c;游戏UI设计&#xff0c;以及其它UI设计。第一…

信号量(上)

竞争是协作的特例&#xff0c;竞争关系是属于协作关系 信号量可以解决协作关系存在的问题&#xff0c;那么它也可以解决竞争关系存在的问题 信号量 信号量就是一个整数 先等待&#xff0c;然后再发送信号 p在荷兰语中代表测试 v在荷兰语代表增加 这个函数的执行流需要自己画&a…

C# FFmpeg推流Vlc.DotNet拉流优化参数

FFmpeg是流媒体开源神器&#xff0c;视频转换、剪裁包括推流&#xff0c;无所不能&#xff0c;很多系统都是基于其开发的。拉流可以用FFplay&#xff0c;但是不利于集成到自己的代码中&#xff0c;因此拉流选择了Vlc.DotNet。 在使用中&#xff0c;仅使用默认参数&#xff0c;…