DeserializationViewer使用说明

发布于:2025-06-25 ⋅ 阅读:(13) ⋅ 点赞:(0)

介绍

一、为什么有这个工具
传统序列化数据(jdk序列化,protbuf等协议) ,存储在缓存(redis,文件等)中无法直接解析,想要获取明文数据必须依赖原始DTO,并且必须实现序列化接口Serilizable,且serilizationUID必须相同,否则直接报异常。如果不同的序列化数据要实现转换,没有办法做到通用性。这大大提升了线上数据问题排查,跨系统接口对接的难度,而原生java没有提供相应的解决办法,所以需要用新的工具来解决。

二,这个工具是怎么实现的
ldl-DeserializationViewer,一款缓存序列化数据可视化查询和开发工具,采用javaassist和asm字节码生成技术,支持jdk等序列化协议(其他协议正在开发中)直接转换成json,而无需依赖定义源DTO类,无需依赖serializable接口及serialVersionUID。可用于线上运维序列化数据可视化,接口开发数据适配。支持种打包方式,springboot包:配合swagger通过web端访问;普通jar包:直接运行脚本,获取序列化数据可视化结果。

软件架构说明:

项目开源地址:https://gitee.com/luliang111222/ldl-DeserializationViewer

实现效果举例

JDK序列化数据源(乱码):

�� sr 1com.datalight.tools.deserialization.model.TestDto��c�� L idt Ljava/lang/Long;L namet Ljava/lang/String;L otherInfoq ~ xpsr java.lang.Long;��̏#� J valuexr java.lang.Number������ xp t 姓名t 学生

ldl-DeserializationViewer 反序列化引擎->json格式的直接转换:

{"id":1,"name":"姓名","otherInfo":"学生"}

三、springboot方式安装和使用
3.1  配置

不同环境redis服务的地址端口,如果redis设置了密码需配置密码;

在springboot项目的application.properties下指定window或linux的hostconfig.properties配置文件路径,server.port默认为8087可以修改,例如:

hostconfig.properties文件的内容示例如下:

其中DEV和TEST表示不同发布环境,可以根据需要进行添加;

#号后面是不同环境的访问地址和端口,如果是集群节点之间用逗号(,)隔开;

@符后面是对应单机或集群配置的密码,如果配置了密码需要设置,如果没配置可以为空;

3.2 打包

在项目路径的pom.xml文件启用spring-boot-maven-plugin打包插件,注释maven-assembly-plugin插件,使其生成springboot的服务包。 

maven打包后生成deserialization-viewer-0.0.1-SNAPSHOT.jar

3.3 发布

把hostconfig.properties上传到对应服务的文件目录,如果目录不存在需要新建;

把deserialization-viewer-0.0.1-SNAPSHOT.jar上传到服务器目录,用shell命令进入该目录,执行java -jar redis-aliyun-0.0.1-SNAPSHOT.jar &  命令发布服务, &符表示后台运行。

3.4 使用

前端采用swagger页面,访问路径为http://ip:port/deserialization/swagger-ui.html#

四,控台方式的使用

4.1 配置

参考springboot的方式配置

4.2 打包

注释spring boot 打包插件,启用控制台打包

生成jar包如下:

4.3 使用

根据ip和端口号使用示例如下:

Java -jar .\deserialization-viewer-0.0.1-SNAPSHOT-jar-with-dependencies.jar 192.168.2.18:7004 testKey

192.168.2.18:7004 是redis服务器的地址和ip如果设置密码可以在后面跟@密码方式,参考springboot的方式;

testKey是要查询的redis的key。

根据环境配置使用示例如下:

Java -jar .\deserialization-viewer-0.0.1-SNAPSHOT-jar-with-dependencies.jar  TEST  testKey

结语

目前本项目已完成Json和JDK反序列化和redis数据源的开发,其他序列化协议方式正在开发中,致力于提供不同序列化协议的数据转换中间件,及数据运维工具。

 项目开源地址:https://gitee.com/luliang111222/ldl-DeserializationViewer
 


网站公告

今日签到

点亮在社区的每一天
去签到