当前位置: 首页 > news >正文

达梦数据库(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 的报错。

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

  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 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) 以及其他对应版本详解

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

全开源无加密的RuleApp文章社区APP客户端源码

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

基于springboot校园二手市场平台

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

维度建模基本流程总结

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

RocketMQ事务消息

RocketMQ事务消息 RocketMq提供的一种高级消息类型&#xff0c;支持在分布式场景下面保障消息生产和本地事务的一致性 生产者将消息发送到服务端服务端将消息持久化成功后&#xff0c;向生产者返回ACK确认消息发送成功&#xff0c;此时消息状态为待投递,这种状态下的消息称之为…...

大数据处理 - 双层桶划分

分桶法简介其实本质上还是分而治之的思想&#xff0c;重在“分”的技巧上&#xff01;适用范围: 第k大&#xff0c;中位数&#xff0c;不重复或重复的数字基本原理及要点: 因为元素范围很大&#xff0c;不能利用直接寻址表&#xff0c;所以通过多次划分&#xff0c;逐步确定范围…...

NFC标签读写器隐私协议

【标签读写器】&#xff08;以下简称“我们”&#xff09;深知个人信息对您的重要性&#xff0c;并会尽全力保护您的个人信息安全可靠。我们致力于维持您对我们的信任&#xff0c;恪守以下原则&#xff0c;保护您的个人信息&#xff1a;权责一致原则、目的明确原则、选择同意原…...

DocEE:一种用于文档级事件抽取的大规模细粒度基准 论文解读

DocEE: A Large-Scale and Fine-grained Benchmark for Document-level Event Extraction 论文&#xff1a;NAACL2022.pdf (tongmeihan1995.github.io) 代码&#xff1a;tongmeihan1995/DocEE: DocEE: A Large-Scale and Fine-grained Benchmark for Document-level Event Ext…...

ImageCombiner设计源码详解

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

python基础 | python基础语法

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

YOLOv6-3.0-目标检测论文解读

文章目录摘要算法2.1网络设计2.2Anchor辅助训练2.3自蒸馏实验消融实验结论论文&#xff1a; 《YOLOv6 v3.0: A Full-Scale Reloading 》github&#xff1a; https://github.com/meituan/YOLOv6上版本参考 YOLOv6摘要 YOLOv6 v3.0中YOLOv6-N达到37.5AP&#xff0c;1187FPS&…...

JAVA集合之Map >>HashMap/Hashtable/TreeMap/LinkedHashMap结构

Map 是一种键-值对&#xff08;key-value&#xff09;集合&#xff0c;键不可以重复&#xff0c;值可以重复。常见的实现类有&#xff1a;HashMap、Hashtable、TreeMap、LinkedHashMap等。 HashMap&Hashtable HashMap&#xff1a;数据结构为哈希表&#xff0c;允许使用 n…...

JavaScript从零开始 学习记录(一)

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

C++项目——高并发内存池(3)--central cache整体设计

1.central cache的介绍 1.1框架思想 1.1.1哈希映射 centralcache其实也是哈希桶结构的&#xff0c;并且central cache和thread cacha的哈希映射关系是一致的。目的为了&#xff0c;当thread cache某一个哈希桶下没有内存块时&#xff0c;可以利用之前编写的SizeClass::Index…...

Spring Boot 整合 MyBatis 配置等案例教程

运行环境&#xff1a;JDK 7 或 8、Maven 3.0 技术栈&#xff1a;SpringBoot 1.5、SpringBoot Mybatis Starter 1.2 、MyBatis 3.4 前言 距离第一篇 Spring Boot 系列的博文 3 个月了。《Springboot 整合 Mybatis 的完整 Web 案例》第一篇出来是 XML 配置 SQL 的形式。虽然 XM…...

比特数据结构与算法(第三章_下)队列的概念和实现(力扣:225+232+622)

一、队列&#xff08;Queue&#xff09;队列的概念&#xff1a;① 队列只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表。② 入队列&#xff0c;进行插入操作的一端称为 队尾。出队列&#xff0c;进行删除操作的一端称为 队头。③ 队列中的元素…...

c++提高篇——STL容器实现打分系统

一、案例说明 有5名选手:选手ABCDE&#xff0c;10个评委分别对每一名选手打分&#xff0c;去除最高分&#xff0c;去除评委中最低分&#xff0c;取平均分。 二、案例实现 在实现这个系统时&#xff0c;我们规划一下实现的步骤以及细节&#xff1a; 1、创建一个选手类&#x…...

【图片上传记录三】element-ui组件详解与封装(自定义上传、限制文件大小、格式以及图片尺寸)

业务上有需求是前端上传 jpg/png/gif 格式, 并且 尺寸为 150px * 150px,300px*300px,428*428px 的图片 同时在上传的同时需要携带用户的个人信息以及其他额外信息 因此在 element-upload 基础之上 实现这个需求需要在上传前检查图片的大小&#xff0c;格式以及尺寸如何上传也成…...

一个golang版本管理工具

GitHub - moqsien/gvc: GVC is a productive tool to manage your dev environment for multi platforms and machines. | GVC 是一个用于快速配置和管理多机器跨平台的开发环境的生产力工具。 目前&#xff0c;gvc拥有以下功能或特点&#xff1a; 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…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...