Java开发基于rmi的数据库中间件设计源码,并利用中间件建立一个数据库应用(Java web项目),分布式对象技术课程实践

news2024/9/23 11:28:57

基于rmi的数据库中间件设计

介绍

分布式对象技术课程实践:基于rmi的数据库中间件设计,并利用中间件建立一个数据库应用(Java web项目)。

软件架构

  1. 前端:React
  2. 后端:Springboot
  3. 数据库中间件:Java Rmi服务

安装教程

  1. 主机安装Node.js,并在控制台进入front-end-pages目录下,按顺序执行以下命令运行前端:

npm install
npm start

  1. 后端安装eclipse、Springboot插件,运行即可;
  2. 运行中间件前需要配置
    • jdk 1.8
    • Mysql(5.6)、Sql Server(2017 express)(其余关系型数据库也行)
    • 导入各家数据库的JDBC工具包
    • 绑定Rmi服务端口和主机(如果Rmi服务放在远程主机需要注意避开防火墙,并绑定主机,更有甚者需要指定另外一个通信端口)

项目需求分析

  1. 数据库操作中间件:

    • 提供数据库连接接口。该接口可使“数据库操作中间件”连接当前主流的数据库,如Oracle、SQLServer、MySQL、Access等;参数要求:指示数据库类型,数据库相应的连接参数。

    • 提供关闭数据库连接接口。该接口可关闭“数据库操作中间件”当前的数据库连接。

    • 提供数据库查询语句接口。该接口传入组装好的字符串型的SQL查询语句,返回参数为列表,该列表代表查询的结果。

    • 提供数据库操纵语句接口。该接口传入参数为哈希表,哈希表中记录了查询的表名、字段名、操纵语句类型标志、“where”语句的条件等;传出参数为成功和失败的布尔值。针对哈希表中的这些信息,服务端需要做到:

      • 多类型(insert、update、delete)操纵语句的自动拼装,必要时需要拼接“where”语句的条件;
      • 根据表名自动获取数据类型,从而在拼装SQL语句时决定数值是否加单引号;
      • 提供事务确认和回滚处理。
    • 接口设计如下表所示:

    • 在这里插入图片描述

    • 哈希表参数传递示意表如下表所示:
      在这里插入图片描述

  2. Web应用:

    利用Web技术构建一个学生、教师消费记录管理系统,通过系统可以:

    • 学生、教师信息的查询、增加、删除(可批量)、修改。
    • 学生、教师的消费记录的查询。

源码下载地址:Java开发基于rmi的数据库中间件设计源码

参与贡献

  1. 数据库中间件设计
    • 本次项目主要是我和实践组长一起完成,我负责编写中间件,他负责写应用,我们交流的很频繁,组长说这就是敏捷开发中的“结对编程”,幡然醒悟,哈哈哈哈哈哈,果然软工的课都是白学了。
    • 我将编写好的Rmi服务半成品挂在服务器上,他就可以直接利用已经编写好的接口进行应用的编写,而我可以在本地继续完善Rmi服务,我们两个的工作可以说互不干扰,所有合作“肥肠”愉快!
  2. 中间件客户端在Springboot后端的部署
  3. 项目存在的已知缺陷:
    • 在使用sql server时,“根据表名自动获取数据类型,从而在拼装SQL语句时决定数值是否加单引号”这一功能存在bug,在装配哈希表中字段时还是需要为非数值类型数据加上单引号。bug原因出在获取数据库表字段信息时未指定表所在的scheme(模式),mysql无需指定,但是sqlserver、oracle需要指定。
    • rmi服务调用只支持单用户连接调用,且并没有设置同步,所以不可以多用户同时连接该服务;
    • 调用Rmi服务连接数据库后一定要记住调用接口方法关闭连接,不然服务会长时间消耗资源来保持与数据库的连接。如果不需要使用rollback、commit等事务操作,建议修改Rmi服务源码直接让服务端在执行完sql语句后自主关闭连接。

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

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

相关文章

【人脸检测】------MTCNN算法

MTCNN算法出自深圳先进技术研究院,乔宇老师组,是今年2016的ECCV。 正如上图所示,该MTCNN由3个网络结构组成(P-Net,R-Net,O-Net)。 Proposal Network (P-Net):该网络结构主要获得了人脸区域的候选窗口和边界框的回归向量。并用该边界框做回归,对候选窗口进行校准,然后通…

Ubuntu18.04下QT和MYSQL异常问题排查处理常用命令

问题场景 :开年第一天上班,使用GIT下载好项目代码到本地后,发现QT5.14.2无法正常启动,使用命令sudo /opt/Qt5.14.2/Tools/QtCreator/bin/qtcreator后没有任何反应,仔细回想应该是年前电脑修改环境变量导致无法进入系统…

微信小程序安全系列——文本内容安全识别

前言 相信很多朋友跟我遇到过相同的问题,就是在开发一些笔记或者博客的时候,会遇到一些过滤敏感、时政、黄、赌、毒这类词汇、句子等这种棘手问题。 今天我们看一下微信小程序提供的文本安全内容识别,也可以减少一些我们的工作量。通过微信…

【通信原理(含matlab程序)】实验二:FM的调制和解调

