当前位置: 首页 > news >正文

外贸网站图片素材网站建设账务处理属于什么费用

外贸网站图片素材,网站建设账务处理属于什么费用,wordpress参考,随州程力网站建设一。技术改造背景 由于之前的比较陈旧的技术,后面发起了技术改造,redis整体改后使用redisson框架。 二。问题 改造完成后,使用方反馈 缓存获取异常 异常信息如下 Caused by: java.io.CharConversionException: Unexpected EOF in the mid…

一。技术改造背景

由于之前的比较陈旧的技术,后面发起了技术改造,redis整体改后使用redisson框架。

二。问题

改造完成后,使用方反馈 缓存获取异常 异常信息如下

Caused by: java.io.CharConversionException: Unexpected EOF in the middle of a 4-byte UTF-32 char: got 1, needed 4, at char #1, byte #5)
at com.fasterxml.jackson.core.io.UTF32Reader.reportUnexpectedEOF(UTF32Reader.java:187)
at com.fasterxml.jackson.core.io.UTF32Reader.loadMore(UTF32Reader.java:248)
at com.fasterxml.jackson.core.io.UTF32Reader.read(UTF32Reader.java:126)
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._loadMore(ReaderBasedJsonParser.java:276)
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._matchToken2(ReaderBasedJsonParser.java:2727)
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._matchToken(ReaderBasedJsonParser.java:2707)
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._handleOddValue(ReaderBasedJsonParser.java:1986)
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextToken(ReaderBasedJsonParser.java:802)
at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4761)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4667)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3666)
at org.redisson.codec.JsonJacksonCodec$2.decode(JsonJacksonCodec.java:99)
at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:393)
at org.redisson.client.handler.CommandDecoder.decodeCommand(CommandDecoder.java:205)
at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:144)
at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:120)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:519)
at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:366)

三。问题定位

从日志上来看 解密失败了,回头看未改造的redis 存储的序列化方式是 hessian 而改造后的 redis存储的序列化方式是JsonJacksonCodec 导致反序列化报错

四。问题解决

具体问题定位到了后 解决办法就已经有了。

  • 修改redisson的序列化方式 保持和旧的序列化方式相同
  • 做缓存迁移或者缓存全量失效(理论来讲不太现实)

那这个很明显,选择修改redisson的序列化方式 保持和旧的序列化方式相同。
redison目前支持的 序列化方式

Codec class nameDescription
org.redisson.codec.Kryo5CodecKryo 5 binary codec (Android compatible) Default codec
org.redisson.codec.KryoCodecKryo 4 binary codec
org.redisson.codec.JsonJacksonCodecJackson JSON codec. Stores type information in @class field (Android compatible)
org.redisson.codec.TypedJsonJacksonCodecJackson JSON codec which doesn’t store type id (@class field) during encoding and doesn’t require it for decoding
org.redisson.codec.AvroJacksonCodecAvro binary json codec
org.redisson.codec.SmileJacksonCodecSmile binary json codec
org.redisson.codec.CborJacksonCodecCBOR binary json codec
org.redisson.codec.MsgPackJacksonCodecMsgPack binary json codec
org.redisson.codec.IonJacksonCodecAmazon Ion codec
org.redisson.codec.SerializationCodecJDK Serialization binary codec (Android compatible)
org.redisson.codec.LZ4CodecLZ4 compression codec. Uses Kryo5Codec for serialization by default
org.redisson.codec.SnappyCodecV2Snappy compression codec based on snappy-java project. Uses Kryo5Codec for serialization by default
org.redisson.codec.MarshallingCodecJBoss Marshalling binary codec Deprecated!
org.redisson.client.codec.StringCodecString codec
org.redisson.client.codec.LongCodecLong codec
org.redisson.client.codec.ByteArrayCodecByte array codec
org.redisson.codec.CompositeCodecAllows to mix different codecs as one

很意外并没有 我们需要的hessian的序列化 只能手写! redisson 默认的序列化方式为Kryo5Codec

