基于Java Mina 通信框架的JT/T809转发服务器设计
这个框架的优点:
– 异步
– 无阻塞
– 事件驱动
– 支持TCP, UDP, APR, 串口…
– 通过 过滤器(Filters)实现扩展性
– 同时提供协议框架
Netty也是一个高性能的框架,和Mina不分伯仲,不过对于809服务器,就两个链接,一个主连接,一个从连接,不像809网关服务器,接入几万台终端。所以在809系统中,用什么样的框架,都不重要。重要的是在809协议解析和应用层面上。
开发部标809协议从文档中一眼就可以看出,协议设计者把面向对象的思想带入到了协议当中,造成了协议的不容易阅读和不容易理解,但在协议本身的开发和实现非常适合用Mina框架。
809协议的设计者,考虑的东西太多了,造成了协议的复杂。同时转发服务器本身扮演者承上启下的角色,需要和808服务及政府运管平台进行交互,这样整个809的开发难度要远大于808服务,基于流程测试的难度就更大。

I/O Filter Chain - 这是一个由多个过滤器组成的过滤器链,在这个环节将字节数据转换到特定的数据结构中(Filters/Transforms bytes into desired Data Structures and vice-versa)
I/O Handler - 实际的业务逻辑部分,提供最终的OnMessageRecved事件,为外部所调用。
所以我们设计的时候,
1.首先要设计一个协议抽象类,他具有每一个协议命令的所有共性的属性。
2.可以在主链路发送的时候,设计一个编码过滤器,在从链路发送的时候,设计一个解码过滤器,分别对抽象类进行字节数组的转换。这样就可以了解决几十个协议的辛苦的解析和封装带来的繁杂工作量了。
IoAcceptor acceptor = new NioSocketAcceptor();
//记录发送和接收的809协议的原始16进制报文
acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );
//JT/T 809协议编码器
acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new JT809MessageCodecFactory( Charset.forName( "GBK" ))));
//JT?T 协议处理类
acceptor.setHandler( new JT809MessageHandler() ); acceptor.getSessionConfig().setReadBufferSize( 2048 );
acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );
acceptor.bind(new InetSocketAddress(PORT));
3.这样整个结构就非常清晰了, 由于过滤器是透明的,所以从外部接口来看是对类的发送和接收了,避免了重复编写底层转换代码。
4.剩下就是更加复杂的应用层面的工作了,需要设计和808服务交互的接口,在得到运管的请求的时候,能够调用808的数据,转发给运管,同时接收到运管的数据后,再转发给808. 每个协议命令不仅要逐一实现。还要考虑入库和转发给808服务。
提供809转发生产系统源码(已过检),同时包含上下级平台,可以互相模拟测试,也可以用下级平台发送数据,用上级平台来接收数据,收费1500元。需要JT 809源码的(C#、Java版本的都有, 可选其一)
可以联系我:2379423771@qq.com


基于Java Mina 通信框架的JT/T809转发服务器设计的更多相关文章
- 基于Java Mina 和Netty 通信框架的JT/T809转发服务器设计
Apache MINA 是 Apache 组织的一个开源项目,为开发高性能和高可用性的网络应用程序提供了非常便利的框架. 也是Java开发者的一个福利(.NET目前还没有类似封装的这么好的基础sock ...
- 基于Java Mina框架的部标808服务器设计和开发
在开发部标GPS平台中,部标808GPS服务器是系统的核心关键,决定了部标平台的稳定性和行那个.Linux服务器是首选,为了跨平台,开发语言选择Java自不待言. 我们为客户开发的部标服务器基于Min ...
- 基于Java Mina框架的部标jt808服务器设计和开发
在开发部标GPS平台中,部标jt808GPS服务器是系统的核心关键,决定了部标平台的稳定性和行那个.Linux服务器是首选,为了跨平台,开发语言选择Java自不待言.需要购买jt808GPS服务器源码 ...
- [转]9个基于Java的搜索引擎框架
9个基于Java的搜索引擎框架 在这个信息相当繁杂的互联网时代,我们已经学会了如何利用搜索引擎这个强大的利器来找寻目标信息,比如你会在Google上搜索情人节如何讨女朋友欢心,你也会在百度上寻找正规的 ...
- Java NIO通信框架在电信领域的实践
[http://www.codeceo.com/article/java-nio-communication.html] 华为电信软件技术架构演进 Java NIO框架在技术变迁中起到的关键作用 ...
- 9个基于Java的搜索引擎框架
在这个信息相当繁杂的互联网时代,我们已经学会了如何利用搜索引擎这个强大的利器来找寻目标信息,比如你会在Google上搜索情人节如何讨女朋友欢心,你也会在百度上寻找正规的整容医疗机构(尽管有很大一部分广 ...
- 基于Java Junit测试框架 + jmeter 做压力测试
1.JUnit 用户指南请查阅: https://junit.org/junit5/docs/current/user-guide/ 以一下代码为例:add接口 代码测试正常后,导出包: 下一步: j ...
- 基于 SOA 概念 RPC 框架 的 消息中心 云部署 设计 漫谈
一.背景 假设有一个系统的最大并发量有2000TPS左右.同时该系统有闲时和忙时,希望可以随时进行拓展和削减服务能力,以节省服务器费用开销. 该系统能提供站内消息.短信.app消息.邮箱的一个消息系统 ...
- 基于Java反射的map自动装配JavaBean工具类设计
我们平时在用Myabtis时不是常常需要用map来传递参数,大体是如下的步骤: public List<Role> findRoles(Map<String,Object> p ...
随机推荐
- Android 自定义View合集
自定义控件学习 https://github.com/GcsSloop/AndroidNote/tree/master/CustomView 小良自定义控件合集 https://github.com/ ...
- 转载:Android自动化测试- 自动获取短信验证码
前言:android应用的自动化测试必然会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码. 主要就是实时获取短信信息. android ...
- HBase如何选取split point
hbase region split操作的一些细节,具体split步骤很多文档都有说明,本文主要关注regionserver如何选取split point 首先推荐web ui查看hbase regi ...
- CentOS6.7安装Python3.4
1.下载Python3.4安装包 wget https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tgz 2.解压.编译.安装 .tgz cd Py ...
- Python中的高级特性
1.切片.使用“[”和“]”即可,类似Matlab,可以切list,tuple,字符串等. 2.迭代.Python内置的enumerate函数可以把一个list变成索引-元素对. 3.列表生成式.列表 ...
- css样式表分类、选择器分类、css基础样式
1 . 样式表 Cascading Style Sheet css优势: 内容与表现分离 网页的表现统一,容易修改 丰富的样式,使网页布局更加灵活 减少网页代码量,增加网页的浏览速度,节省 ...
- 网站开发常用cmd命令
一.Windows服务安装: framework 4.0 : cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 framework 2.0 : cd ...
- [转]windows下和Ubuntu下adb找不到设备的解决方法
最近在做flash手机项目,用fb选择android设备调试,总会出现找不到设备的情况.看了很多帖子都解决不了问题,后来终于研究出来是adb无法找到设备的问题.最后通知这篇帖子终于解决了问题. 使用电 ...
- 【Alpha】Daily Scrum Meeting第八次
一.本次Daily Scrum Meeting主要内容 抓紧冲刺(接下去两天都在下午增加一个小会议) 剩余任务的概况 二.项目进展 学号尾数 今日已完成任务 接下去要做 502 无 将数据库的数据转换 ...
- java 打印流(PrintStream)
打印流(PrintStream):打印流可以打印任意类型的数据,而且打印流在打印数据之前会将数据转为字符串在进行打印 PrintStream可以接受文件和其他字节输出流,所以打印流是对普通字节输出流的 ...