💥💥💞💞欢迎来到本博客❤️❤️💥💥 本人持续分享更多关于电子通信专业内容以及嵌入式和单片机的知识,如果大家喜欢,别忘点个赞加个关注哦,让我们一起共同进步~ &#x…

bug解决:Uncaught (in promise) TypeError: Toast.loading is not a function

在使用vue3做项目时,在其中使用了vant框架,在使用toast的加载组件或者是一些其他组件时,出现了如下的错误:Uncaught (in promise) TypeError: Toast.loading is not a function错误代码如下:Toast.loading({ message: …

二本土木工程毕业四年,成功转行大数据

1、 自我介绍 大家好,我是临渊羡鱼。18年毕业与重庆的一所二本大学,至今4年有余,专业是土木工程,毕业后从事三年半的建筑结构设计工作,在此期间由于不看好设计行业前景,故而在21年底谋求转行。在朋友推荐下…

[C语言]文件操作

目录 1.文件 1.1程序文件 1.2数据文件 2.文件名 3.文件的打开和关闭 3.1文件指针 3.2文件的打开和关闭 4.文件的顺序读写 4.1fgetc 4.2fputc 4.3fgets 4.4fputs 4.5fscanf 4.6fprintf 4.7fread(二进制输出) 4.8fwriite(二进制输…

Python【xpath】实战案例【中】

获取全国地级城市名称:案例准备:导入外部库 1.requests、2.lxml容易遇到的问题:网站SSL认证失效代码块:#导入第三方库 import requests from lxml import etree # 网页地址 url https://www.aqistudy.cn/historydata/ #U-A伪装 h…

SOFA Weekly|SOFANews、issue 精选

SOFA WEEKLY | 每周精选 筛选每周精华问答,同步开源进展欢迎留言互动~SOFAStack(Scalable Open Financial Architecture Stack)是蚂蚁集团自主研发的金融级云原生架构,包含了构建金融级云原生架构所需的各个组件&#…

论文投稿指南——中文核心期刊推荐(公路运输)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

Linux嵌入式开发——用户与用户组

文章目录Linux嵌入式开发——用户与用户组用户用户组创建用户和用户组1、图形化界面创建2、命令创建添加用户用户查询修改用户密码删除用户添加用户组显示组内用户名删除用户组Linux嵌入式开发——用户与用户组 用户 Linux是一个多用户操作系统,不同的用户拥有不同…

过年回家,你是否也像我一样努力生动的给别人解释软件开发是干啥滴?

这个年就这样,在喜气洋洋的气氛中,在我们依依不舍的留恋中,从我们身边溜走了。这次回家又碰见了亲戚们不厌其烦的问我,你做什么工作呐?于是就有了我以下生动的解释 目录 打字的 帮助传话,帮助卖东西 皮…

亚马逊云科技:强强联合助力中国头部车企打造优质服务体验

2023年1月9日在美国拉斯维加斯刚落幕的国际消费电子展(CES 2023)上,亚马逊云科技的2位重要合作伙伴BlackBerry和中国领先的车联网(IoV)技术服务与产品提供商博泰车联网共同宣布,由BlackBerry IVY™赋能的博…

.Net 7 托管Main入口的四种写法(茴香豆?)

前言: 按照CLR的规则,C#托管Main入口其实有四种写法。 写法 第一种:最常见的,也是VS默认的,返回值void,带一个参数 static void Main(string[] args) {Console.Write("Tian xia feng yun chu wo bei");Console.ReadLine…

python图像处理(均值滤波)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在图像处理过程中,一个绕不开的话题就是噪声。其中比较经典的就是椒盐噪声。为了降低这些噪声对最终图像处理效果的影响,人们想了很多的方法,比如说均值滤波、中值滤波、高斯滤波…

java多线程-线程属性

线程属性 线程各属性 线程ID id从 1 开始计数,因为在源码中是如下实现的,初始值设置为0,id是先自增再返回 private volatile int threadStatus 0;private static synchronized long nextThreadID() {return threadSeqNumber; }现在来演示…

处理比赛数据记录

文章目录一、需求二、爬取阶段1.使用requests进行请求获取网页内容2.使用selenium模拟人操作浏览器获取网页内容(1)环境配置(2) 源码3.使用phantomjs模拟人操作浏览器获取网页内容浅浅记录一下自己在做一个比赛数据处理过程中的遇到的一些问题。一、需求 首先数据的格式是长下…

AcWing 1064. 小国王(状态压缩DP)

AcWing 1064. 小国王一、问题二、思路1、整体逻辑2、状态表示3、状态转移4、循环设计5、初末状态三、代码一、问题 二、思路 1、整体逻辑 我们看下面这个例子: 如果我们一行一行放的话。 在上图中,我们先看第二行,我们发现第二行在哪个位…

NR R16 上行满功率传输(ULFPTx)

微信公众号同步更新,欢迎关注同名“modem协议笔记” UL full power Tx(ULFPTx Mode),上行满功率传输,是R16版本的一个增强,R15由于受限于codebook和PUSCH功率控制,某些情况下无法达到满功率传输(例如26dBm…

论文投稿指南——中文核心期刊推荐(建筑科学 2)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…