首先引入依赖

<dependency><groupId>com.caucho</groupId><artifactId>hessian</artifactId><version>4.0.66</version>
</dependency>

其次继承 BaseCodec 实现我们的 HessianCoder 即可 完整的实现如下

import com.caucho.hessian.io.HessianInput;
import com.caucho.hessian.io.HessianOutput;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;
import io.netty.buffer.ByteBufInputStream;
import io.netty.buffer.ByteBufOutputStream;
import lombok.extern.slf4j.Slf4j;
import org.redisson.client.codec.BaseCodec;
import org.redisson.client.handler.State;
import org.redisson.client.protocol.Decoder;
import org.redisson.client.protocol.Encoder;import java.io.IOException;/*** 自定义实现 Hessian 序列化 兼容原有的序列化方式** @author leon* @date 2023-08-10 15:14:03*/
@Slf4j
public class HessianCoder extends BaseCodec {private final Encoder encoder = new Encoder() {@Overridepublic ByteBuf encode(Object in) throws IOException {try (ByteBufOutputStream os = new ByteBufOutputStream(ByteBufAllocator.DEFAULT.buffer())) {HessianOutput ho = new HessianOutput(os);ho.writeObject(in);return os.buffer();} catch (Exception e) {log.error("Hessian序列化异常: {}", e.getMessage(), e);throw new IOException(e);}}};private final Decoder<Object> decoder = new Decoder<Object>() {@Overridepublic Object decode(ByteBuf buf, State state) throws IOException {try (ByteBufInputStream inputStream = new ByteBufInputStream(buf)) {HessianInput hi = new HessianInput(inputStream);return hi.readObject();} catch (Exception e) {log.error("Hessian反序列化异常: {}", e.getMessage(), e);throw new IOException(e);}}};@Overridepublic Decoder<Object> getValueDecoder() {return decoder;}@Overridepublic Encoder getValueEncoder() {return encoder;}
}

最后修改我们的redisson配置 将序列化方式替换为HessianCoder 即可

在进行测试获取缓存 也没报错了。

参考官方文档:https://github.com/redisson/redisson/wiki/4.-data-serialization

http://www.yayakq.cn/news/56582/

相关文章:

  • 网站浏览量怎么查看建大型网站费用
  • 在线html网站开发个人可以建门户网站吗
  • 盐城网站建设jsxmtwordpress主体开源多少钱
  • 盐城网站设计公司什么叫营销模式
  • 汉服网站的建设做网站一般几个人
  • 一站式平台网站开发技术北京建站公司兴田德润信任
  • 东北网站建设公司网站前台模板怎么替换
  • 免费动态图片素材网站c 网站设计
  • 杭州网站制作维护珠海网站品牌设计公司哪家好
  • 网站开发职位介绍做公司网站有什么猫腻
  • 北京昌平网站设计个人网站包括哪些内容
  • 漳州最便宜的网站建设价格seo顾问服务四川
  • 广西免费网站制作建设网站一般多钱
  • 做创新方法工作网站做百度推广得用网站是吗
  • 成都网站优化公司展览公司
  • 路由器通过域名解析做网站gta5买资产网站在建设
  • 个人网站做装修可以吗网站整体架构
  • wordpress安装后查看站点失败怎么查询网站备案
  • 展示型型网站建设全球华设计大赛
  • 郓城县建设局网站收费抽奖网站
  • wordpress建设软件下载站WordPress防战工具
  • 网页设计精品课程网站网站营销建设方案
  • 开题报告旅游网站开发如何制作一个静态网站源码
  • 佛山网站搜索排名软装设计网站有哪些
  • 网站建设软文模板网站建设商城模板下载
  • 上海建设网站便宜的贵港住房城乡建设厅网站
  • WordPress邮箱内容修改seo培训多少钱
  • 镇江网站建设dmooo我要自学网视频教程
  • 网站设计风格评价落实网站建设管理
  • 米拓模板网站建设做网站字体用什么格式