- 新增
DynamicFieldBasedJt808MsgEncoder
Jt808CommandSender
新增接方法:sendCommand(Metadata, List<DynamicField>)
sendCommandWithDynamicFields(Metadata, List<Map<String,Object>>)
sendCommandAndWaitingForReply(Jt808CommandKey, Metadata, List<DynamicField>, Duration)
sendCommandWithDynamicFieldsAndWaitingForReply
DispatcherHandler
未释放空消息的问题
- 修复 JDK8 环境下启动异常的问题
新增业务线程池: jt808.msg-handler
下面模块的最低 JDK 版本从 11
改为 8
:
- jt-core
- jt-808-server-support
- jt-808-server-spring-boot-autoconfigure
- jt-808-server-spring-boot-starter-boot2
- jt-1078-server-support
- jt-1078-server-spring-boot-autoconfigure
- jt-1078-server-spring-boot-starter-boot2
BitOperator
新增方法:
mapIf(...)
setIf(...)
setWithStatus(...)
setWithStatusIf(...)
setRangeIf(...)
resetIf(...)
resetRangeIf(...)
unsignedLongValue(...)
rangedUnsignedIntValue(...)
rangedUnsignedLongValue(...)
BitOperator
操作 offset >= 31
的 bit
时溢出的问题,涉及到的方法如下:
BitOperator#set(int offset)
BitOperator#reset(int offset)
BitOperatorget(int offset)
oaks-common-utils
升级到 1.0.7
- 完善
Jt808MsgBuilder
- 新增
RebuildableByteBufJt808MsgBuilder
Gradle
: 8.6 升级到 8.8spring-boot-dependencies
- 2.7.14 升级到 2.7.18
- 3.1.2 升级到 3.3.0
spring-cloud-dependencies
- 2021.0.8 升级到 2021.0.9
- 2022.0.4 升级到 2023.0.2
- 新增消息加解密相关文档
- 新增
RebuildableByteBufJt808MsgBuilder
相关文档
初步支持消息加解密,详情见: #82
- 新增
Jt808MsgEncryptionHandler
@Jt808ResponseBody
新增encryptionType(int)
属性Jt808Response
新增encryptionType(int)
属性Jt808MsgBuilder
新增encryptionType(int)
属性
- 解决
ExtendedJt808FieldDeserializerLocationExtraItem
没有考虑length
属性的问题
- 优化苏标附件服务器的支持
- 支持位置附加项列表注解
@RequestFieldAlias.LocationMsgExtraItemMapping()
- 新增
@RequestField#conditionalOn()
属性 - 内置几个和苏标相关的实体类
- 支持苏标附件服务器
BuiltinCommonHandler.processTerminalHeartBeatMsg
应该回复0x8001
消息,而不是不回复消息
- 参见 #78
参见 2.1.1-RC1、2.1.1-RC2、2.1.1-RC3 中的所有变更。
jt808.features.program-param-printer.enabled = false
的时候 classpath 下没有Jackson
依赖时报错的问题。
- 完善
BitOperator
辅助类 @SlicedFrom
支持long
类型
内置示例消息的 @RequestField
注解去掉 startIndex
属性(2.1.1 开始不再需要该属性)。
对 2.1.1-RC1 中新增特性的简化。
- 支持通过 注解别名 来扩展
@RequestField
和@ResponseField
- 并内置了
@RequestFieldAlias
和@ResponseFieldAlias
别名 - 现在你可以自定义注解来扩展自定义的数据类型,比如可以自定义一种
LWord
(LongWord
,64bit
) 类型
- 并内置了
- 扩展注解别名:
@RequestFieldAlias
和@ResponseFieldAlias
- 支持
MsgDataType#BYTES
和java.lang.String
互转 Geo
类型(经纬度)支持转换为long/Long
、double/Double
、BigDecimal
- 表达时间语义的
BCD
可以转换为java.lang.String
、java.util.Date
、java.time.LocalDateTime
java.util.Date
和java.time.LocalDateTime
可以转为BCD
- 支持
Jt808FieldDeserializer
扩展Context
参数,方便自定义注解Jt808FieldSerializer
扩展Context
参数,方便自定义注解- 新增
Jt808RequestFilter
(需要配置jt808.features.request-filter.enabled=true
) 支持 - 新增
BitOperator
, 支持将WORD
,DWORD
,BYTE
反序列化为BitOperator
- 废弃
BytesValueWrapper
- 使用
ByteBufContainer
或ByteArrayContainer
代替 - 内置
ByteBufContainer
或ByteArrayContainer
的类型转换器
- 使用
- 新增如下示例消息(按需修改)
BuiltinMsg8103
BuiltinMsg8103Alias
BuiltinMsg8100Alias
BuiltinMsg8300
BuiltinMsg8300Alias
BuiltinMsg8600V2011Alias
BuiltinMsg8600V2013Alias
BuiltinMsg8600V2019Alias
BuiltinMsg8602V2011Alias
BuiltinMsg8602V2013Alias
BuiltinMsg8602V2019Alias
BuiltinMsg8604V2011Alias
BuiltinMsg8604V2013Alias
BuiltinMsg8604V2019Alias
@RequestField#length()
支持返回0
- 内置的空的心跳消息
BuiltinMsg0200
改名为BuiltinMsg0002
(之前命名错误)
jt808.msg-processor.executor-group.thread-count
默认值改为128
- 新增配置项
jt808.features.program-param-printer.enabled
- 参见 2.1.0-RC2 和 2.1.0-RC1 的改动记录
settings.gradle
中删除docs
子模块(无需 gradle 管理)
- jt-808-server-spring-boot-starter 模块
- 排除 jt-808-server-spring-boot-autoconfigure 中自带的 2.x 版的 spring-boot
- 显式引入 3.x 版的 spring-boot
从 2.1.x 开始,同时支持 spring-boot-2.x 和 spring-boot-3.x。
提供的 starter
的 JDK 版本、spring-boot 版本限制如下:
Module | JDK | spring-boot | Desc |
---|---|---|---|
jt-808-server-spring-boot-starter-boot2 |
11+ |
[2.2.x, 2.6.x] |
为 spring-boot-2.x 提供的 starter |
jt-808-server-spring-boot-starter |
17+ |
[3.0.0, ...] |
为 spring-boot-3.x 提供的 starter |
变更如下:
- 1). 模块名称拼写错误修改
- 2.0.x 中的
jt-808-server-spring-boot-stater
有单词拼写错误(😂): starter 写成了 stater - 在 2.1.x 中改成了
jt-808-server-spring-boot-starter-boot2
- stater 修改为 starter
- 添加了 -boot2 后缀,表示这个模块是给 spring-boot-2.x 提供的
- 2.0.x 中的
- 2). JDK版本 和 spring-boot版本 修改
jt-808-server-spring-boot-starter
- 给 spring-boot-3.x 的项目提供的,是本次新增的模块
JDK
: 17- 编译之后的
.class
文件版本 : 61(JDK-17) spring-boot
: 3.0.2- 单独依赖该模块时必须满足:
jdk.version >=17 && spring-boot.version >= 3.0.0
jt-808-server-spring-boot-starter-boot2
- 给 spring-boot-2.x 的项目提供的,是从之前的
jt-808-server-spring-boot-stater
重命名过来的 JDK
: 17- 编译之后的
.class
文件版本 : 55(JDK-11) spring-boot
: 2.6.14- 单独依赖该模块时必须满足:
jdk.version >= 11 && spring-boot.version >= 2.2.x && spring-boot.version <= 2.6.x
- 给 spring-boot-2.x 的项目提供的,是从之前的
- 3). spring-boot版本 升级
- 从 2.5.12 升级到 2.6.24
- 新增了 spring-boot-3.x 的支持
Gradle
版本升级到 7.6Spring-Boot
版本升级到 2.6.14
Jt808Session
新增如下方法:setAttribute
getAttribute
getRequiredAttribute
removeAttribute
Jt808ServerExchange
新增如下方法removeAttribute
- #66
- 配置项默认值调整:
jt808:
server:
idle-state-handler:
# 改动原因见 https://github.com/hylexus/jt-framework/issues/66
writer-idle-time: 0s # 由 20m 改为 0s(disabled)
all-idle-time: 0s # 由 20m 改为 0s(disabled)
- 新增
Jt808RequestLifecycleListener
- 新增 Jt808RequestLifecycleListener 文档
- 新增 辅助工具 文档
- 新增
Jt808MsgBuilder
- 新增
ByteArrayFieldSerializer
Spring-Boot
版本升级到 2.5.12
- 去掉
EventBus
,业务线程池使用自定义的EventExecutorGroup
- 废弃
jt808.msg-processor.thread-pool.xxx
配置项,使用jt808.msg-processor.executor-group.xxx
代替
Gradle
版本升级到 6.8.1Spring-Boot
版本升级到 2.5.7Netty
版本升级到 4.1.75.Final
- 注解驱动开发(支持
SpEL
) - 支持消息分包
- 支持多版本
新增 2.x 文档。
新增配置项:
jt808.server.idle-state-handler
: 对应io.netty.handler.timeout.IdleStateHandler
的 三个属性:readerIdleTime
、writerIdleTime
、allIdelTime
。 默认值都是20m
;jt808.protocol.max-frame-length
: 对应io.netty.handler.codec.DelimiterBasedFrameDecoder
的maxFrameLength
属性。
新增 io.github.hylexus.jt.msg.builder.jt808.Jt808MsgBuilder
- #28
- @Jt808RequestMsgConverter
- @Jt808RequestMsgHandler
@NestedFieldMapping
支持List类型 (#25)
- 文档更新
- 支持2019版:
jt808.protocol.version
@NestedFieldMapping
bug
- 文档更新
- 修改自定义配置的方式
- 旧版的
Jt808ServerConfigure
容易引发Bean的循环依赖 - 从1.0.7-RELEASE开始,使用
Jt808ServerConfigurationSupport
来自定义配置
- 旧版的
- Maven依赖的
scope
从runtime
改为compile
,涉及到的依赖如下:- Netty
- oaks-lib
- #18
- BytesEncoder转义bug
- Jt808Session#setChannel
- BytesEncoder支持校验码逻辑自定义
Jt808SessionManager
重构,支持自定义
- SessionManager#removeBySessionIdAndClose 的bug
CommandSender
文档完善
MsgHandler
可选择性地交给Spring管理,以便于在MsgHandler
中调用其他的由Spring管理的Bean
- 优化
Session#currentFlowId
- 新增
SessionManager#findBySessionId
MsgHandler
可选择性地交给Spring管理,以便于在MsgHandler
中调用其他Bean- bug-fix: #16,#17
- decoder: 嵌套类型丢失数据 (#b1a8eaca, closes #2)
- docs(todo-list): README.md,CHANGELOG.md
- ExceptionHandler
- tmp
- docs
- CustomReflectionBasedRequestMsgBodyConverter
- docs
- docs
- docs
- OrderedComponent
- HandlerMethodArgumentResolver
- ReflectionBasedRequestMsgHandler
- maven-config
- README.md
- docs
- docs
- deploy docs
- deploy docs
- deploy docs
- docs
- tmp
- docs
- Jt808DefaultEnvironmentPostProcessor
- docs
- docs
- tmp
- docs
- BytesEncoder
- docs
- docs
- docs
- @EnableJt808ServerAutoConfig
- samples
- samples
- tmp
- tmp
- tmp
- tmp
- tmp
- tmp
- CommandWaitingPool
- tmp
- @SlicedFrom
- oaks-lib --> 1.0.4
- DataType
- @SliceFrom
- SplittableField
- 附加消息解析
- init vue-press
- rename 'jt-platform' to 'jt-framework'
- 扁平化解析附加消息
- 重构消息解析代码
- tmp
- RequestMsgHeaderAware
- tmp
- tmp
- delete LocalMsgQueue
- boot-auto-configure
- boot-auto-configure
- auto-configure
- component-scan
- auto config
- init spring-boot-starter
- tmp
- bug-fix
- sessionManager
- sessionManager
- eventBus
- MsgDispatcher
- migrate to gradle
- tmp
- init