达梦数据库(DM8)集成使用 Geoserver(2.22.2) 以及其他对应版本详解
达梦数据库(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 的报错。
报错大概意思就是方言不对,或者是某个类不存在。
- 如果使用 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>
- 如果使用 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 exceptionat 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.InvocationTargetExceptionat 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/ParseExceptionat 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.ParseExceptionat 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
相关文章:

达梦数据库(DM8)集成使用 Geoserver(2.22.2) 以及其他对应版本详解
达梦数据库(DM8)集成使用 Geoserver(2.22.2) 以及其他对应版本详解系统环境版本Geoserver 驱动对应版本达梦 8 集成 Geoserver 过程试错过程问题总结项目需要国产化,选择使用达梦数据库,在技术测试阶段&…...

全开源无加密的RuleApp文章社区APP客户端源码
内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 开源无加密的文章社区客户端源码分享 RuleApp文章社区,VIP会员,写作投稿积分商城,付费模块集成,多平台兼容这是一款开源免费,界…...

基于springboot校园二手市场平台
一、项目简介 本项目是一套基于springboot校园二手市场平台,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目可以直接作为bishe使用。 项目都经过严格调试,确保…...

维度建模基本流程总结
一、维度建模基本流程图数据RD进行业务调研和数据现状调研,产出符合相关模版规范的业务知识文档和数据现状文档。数据PM也会调研相关业务产出需求设计文档,三方参与需求评审,评审通过后基建数据RD进行需求拆解,产出技术方案&#…...

RocketMQ事务消息
RocketMQ事务消息 RocketMq提供的一种高级消息类型,支持在分布式场景下面保障消息生产和本地事务的一致性 生产者将消息发送到服务端服务端将消息持久化成功后,向生产者返回ACK确认消息发送成功,此时消息状态为待投递,这种状态下的消息称之为…...
大数据处理 - 双层桶划分
分桶法简介其实本质上还是分而治之的思想,重在“分”的技巧上!适用范围: 第k大,中位数,不重复或重复的数字基本原理及要点: 因为元素范围很大,不能利用直接寻址表,所以通过多次划分,逐步确定范围…...
NFC标签读写器隐私协议
【标签读写器】(以下简称“我们”)深知个人信息对您的重要性,并会尽全力保护您的个人信息安全可靠。我们致力于维持您对我们的信任,恪守以下原则,保护您的个人信息:权责一致原则、目的明确原则、选择同意原…...

DocEE:一种用于文档级事件抽取的大规模细粒度基准 论文解读
DocEE: A Large-Scale and Fine-grained Benchmark for Document-level Event Extraction 论文:NAACL2022.pdf (tongmeihan1995.github.io) 代码:tongmeihan1995/DocEE: DocEE: A Large-Scale and Fine-grained Benchmark for Document-level Event Ext…...

ImageCombiner设计源码详解
前言在前面的博客中介绍了一款Java的海报生成器ImageCombiner,原文地址:拿来就用的Java海报生成器ImageCombiner(一),在博文中简单介绍了一下代码以及一个真实的生成案例。但是对源码的介绍不多,本文就针对源码进行深入…...

python基础 | python基础语法
文章目录📚基础语法🐇输入和输出🥕print()输出🥕input()输入🐇 变量的命名🐇条件判断🥕单向判断🥕双向判断🥕多向判断🥕if嵌套🥕三元表达式&#…...

YOLOv6-3.0-目标检测论文解读
文章目录摘要算法2.1网络设计2.2Anchor辅助训练2.3自蒸馏实验消融实验结论论文: 《YOLOv6 v3.0: A Full-Scale Reloading 》github: https://github.com/meituan/YOLOv6上版本参考 YOLOv6摘要 YOLOv6 v3.0中YOLOv6-N达到37.5AP,1187FPS&…...
JAVA集合之Map >>HashMap/Hashtable/TreeMap/LinkedHashMap结构
Map 是一种键-值对(key-value)集合,键不可以重复,值可以重复。常见的实现类有:HashMap、Hashtable、TreeMap、LinkedHashMap等。 HashMap&Hashtable HashMap:数据结构为哈希表,允许使用 n…...

JavaScript从零开始 学习记录(一)
前言 选择视频课程之前,不仅查阅了资料,还询问了网友,最终敲定了学习黑马前端的视频教程,学了5小节,发现挺对自己口味的且从反响来看,还是相当不错的,便打算利用这个寒假学完 笔记范围 从这节…...

C++项目——高并发内存池(3)--central cache整体设计
1.central cache的介绍 1.1框架思想 1.1.1哈希映射 centralcache其实也是哈希桶结构的,并且central cache和thread cacha的哈希映射关系是一致的。目的为了,当thread cache某一个哈希桶下没有内存块时,可以利用之前编写的SizeClass::Index…...
Spring Boot 整合 MyBatis 配置等案例教程
运行环境:JDK 7 或 8、Maven 3.0 技术栈:SpringBoot 1.5、SpringBoot Mybatis Starter 1.2 、MyBatis 3.4 前言 距离第一篇 Spring Boot 系列的博文 3 个月了。《Springboot 整合 Mybatis 的完整 Web 案例》第一篇出来是 XML 配置 SQL 的形式。虽然 XM…...

比特数据结构与算法(第三章_下)队列的概念和实现(力扣:225+232+622)
一、队列(Queue)队列的概念:① 队列只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。② 入队列,进行插入操作的一端称为 队尾。出队列,进行删除操作的一端称为 队头。③ 队列中的元素…...
c++提高篇——STL容器实现打分系统
一、案例说明 有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除评委中最低分,取平均分。 二、案例实现 在实现这个系统时,我们规划一下实现的步骤以及细节: 1、创建一个选手类&#x…...
【图片上传记录三】element-ui组件详解与封装(自定义上传、限制文件大小、格式以及图片尺寸)
业务上有需求是前端上传 jpg/png/gif 格式, 并且 尺寸为 150px * 150px,300px*300px,428*428px 的图片 同时在上传的同时需要携带用户的个人信息以及其他额外信息 因此在 element-upload 基础之上 实现这个需求需要在上传前检查图片的大小,格式以及尺寸如何上传也成…...
一个golang版本管理工具
GitHub - moqsien/gvc: GVC is a productive tool to manage your dev environment for multi platforms and machines. | GVC 是一个用于快速配置和管理多机器跨平台的开发环境的生产力工具。 目前,gvc拥有以下功能或特点: go编译器自动安装和添加环…...

SpringBoot整合Spring Security过滤器链加载执行流程源码分析
文章目录1.引言2.Spring Security过滤器链加载1.2.注册名为 springSecurityFilterChain的过滤器2、查看 DelegatingFilterProxy类3.查看 FilterChainProxy类3.1 查看 doFilterInternal方法。3.2 查看 getFilters方法。4 查看 SecurityFilterChain接口5 查看 SpringBootWebSecur…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...

嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...

day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...