一种基于java的网络传输协议转换中间件的制作方法

文档序号:9202722阅读:445来源:国知局
一种基于java的网络传输协议转换中间件的制作方法
【技术领域】
[0001]本发明涉及计算机应用领域,主要应用于web服务器与基于Socket的远程控制系统之间的通信。
【背景技术】
[0002]WEB服务器一般基于HTTP协议实现,通过浏览器提供用户交互界面,能够克服客户端软件可移植性差的缺点。当存在通过浏览器页面上操作控制远程设备的需求时,往往需要与非HTTP协议的远程控制系统进行通信。由于通信协议不兼容,远程控制系统无法直接与WEB服务器建立连接,需要通过中间件实现控制命令的转发。
[0003]中间件作为服务器端,接收WEB服务器和远程控制系统的连接请求,并实现控制命令与控制响应的转发。高效网络模型能够提高中间件的处理能力。JAVA Selector模型用于实现事件驱动的非阻塞网络通信,底层基于epoll实现,通过ServerSocketChannel创建ServerSocket,并向Selector注册该通道的读/写事件,注册时可将一个Object对象作为附件提交。当事件触发时,程序可获得一个Select1nKey,并从中读取触发事件的通道和之前提交的附件。
[0004]基于阻塞队列和线程组实现的生产者-消费者模型,可用于中间件的任务处理。生产者线程向阻塞队列中填充待处理的队列项,当队列满时,线程挂起,直到队列有多余空间产生,线程被唤醒,完成队列项的插入;消费者线程从队列中读取队列项,若队列为空,则线程挂起,直到队列中有新的队列项插入。阻塞队列有效实现了生产者与消费者程序的解親。

【发明内容】

[0005]本发明的目的在于针对现有技术的不足,提供一种基于JAVA的网络传输协议转换中间件。
[0006]本发明的目的是通过以下技术方案来实现的:一种基于JAVA的网络传输协议转换中间件,该中间件包括HTTP Server模块、HTTP命令解析模块、控制命令构建模块和Socket Server 模块,其中:
所述HTTP Server模块基于Selector模型实现,接收web服务器的控制请求并返回控制响应;
所述HTTP命令解析模块包括HTTP命令解析队列和HTTP命令解析线程组,根据HTTPServer模块接收的控制请求解析出实现控制所需的参数;
所述控制命令构建模块包括命令构建队列和命令构建线程组,根据HTTP命令解析模块解析出的控制参数构建远程控制系统能够识别的控制命令;
所述Socket Server模块基于Selector模型实现,包括Socket解析队列和Socket解析线程组,向远程控制系统转发控制命令构建模块构建的控制命令,接收控制响应并转发给 HTTP Server 模块; 各模块工作步骤如下:
(1)创建HTTP命令解析模块、控制命令构建模块和SocketServer模块所需的阻塞队列和线程组,各类阻塞队列与线程组构成生产者-消费者模式,线程组由newCachedThreadPool 线程池创建;
(2)启动HTTPServer模块和Socket Server模块,并在各自的Selector上注册读事件;SoCket Server模块检测到读事件,即远程控制系统的连接请求,读取远程控制系统用户名和参数,进行用户认证;认证成功后,以用户名作为key,将触发读事件的套接字描述符存入远程控制系统哈希表;HTTP Server模块检测到读事件,将触发事件的套接字描述符插入到HTTP命令解析队列;
所述用户认证通过查询数据库中的用户名和密码完成;远程控制系统哈希表基于ConcurrentHashMap 实现;
(3)HTTP命令解析线程读取套接字上的数据包,并解析出控制所需的参数,构建命令参数数据包,将其插入到命令构建队列;所述命令参数数据包中包括命令参数和HTTP描述符;
(4)命令构建线程从命令构建队列中读取命令参数数据包,获得远程控制系统用户名,并根据用户名从远程控制系统哈希表中获得Socket套接字描述符,构建控制命令包,将其作为附件注册套接字描述符的写事件;所述控制命令包由控制命令字段和HTTP描述符构成;
(5)SocketServer模块检测到套接字描述符写事件,将控制命令包中的控制命令字段发送给远程控制系统,并以控制命令包中的HTTP描述符为附件,注册该套接字描述符的读事件;
(6)Socket Server模块检测到读事件,即远程控制系统响应,将触发事件的套接字描述符插入到Socket解析队列;
(7)Socket解析线程从套接字上读取数据包并进行解析,构建响应数据包;从附件中获取HTTP套接字描述符,以响应数据包为附件,注册该描述符的写事件;
(8)HTTP Server模块检测到写事件,将附件中的响应数据包发送给Web服务器。
[0007]进一步地,所述Socket Server模块在处理读事件时,根据Socket解析线程从数据包中解析出的远程控制系统用户名,在远程控制系统哈希表中查找以该用户名为key的套接字描述符项,若存在则线程进行响应解析操作,否则进行用户认证操作。
[0008]本发明的有益效果:实现不同协议系统(基于HTTP协议的WEB服务器与基于Socket的远程系统)之间的数据通讯。
【具体实施方式】
[0009]本发明一种基于JAVA的网络传输协议转换中间件,包括HTTP Server模块、HTTP命令解析模块、控制命令构建模块和Socket Server模块,其中:
所述HTTP Server模块基于Selector模型实现,接收web服务器的控制请求并返回控制响应;
所述HTTP命令解析模块包括HTTP命令解析队列和HTTP命令解析线程组,根据HTTPServer模块接收的控制请求解析出实现控制所需的参数; 所述控制命令构建模块包括命令构建队列和命令构建线程组,根据HTTP命令解析模块解析出的控制参数构建远程控制系统能够识别的控制命令;
所述Socket Server模块基于Selector模型实现,包括Socket解析队列和Socket解析线程组,向远程控制系统转发控制命令构建模块构建的控制命令,接收控制响应并转发给 HTTP Server 模块;
各模块工作步骤如下:
(1)创建HTTP命令解析模块、控制命令构建模块和SocketServer模块所需的阻塞队列和线程组,各类阻塞队列与线程组构成生产者-消费者模式,线程组由newCachedThreadPool 线程池创建;
(2)启动HTTPServer模块和Socket Server模块,并在各自的Selector上注册读事件;SoCket Server模块检测到读事件,即远程控制系统的连接请求,读取远程控制系统用户名和参数,进行用户认证;认证成功后,以用户名作为key,将触发读事件的套接字描述符存入远程控制系统哈希表;HTTP Server模块检测到读事件,将触发事件的套接字描述符插入到HTTP命令解析队列;
所述用户认证通过查询数据库中的用户名和密码完成;远程控制系统哈希表基于ConcurrentHashMap 实现;
(3)HTTP命令解析线程读取套接字上的数据包,并解析出控制所需的参数,构建命令参数数据包,将其插入到命令构建队列;所述命令参数数据包中包括命令参数和HTTP描述符;
(4)命令构建线程从命令构建队列中读取命令参数数据包,获得远程控制系统用户名,并根据用户名从远程控制系统哈希表中获得Socket套接字描述符,构建控制命令包,将其作为附件注册套接字描述符的写事件;所述控制命令包由控制命令字段和HTTP描述符构成;
(5)SocketServer模块检测到套接字描述符写事件,将控制命令包中的控制命令字段发送给远程控制系统,并以控制命令包中的H
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1