Java 0 篇文章

优雅地记录 http 请求和响应的数据

经常会遇到需要处理 http 请求以及响应 body 的场景。而这里比较大的一个问题是 servlet 的 requestBody 或 responseBody 流一旦被读取了。就无法二次读取了。针对这个问题,Spring 本身提供了解决方案,即 ContentCachingRequestWrapper/ContentCachingResponseWrapper。我们编写一个过滤器:publicabstractclassH

遇到 400、500 错误不要慌

很多人都会在平时开发过程中遇到 400 或 500 异常,并且也没有走到服务端 controller 中,就变得有些不知所措。我们知道 SpringMVC 从 DispatchServlet 开始接收与分发请求,从入口开始 debug,还能找不到问题所在么?从 DispatchServlet 的 doDispatch()方法开始处理请求:protectedvoiddoDispatch(HttpServletRequestreq

JAVA 线上故障排查全套路

JAVA 线上故障排查全套路
线上故障主要会包括 CPU、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如 jstack、jmap 等工具也是不囿于一个方面的问题的,基本上出问题就是 df、free、top 三连,然后依次 jstack、jmap 伺候,具体问题具体分析即可。CPU 一般来讲我们首先会排查 CPU 方面的问题。CPU 异常往往还是比较好定位的。原因包括业务逻辑问题(死

浅析高性能序列化协议 Kryo

Kryo 是一个高性能的序列化/反序列化工具,由于其变长存储特性并使用了字节码生成机制,拥有较高的运行速度和较小的体积,在某些场景中成为了除 JSON、Protobuf 之外的选择。依赖首先我们引入 maven 的相关依赖:<dependency><groupId>com.esotericsoftware</groupId><artifactId>kryo</artifactId><version>4.0.2

关于 Undertow 和 RxNetty 的一次错误排查

undertow 是一个快速高性能的容器。但在 SpringBoot 中集成 undertow 作为内置容器后,测试我司 RPC 框架序列化扩展的时候却发生了错误。客户端报的异常,仅仅是判断出报了一个 400BadRequest,没有其他任何有效信息。首先需要确定是客户端出现的问题还是服务端出现的问题,先从客户端角度入手,比较单测调用和 postMan 调用,结果单测是有问题的,而 postMan 是好的,那么问题肯定出现

深入剖析 Springboot 内置容器 Undertow 初始化流程

深入剖析 Springboot 内置容器 Undertow 初始化流程
由于种种原因,需要在 SpringBoot 内置容器为 undertow 的环境下对 servlet 初始化做一些扩展工作。我们都知道 springMVC 中的 DispatcherServlet,而它是继承于 FrameworkServlet 这个类的。在 FrameworkServlet 这个类中,通过 initServletBean 这个方法去初始化一些 servlet 所需要的 bean。观察一眼代码:protectedfin