严重: Servlet.service() for servlet [spring] in context with path [/] threw exception org.springframework.data.redis.serializer.SerializationException: Cannot serialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializer; nested exception is java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type [com.mogoroom.service.vo.criteria.QueryBSPromotionListVO] at org.springframework.data.redis.serializer.JdkSerializationRedisSerializer.serialize(JdkSerializationRedisSerializer.java:52) at org.springframework.data.redis.core.AbstractOperations.rawHashValue(AbstractOperations.java:146) at org.springframework.data.redis.core.DefaultHashOperations.putAll(DefaultHashOperations.java:128) at org.springframework.data.redis.core.DefaultBoundHashOperations.putAll(DefaultBoundHashOperations.java:85) at org.springframework.session.data.redis.RedisOperationsSessionRepository$RedisSession.saveDelta(RedisOperationsSessionRepository.java:778) at org.springframework.session.data.redis.RedisOperationsSessionRepository$RedisSession.access$000(RedisOperationsSessionRepository.java:670) at org.springframework.session.data.redis.RedisOperationsSessionRepository.save(RedisOperationsSessionRepository.java:388) at org.springframework.session.data.redis.RedisOperationsSessionRepository.save(RedisOperationsSessionRepository.java:245) at org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryRequestWrapper.commitSession(SessionRepositoryFilter.java:245) at org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryRequestWrapper.access$100(SessionRepositoryFilter.java:217) at org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:170) at org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:80) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializer; nested exception is java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type [com.mogoroom.service.vo.criteria.QueryBSPromotionListVO] at org.springframework.core.serializer.support.SerializingConverter.convert(SerializingConverter.java:67) at org.springframework.core.serializer.support.SerializingConverter.convert(SerializingConverter.java:34) at org.springframework.data.redis.serializer.JdkSerializationRedisSerializer.serialize(JdkSerializationRedisSerializer.java:50) ... 29 more Caused by: java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type [com.mogoroom.service.vo.criteria.QueryBSPromotionListVO] at org.springframework.core.serializer.DefaultSerializer.serialize(DefaultSerializer.java:41) at org.springframework.core.serializer.support.SerializingConverter.convert(SerializingConverter.java:62) ... 31 more 问题:spring session 异常信息没有打印到日志中 用是默认jdk序列化。由于实体没有序列话,导致异常,但是没有输入到日志,导致定位到问题。 在代码中 request.getSession().setAttribute()是不会出现异常的 spring session 一次请求返回的时候,才会commit,才会触发spring session提交。 代码如下:onResponseCommitted /** * Allows ensuring that the session is saved if the response is committed. * * @author Rob Winch * @since 1.0 */ private final class SessionRepositoryResponseWrapper extends OnCommittedResponseWrapper { private final SessionRepositoryRequestWrapper request; /** * Create a new {@link SessionRepositoryResponseWrapper}. * @param request the request to be wrapped * @param response the response to be wrapped */ SessionRepositoryResponseWrapper(SessionRepositoryRequestWrapper request, HttpServletResponse response) { super(response); if (request == null) { throw new IllegalArgumentException("request cannot be null"); } this.request = request; } @Override protected void onResponseCommitted() { this.request.commitSession(); } } OnCommittedResponseWrapper abstract class OnCommittedResponseWrapper extends HttpServletResponseWrapper { /** * Calls <code>onResponseCommmitted()</code> with the current contents as long as * {@link #disableOnResponseCommitted()} was not invoked. */ private void doOnResponseCommitted() { if (!this.disableOnCommitted) { onResponseCommitted(); disableOnResponseCommitted(); } } } doOnResponseCommitted相关依赖出发方法
解决方法:
filter抓下日志
chain.doFilter(wrappedRequest, response);
}catch (Exception ex){
logger.error("xxf",ex);
}
相关推荐
Feign默认使用Jackson作为JSON序列化库,也可以自定义编码器和解码器,如使用Gson或Fastjson。 四、Feign与Ribbon和Hystrix的集成 4.1 Ribbon集成 Feign默认集成了Ribbon,提供了负载均衡功能。通过Ribbon,Feign...
在应用层面,需要了解连接复用、序列化/反序列化、RPC以及负载均衡等技术。 Spring Cloud与Dubbo的区别在于,Spring Cloud使用Spring Boot作为基础框架,并集成了多种分布式系统处理方案,如服务注册与发现(Eureka...
7. 使用Jackson库进行JSON序列化与反序列化:在需要的地方引入Jackson库,通过 ObjectMapper 进行对象与JSON字符串的转换。 8. 处理文件上传:如果需要支持文件上传,可以使用Commons FileUpload库,结合Spring MVC...
这涉及到MessageConverter的实现,如SimpleMessageConverter或Jackson2JsonMessageConverter,它们负责对象与JMS消息之间的序列化和反序列化。 2. 事务管理:Spring JMS如何利用JMS的事务特性来保证消息的一致性。...
- **序列化与反序列化**:可以根据需求选择合适的序列化方式,如JSON或Java原生序列化。 6. **性能优化** - **Redis事务**:利用Redis的事务特性,批量操作Session数据,提高效率。 - **连接池**:配置Redis连接...
1. **基于文件的session复制**:将session信息序列化到文件,然后在集群中同步。 2. **基于内存的session复制**:使用TCP或JGroups等协议,在节点之间直接交换session数据。 3. **使用应用级解决方案**:如Spring ...
6. **通信机制**:Stub和Skeleton之间的通信通常是基于TCP/IP的Socket连接,通过ObjectOutputStream和ObjectInputStream进行对象的序列化和反序列化,以便在网络中传输。 7. **异常处理**:如果在调用过程中发生...
10. **环境适应性**:编码时要考虑部署环境的差异,比如不同操作系统下的路径问题、服务器间的时间同步问题,以及在多服务器环境下Session对象的序列化需求。 这些注意事项是Web开发中常见的实践,遵循它们可以显著...
6. Jackson或Gson:JSON序列化库,用于处理JSON格式的数据交换。 描述中提到的“亲测可用”,意味着这些jar包是经过验证的,可以在实际的S2SH项目中正常运行。在使用这些jar包搭建项目时,通常需要配置相关的XML...
理解网络编程、序列化机制以及JVM的工作原理,能帮助编写出高效且安全的多线程程序。同时,对Tomcat、Nginx等服务器的深入理解也是必不可少的。 2. **设计模式**:设计模式是软件工程中的最佳实践,如工厂模式、...
- **常见错误解决**:例如启动失败、端口冲突等问题的排查与解决方法。 以上内容涵盖了Java笔试面试题中提到的核心技术和重点知识,对于准备Java相关职位的面试者而言非常实用。理解并掌握这些知识点不仅有助于面试...
Java的Spring Boot框架提供了方便的API设计和JSON序列化/反序列化支持。 7. **单元测试与集成测试(Unit Testing & Integration Testing)**:确保用户管理功能的正确性,需要编写测试用例。JUnit是常用的Java单元...
它提供了自动序列化和反序列化、错误处理等功能。DWR的工作原理如下: 1. 在服务器端,DWR生成一组JavaScript代码,这些代码提供了调用Java方法的接口。 2. 客户端通过HTML或JavaScript引入这些自动生成的...
- **IO流**:字节流、字符流、缓冲流、对象序列化、文件操作。 - **反射**:类加载、获取类信息、创建对象、调用方法。 - **设计模式**:单例、工厂、观察者、装饰者、适配器等常见设计模式的应用。 2. **SSH...
8. **JAF(JavaBeans Activation Framework)** 和 **JAFR(JavaBeans Activation Framework for RMI)**:支持对不同类型的MIME数据进行操作和序列化,常用于电子邮件和Web服务。 9. **Web Services**:通过SOAP...