本项目为作者本人因公司需要自行开发支持百万级并发
整个项目分为三部分:
(1) common 是公用的jar包, 作为一个工程,方便各个项目引用(在eclipse中,一个项目可以引用另一个项目中所使用的jar包)
(2) gpsservice主要是Hibernate实体类和在此之上封装的DAO层和服务层,提供数据的增删改查服务和其他逻辑计算服务. 是一个类库,不能独立运行,只能被调用。
(3)jt808server,是GPS通信服务,主要功能如下:
- 接收、解析、入库符合808协议的终端的GPS数据
- 接收平台的调用指令,然后对终端下发指令,如监听、拍照等等;
- 报警分析,对GPS数据进行分析,形成报警记录,并实时推送给客户端;
- 统计,对GPS数据进行里程统计、上线率统计、报警统计等.
框架封装了一系列操作
例如:协议解码器解析Socket接收到的底层字节数据,解析出完整的808协议数据包,处理粘包、断包情况,避免错误包和丢包。
支持拍照 gps定位 收发消息.....
public boolean StartServer() {
// 启动服务器
boolean res = getJt808Server().start();
if (res) {
// 启动命令解析器,从数据库中读取命令进行解析
//getCommandService().setBaseDao(ServiceLauncher.getBaseDao());
getCommandService().Start();
this.commandService.setOnRecvCommand(new ICommandHandler(){
@Override
public boolean OnRecvCommand(T808Message tm, TerminalCommand tc) {
if(getJt808Server().isOnline(tc.getSimNo()) == false)
{
tc.setStatus(TerminalCommand.STATUS_OFFLINE);
return false;
}else
{
boolean res = Send(tm);
tc.setSN(tm.getHeader().getMessageSerialNo());
tc.setStatus(res ? TerminalCommand.STATUS_PROCESSING :
TerminalCommand.STATUS_FAILED);
return res;
}
}
});
//应答服务,调用Server,发送应答数据包
ackService.setMessageSender(new IMessageSender(){
@Override
public void Send808Message(T808Message tm) {
Send(tm);
}
});
//if(transferGpsService.sta)
transferGpsService.start();
//processRealDataThread.start();
}
return res;
}