[发明专利]一种基于JAVA的网络传输协议转换中间件有效
申请号: | 201510187186.0 | 申请日: | 2015-04-21 |
公开(公告)号: | CN104917814B | 公开(公告)日: | 2018-05-01 |
发明(设计)人: | 王友钊;黄静 | 申请(专利权)人: | 浙江大学 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;H04L29/06 |
代理公司: | 杭州求是专利事务所有限公司33200 | 代理人: | 邱启旺 |
地址: | 310058 浙江*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 java 网络 传输 协议 转换 中间件 | ||
技术领域
本发明涉及计算机应用领域,主要应用于web服务器与基于Socket的远程控制系统之间的通信。
背景技术
WEB服务器一般基于HTTP协议实现,通过浏览器提供用户交互界面,能够克服客户端软件可移植性差的缺点。当存在通过浏览器页面上操作控制远程设备的需求时,往往需要与非HTTP协议的远程控制系统进行通信。由于通信协议不兼容,远程控制系统无法直接与WEB服务器建立连接,需要通过中间件实现控制命令的转发。
中间件作为服务器端,接收WEB服务器和远程控制系统的连接请求,并实现控制命令与控制响应的转发。高效网络模型能够提高中间件的处理能力。JAVA Selector模型用于实现事件驱动的非阻塞网络通信,底层基于epoll实现,通过ServerSocketChannel创建ServerSocket,并向Selector注册该通道的读/写事件,注册时可将一个Object对象作为附件提交。当事件触发时,程序可获得一个SelectionKey,并从中读取触发事件的通道和之前提交的附件。
基于阻塞队列和线程组实现的生产者-消费者模型,可用于中间件的任务处理。生产者线程向阻塞队列中填充待处理的队列项,当队列满时,线程挂起,直到队列有多余空间产生,线程被唤醒,完成队列项的插入;消费者线程从队列中读取队列项,若队列为空,则线程挂起,直到队列中有新的队列项插入。阻塞队列有效实现了生产者与消费者程序的解耦。
发明内容
本发明的目的在于针对现有技术的不足,提供一种基于JAVA的网络传输协议转换中间件。
本发明的目的是通过以下技术方案来实现的:一种基于JAVA的网络传输协议转换中间件,该中间件包括HTTP Server模块、HTTP命令解析模块、控制命令构建模块和Socket Server模块,其中:
所述HTTP Server模块基于Selector模型实现,接收web服务器的控制请求并返回控制响应;
所述HTTP命令解析模块包括HTTP命令解析队列和HTTP命令解析线程组,根据HTTP Server模块接收的控制请求解析出实现控制所需的参数;
所述控制命令构建模块包括命令构建队列和命令构建线程组,根据HTTP命令解析模块解析出的控制参数构建远程控制系统能够识别的控制命令;
所述Socket Server模块基于Selector模型实现,包括Socket解析队列和Socket解析线程组,向远程控制系统转发控制命令构建模块构建的控制命令,接收控制响应并转发给HTTP Server模块;
各模块工作步骤如下:
(1)创建HTTP命令解析模块、控制命令构建模块和Socket Server模块所需的阻塞队列和线程组,各类阻塞队列与线程组构成生产者-消费者模式,线程组由newCachedThreadPool线程池创建;
(2)启动HTTP Server模块和 Socket Server模块,并在各自的Selector上注册读事件;Socket Server模块检测到读事件,即远程控制系统的连接请求,读取远程控制系统用户名和参数,进行用户认证;认证成功后,以用户名作为key,将触发读事件的套接字描述符存入远程控制系统哈希表;HTTP Server模块检测到读事件,将触发事件的套接字描述符插入到HTTP命令解析队列;
所述用户认证通过查询数据库中的用户名和密码完成;远程控制系统哈希表基于ConcurrentHashMap实现;
(3)HTTP命令解析线程读取套接字上的数据包,并解析出控制所需的参数,构建命令参数数据包,将其插入到命令构建队列;所述命令参数数据包中包括命令参数和HTTP描述符;
(4)命令构建线程从命令构建队列中读取命令参数数据包,获得远程控制系统用户名,并根据用户名从远程控制系统哈希表中获得Socket套接字描述符,构建控制命令包,将其作为附件注册套接字描述符的写事件;所述控制命令包由控制命令字段和HTTP描述符构成;
(5)Socket Server模块检测到套接字描述符写事件,将控制命令包中的控制命令字段发送给远程控制系统,并以控制命令包中的HTTP描述符为附件,注册该套接字描述符的读事件;
(6)Socket Server模块检测到读事件,即远程控制系统响应,将触发事件的套接字描述符插入到Socket解析队列;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510187186.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种政治教学用对比展示板
- 下一篇:秒表笔